目录
本人测试时相关环境:
机器 | jdk | Kafka |
Linux CentOS7 | 1.8 | kafka_2.11-2.1.0.tgz |
安装
第一步:下载Kafka安装包https://www.apache.org/dyn/closer.cgi?path=/kafka/2.1.0/kafka_2.11-2.1.0.tgz。
第二步:将Kafka放入Linux中并使用指令tar xzvf xxx.tgz解压。
注:本人将Kafka放在/var/local/目录下。
第三步:为了方便管理,我们将解压后的Kafka文件夹重命名。通过移动指令实现重命
名mv /var/local/kafka_2.11-2.1.0/ /var/local/kafka。
注:此步骤并不是必须的,只是为了方便而已。
第四步:为了区分不混淆,创建两个文件夹,来分别存放zookeeper和kafka的数据。
mkdir -p /usr/data/{zookeeper,kafka}
注:如果不是临时的,那么不要将文件放在/tmp目录下,因为每次Linux重新启动后,都会将/tmp目录下的文件清除。
注:kafka依赖于zookeeper,可以使用kafka开发包里面自带有对zookeeper的支持,也可以使用自己安装的
zookeeper(如何安装配置zookeeper可详见《程序员成长笔记(第三部)》相关章节)。
注:如果使用的是自己安装的zookeeper,,那么这里就不需要专门为zookeeper创建数据存储目录了,因为
zookeeper在安装时就指定了其的数据存储位置了。由于本人这里准备使用kafka开发包里面自带的
zookeeper,所以这一步为kafka创建数据存储目录时,也专门为zookeeper创建了一个数据存储目录(如
何安装配置zookeeper可详见《程序员成长笔记(第三部)》相关章节);
注:Kafka自带的zookeeper版本对当前版本的Kafka支持比较好。一般的,Kafka自带的zookeeper就足够使用了。
第五步:配置zookeeper.properties文件。
- 找到zookeeper.properties文件:
注:kafka文件在解压后的文件夹下的config目录下。
- 配置zookeeper.properties文件,将zookeeper数据存储目录改为前面创建的/usr/data/zookeeper:
第六步:进行kafka配置文件server.properties的定义。
根据实际情况修改其配置,本人此步骤中修改的几个地方为:
############################# Server Basics #############################
# broker的id,必须是唯一的;如果是Kafka集群,那么应保证每个broker.id的唯一性
broker.id=0
############################# Socket Server Settings #############################
# Kafka默认的访问端口是9092
#listeners=PLAINTEXT://:9092
# 主动设置Kafka的访问端口(注:光这样配置的话,只能内部通过这个端口访问kafka;如果想要外部也能访问,需要再配置外部访问)
port=9095
# 配置外部访问(注:端口需要设置与port的端口相同,否者外部程序可能无法访问kafka)
advertised.listeners=PLAINTEXT://192.168.0.110:9095
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
############################# Log Basics #############################
# 日志文件存放位置
log.dirs=/usr/data/kafka
num.partitions=1
num.recovery.threads.per.data.dir=1
############################# Internal Topic Settings #############################
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
############################# Log Retention Policy #############################
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
############################# Zookeeper #############################
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
############################# Group Coordinator Settings #############################
group.initial.rebalance.delay.ms=0
启动
第一步:找到kafka目录下相应的.sh文件以及zookeeper配置文件进行(前台)启动kafka内置的zookeeper服务:
/var/local/kafka/bin/zookeeper-server-start.sh /var/local/kafka/config/zookeeper.properties
……
注:此启动方式是独占启动,后台启动如():
后台启动kafka内置的zookeeper:
/var/local/kafka/bin/zookeeper-server-start.sh -daemon /var/local/kafka/config/zookeeper.properties |
或者这样(带日志): |
/var/local/kafka/bin/zookeeper-server-start.sh /var/local/kafka/config/zookeeper.properties > /usr/data/zookeeper.log 2>&1 & |
第二步:重新开一个shell窗口(因为原来那个被zookeeper独占了),(前台)启动kafka服务进程。
/var/local/kafka/bin/kafka-server-start.sh /var/local/kafka/config/server.properties
……
注:此启动方式是独占启动,后台启动如():
后台启动kafka:
/var/local/kafka/bin/kafka-server-start.sh -daemon /var/local/kafka/config/server.properties |
或者这样(带日志): |
/var/local/kafka/bin/kafka-server-start.sh /var/local/kafka/config/server.properties > /usr/data/kafka.log 2>&1 & |
验证一下(重新打开一个shell窗口,使用jps指令查看一下所有java相关的进程):
可知,kafka启动成功!
查看某节点下的信息、创建主题、查看所有的主题
使用kafka内置的zookeeper查看相关节点信息(示例):
如,查看根节点(/)下的所有内容:/var/local/kafka/bin/zookeeper-shell.sh 192.168.0.110 ls /
注:kafka启动后,会向zookeeper中注册信息。如果使用的是自己安装的zookeeper,那么可以用标准的zookeeper指令
查看信息;但如果使用的是kafka内置的zookeeper的话,那么需要使用kafka提供的zookeeper指令(注:kafka提
供的zookeeper指令其实并不好用)。
注:标准的zookeeper指令可详见《程序员成长笔记(第三部)》相关章节。
创建主题(示例):/var/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topicOne
注:创建主题的命令包括了zookeeper的地址端口信息、副本个数设置(本人这里设置的是1)、分区个数设置(本人这里
设置的是1)、主题名称设置(本人这里设置的是topicOne)。
注:如果用户想要使用kafka进行若干操作的话,那么必须先创建主题。
查看所有的主题信息:/var/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
使用测试
说明:kafka内部提供有测试环境,我们可以直接使用指令进行消息生产者与消息消费者使用测试。
(启动)消费者:/var/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9095 --topic topicOne --from-beginning
注:其中--from-beginning的作用是:控制是否接收历时消息(有此指令则表示接收,无则表示不接收)。
(启动)生产者:/var/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9095 --topic topicOne
发送消息测试:
在生产者里随便输入消息:
可看见在消费者里面获取到了消息:
由此可见,Kafka搭建成功!