这是我在CSDN上写的第一篇文章,从今天开始准备记录一些自己日常开发中遇到的问题以及技术总结。
由于之前项目中用到了kafka中间件,自己也比较感兴趣,所以准备利用个人时间研究一下这个kafka,废话不多说,先来看看kafka的安装与搭建吧。
1.准备工作
Centos、JDK8、zookeeper,Kafka2.11
由于kafka的运行是需要jdk环境的,所以提前将jdk、zookeeper、kafka的安装包下载到本地,并通过scp上传到远程服务器。
以下是我准备的文件
1.1 JDK配置
修改/etc/profile文件,添加如下配置
export JAVA_HOME=/XXXXX/jdk1.8.0_271
export JRE_HOME= $JAVA_HOME/jre
export PATH= $PATH: $JAVA_HOME/bin
export CLASSPATH=./: // $JAVA_HOME/lib: $JRE_HONE/lib
再执行source /etc/profile
1.2 Zookeeper配置
修改/etc/profile文件,并添加如下内容
export ZOOKEEPER_HOME=/xxxxx/zookeeper-3.4.12
export PARH=$PATH: $ZOOKEEPER_HOME/bin
修改zookeeper的配置文件,进入zookeeper的conf目录下,将zoo_sample.cfg重命名为zoo.cfg
然后进行如下修改:
zookeeper服务器心跳时间,单位是ms
tickTime=2000
允许follower连接并同步到leader的初始化连接时间,以tickTime的倍数来表示
initLimit=10
leader与follower心跳检测最大容忍时间,响应超过syncLimit*tickTime,leader认为follower死掉,从服务器列表中删除follower
syncLimit=5
数据目录
dataDir=/tmp/zookeeper/data
日志目录
dataLogDir=/tmp/zookeeper/log
端口号
clientPort=2181
默认情况下,linux系统是没有dataDir和dataLogDir目录的。所以需要手动创建这两个目录
mkdir -p /tmp/zookeeper/data
mkdir -p /tmp/zookeeper/log
然后在/tmp/zookeeper/data下创建一个myid文件,这个文件里存放的是服务器的编号。比如当前机器编号是0
接下来启动zookeeper(单机模式)
到zookeeper的bin目录下,执行sh zkServer.sh start
然后通过sh zkServer.sh status查看服务状态。
1.3 Kafka配置
修改/etc/profile文件
export KAFKA_HOME=/xxxxx/kafka_2.11-2.1.1
export PATH=$PATH: $KAFKA_HOME/bin
修改broker的配置文件/conf/server.properties
broker的编号
broker.id=0
broker对外提供的服务入口地址
listeners=PLAINTEXT://localhost:9092
存放消息日志文件的地址
log.dirs=/tmp/kafka-logs
Kafka所需的zookeeper地址
zookeeper.connect=localhost:2181
然后我们就可以启动kafka服务端
到kafka目录下,执行以下命令:
bin/kafka-server-start.sh config/server.properties &(通过配置文件方式,后台启动kafka)
执行jps命令,发现zookeeper和kafka都已经启动完成。
2.生产、消费测试
刚才kafka服务端已经搭建并启动完成,接下来来测试一下是否能正常发送、消费消息。
首先我们先创建一个topic主题。
在kafka目录执行如下命令:
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic topic-test --replication-factor 1 --partitions 3
其中topic-test是主题的名字,–replication-factor 1表示主题的副本数是1,即只有一个领导者副本,没有追随者副本,–partitions 3 主题下分区数是3
可以通过如下命令查看topic状态:
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic topic-test
然后我们就可以测试收发消息了,先通过kafka-console-consumer.sh启动一个消费者实例。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-test
因为目前没有任何消息产生,所以处于监听状态,但是没有任何消息消费。
下面我们再开一个shell,用来生产消息
再看一下之前的消费者shell,已经成功消费了两条消息。
查看3个分区的位移情况
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic topic-test --time -1 --broker-list loalhost:9092
以上就是在本机上搭建一个单机模式的kafka的简单教程,后续还会继续搭建一个kafka集群。