服务器准备
VMware Workstation Pro 15.5
Centos6.5 64bit
版本选择:Kafka_2.11-0.11.0.0
集群规划
node1 | node2 | node3 |
---|---|---|
kafka | kafka | kafka |
zookeeper | zookeeper | zookeeper |
集群部署
# 解压安装包
tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module
# 在kafka根目录下新建logs文件夹
mkdir logs
# 配置环境变量
vim /etc/profile
# 添加以下内容
export KAFKA_HOME = /opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
# 生效环境文件
source /etc/profile
# 修改配置文件
vim config/server.properties
# 修改以下内容(重点修改*)
# ***broker唯一编号,集群内每台机器都不同***
broker.id=0
# ***开启删除topic的功能***
delete.topic.enable=true
# 处理网络请求的线程数量
num.network.threads=3
# 用来处理磁盘 IO 的现成数量
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
# 接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
# 请求套接字的缓冲区大小
socket.request.max.bytes=104857600
# ***kafka数据存放的路径***(注意:该文件夹不是日志文件夹,日志文件夹logs会在kafka根目录下自动创建)
log.dirs=/opt/module/kafka/data
log.dirs=/opt/module/kafka/logs
# topic 在当前 broker 上的分区个数
num.partitions=1
# 用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
# segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
# ***配置连接 Zookeeper 集群地址***
zookeeper.connect=node1:2181,node2:2181,node3:2181
分发文件
# 向集群上的每台机器发送kafka
scp -r /opt/module/kafka node2:/opt/module
scp -r /opt/module/kafka node3:/opt/module
# 发送后需要在其他机器上配置环境变量,和server.properties文件,修改broker.id为1和2
启动集群
# 需要先启动zookeeper集群
zkSever.sh start
# 分别在每台机器上指定配置文件,启动kafka(-daemon将该进程转移至后台)
bin/kafka-server.sh -daemon config/server.properties
关闭集群
# 关闭时不需要指定配置文件,也需要在每台机器上都执行
bin/kafka-server.sh stop
简单的命令行操作
# 列出所有topic
bin/kafka-topics.sh --zookeeper node1:2181 --list
# 添加topic,并配置分区数为3,副本数为2(如果没有配置topic删除功能,则只是标记删除)
bin/kafka-topics.sh --zookeeper node1:2181 --create --topic first --partitions 3 --replication-factor 2
# 查看topic的详细信息
bin/kafka-topics.sh --zookeeper node1:2181 --describe --topic first
# 删除topic
bin/kafka-topics.sh --zookeeper node1:2181 --delete --topic first
# 生产者producer测试
bin/kafka-console-producer.sh --topic first --broker-list node1:9092
# 消费者consumer测试(offset保存在zookeeper)
bin/kafka-console-consumer.sh --topic first --zookeeper node1:2181
# 消费者consumer测试(offset保存在kafka本地)
bin/kafka-console-consumer.sh --topic first --bootstrap-server node1:9092
# 加上参数--from-beginning表示从头读起
bin/kafka-console-consumer.sh --topic first --bootstrap-server node1:9092 --from-beginning
一些问题
-
使用 kafka-server.sh stop 无法关闭kafka服务
解决方案:修改 kafka-server.sh 文件
# 将以下内容 PIDS=$(ps ax | grep -i 'kafka.Kafka' | grep java | grep -v grep | awk '{print $1}') # 修改为 PIDS=$(jps -lm | grep -i 'kafka.Kafka'| awk '{print $1}')