一、Kafka Broker工作流程
1.1 Zookeeper存储的Kafka信息
(1)启动Zookeeper客户端
[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh
(2)通过ls命令可以查看kafka相关信息。
[zk: localhost:2181(CONNECTED) 2] ls /kafka
1.2 Kafka Broker总体工作流程
1)模拟Kafka上下线,Zookeeper中数据变化
(1)查看/kafka/brokers/ids路径上的节点。
[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/ids
[0, 1, 2]
(2)查看/kafka/controller路径上的数据。
[zk: localhost:2181(CONNECTED) 15] get /kafka/controller
{"version":1,"brokerid":0,"timestamp":"1637292471777"}
(3)查看/kafka/brokers/topics/first/partitions/0/state路径上的数据。
[zk: localhost:2181(CONNECTED) 16] get /kafka/brokers/topics/first/partitions/0/state
{"controller_epoch":24,"leader":0,"version":1,"leader_epoch":18,"isr":[0,1,2]}
(4)停止hadoop104上的kafka。
[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh
(5)再次查看/kafka/brokers/ids路径上的节点。
[zk: localhost:2181(CONNECTED) 3] ls /kafka/brokers/ids
[0, 1]
(6)再次查看/kafka/controller路径上的数据。
[zk: localhost:2181(CONNECTED) 15] get /kafka/controller
{"version":1,"brokerid":0,"timestamp":"1637292471777"}
(7)再次查看/kafka/brokers/topics/first/partitions/0/state路径上的数据。
[zk: localhost:2181(CONNECTED) 16] get /kafka/brokers/topics/first/partitions/0/state
{"controller_epoch":24,"leader":0,"version":1,"leader_epoch":18,"isr":[0,1]}
(8)启动hadoop104上的kafka。
[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon ./config/server.properties
(9)再次观察(1)、(2)、(3)步骤中的内容。
1.3 Broker重要参数
参数名称 |
描述 |
replica.lag.time.max.ms |
ISR中,如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值,默认30s。 |
auto.leader.rebalance.enable |
默认是true。 自动Leader Partition 平衡。 |
leader.imbalance.per.broker.percentage |
默认是10%。每个broker允许的不平衡的leader的比率。如果每个broker超过了这个值,控制器会触发leader的平衡。 |
leader.imbalance.check.interval.seconds |
默认值300秒。检查leader负载是否平衡的间隔时间。 |
log.segment.bytes |
Kafka中log日志是分成一块块存储的,此配置是指log日志划分 成块的大小,默认值1G。 |
log.index.interval.bytes |
默认4kb,kafka里面每当写入了4kb大小的日志(.log),然后就往index文件里面记录一个索引。 |
log.retention.hours |
Kafka中数据保存的时间,默认7天。 |
log.retention.minutes |
Kafka中数据保存的时间,分钟级别,默认关闭。 |
log.retention.ms |
Kafka中数据保存的时间,毫秒级别,默认关闭。 |
log.retention.check.interval.ms |
检查数据是否保存超时的间隔,默认是5分钟。 |
log.retention.bytes |
默认等于-1,表示无穷大。超过设置的所有日志总大小,删除最早的segment。 |
log.cleanup.policy |
默认是delete,表示所有数据启用删除策略; 如果设置值 |