https://blog.csdn.net/wudidahuanggua/article/details/127086186
1 安装准备
请确保zookeeper集群的正常启动
可参考:大数据学前准备--zookeeper详解与集群搭建(保姆级教程)
2 下载kafka
上传kafka至node001节点
3 安装
3.1 解压
tar -zxvf kafka_2.12-3.2.3.tgz
3.2 改名
mv /opt/kafka_2.12-3.2.3/ /opt/kafka
3.3 修改配置文件
修改前先备份一份
使用如下配置覆盖原先的配置
vim /opt/kafka/config/server.properties
# 当前机器在集群中的唯一标识,和zookeeper的myid性质一样 broker.id=1 # 套接字服务器监听的地址。如果没有配置,主机名将等于的值 listeners=PLAINTEXT://192.168.1.101:9092 # 当前kafka对外提供服务的端口默认是9092 port=9092 # 这个是borker进行网络处理的线程数 num.network.threads=3 # 这个是borker进行I/O处理的线程数 num.io.threads=8 # 发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能 socket.send.buffer.bytes=102400 # kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘 socket.receive.buffer.bytes=102400 # 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小 socket.request.max.bytes=104857600 # 消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个 log.dirs=/opt/kafka/log/kafka-logs # 默认的分区数,一个topic默认1个分区数 num.partitions=1 # 每个数据目录用来日志恢复的线程数目 num.recovery.threads.per.data.dir=1 # 默认消息的最大持久化时间,168小时,7天 log.retention.hours=168 # 这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件 log.segment.bytes=1073741824 # 每隔300000毫秒去检查上面配置的log失效时间 log.retention.check.interval.ms=300000 # 是否启用log压缩,一般不用启用,启用的话可以提高性能 log.cleaner.enable=false # 设置zookeeper的连接端口 zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181 # 设置zookeeper的连接超时时间 zookeeper.connection.timeout.ms=6000
3.4 创建server.properties配置文件中的日志存放目录
mkdir -p /opt/kafka/log
3.5 配置文件producer.properties
vim /opt/kafka/config/producer.properties
末行加入
metadata.broker.list=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
3.6 配置文件consumer.properties
vim /opt/kafka/config/consumer.properties
末行加入
zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
3.7 环境变量配置
vim /etc/profile
末行加入
export KAFKA_HOME=/opt/kafka export PATH=$PATH:$KAFKA_HOME/bin
刷新配置
source /etc/profile
4 分发文件至node002与node003节点
4.1 分发(拷贝)kafka
scp -r /opt/kafka/ node002:/opt/ # 分发至node002节点 scp -r /opt/kafka/ node003:/opt/ # 分发至node003节点
4.2 配置环境变量
同node1的配置,对node2和node3进行环境变量配置
5 修改node2和node3配置文件
修改node002与node003的server.properties配置文件
将node002中server.properties的broker.id修改为2
将node003中server.properties的broker.id修改为3
将node002中server.properties的listeners修改为192.168.1.102:9092
将node003中server.properties的listeners修改为192.168.1.103:9092
6 启动
6.1 先启动zookeeper集群
三台节点都输入:zkServer.sh start
再通过zkServer.sh status查看启动情况
6.2 启动Kafka
三台节点执行
kafka-server-start.sh /opt/kafka/config/server.properties
7 Kafka在zookeeper中存储结构图
7.1 topic注册信息
/brokers/topics/[topicName] : 存储某个topic的partitions所有分配信息
我们输入zkCli.sh进入zookeeper客户端
使用:get /brokers/topics/topic-test
7.2 partition状态信息
/brokers/topics/[topicName]/partitions/[0...N] 其中[0..N]表示partition索引号 /brokers/topics/[topicName]/partitions/[partitionId]/state
"controller_epoch": 表示kafka集群中的中央控制器选举次数, "leader": 表示该partition选举leader的brokerId, "version": 版本编号默认为1, "leader_epoch": 该partition leader选举次数, "isr": [同步副本组brokerId列表]
7.3 Broker注册信息
/brokers/ids/[0...N] 每个broker的配置文件中都需要指定一个数字类型的id(全局不可重复),此节点为临时znode(EPHEMERAL)
"jmx_port": jmx端口号, "timestamp": kafka broker初始启动时的时间戳, "host": 主机名或ip地址, "version": 版本编号默认为1, "port": kafka broker的服务端端口号,由server.properties中参数port确定
7.4 Controller epoch
/controller_epoch --> int (epoch) 此值为一个数字,kafka集群中第一个broker第一次启动时为1,以后只要集群中center controller中央控制器所在broker变更或挂掉,就会重新选举新的center controller,每次center controller变更controller_epoch值就会 + 1;
7.5 Controller注册信息
/controller -> int (broker id of the controller) 存储center controller中央控制器所在kafka broker的信息
"version": 版本编号默认为1, "brokerid": kafka集群中broker唯一编号, "timestamp": kafka broker中央控制器变更时的时间戳
标签:opt,zookeeper,broker,192.168,kafka,集群,properties,搭建 From: https://www.cnblogs.com/jthr/p/17503029.html