kafka有些分区leader为-1的问题

现象

get /kafka/brokers/topics/stock_ticks_test1/partitions/0/state

{"controller_epoch":12,"leader":-1,"version":1,"leader_epoch":5,"isr":[5]}

原因

broker shutdown的时候,partition的leader在此broker上,controller选主没有成功,移除此broker后,对应的partition的leader就被赋值成-1了

解决

重启controller

  • 步骤1:找到controller

进入zk命令行,定位controller在哪个节点

[zk: localhost:2181(CONNECTED) 1] get /kafka/controller
{"version":1,"brokerid":4,"timestamp":"1587371673207"}
cZxid = 0x329f55eb3
ctime = Mon Apr 20 16:34:33 CST 2020
mZxid = 0x329f55eb3
mtime = Mon Apr 20 16:34:33 CST 2020
pZxid = 0x329f55eb3
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x100bf66c3b90445
dataLength = 54
numChildren = 0

  • 步骤2:重启controller所在broker 4

bin/kafka-server-stop.sh

bin/kafka-server-start.sh -daemon ./config/server.properties 

 

  • 步骤3:重新查看分区信息

 get /kafka/brokers/topics/stock_ticks_test1/partitions/0/state
{"controller_epoch":12,"leader":5,"version":1,"leader_epoch":6,"isr":[5]}
cZxid = 0x309da4876
ctime = Mon Nov 25 17:04:20 CST 2019
mZxid = 0x329f54723
mtime = Mon Apr 20 16:32:18 CST 2020
pZxid = 0x309da4876
cversion = 0
dataVersion = 6
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 73
numChildren = 0

已经恢复正常 

 

 

 

 

 

 

 

 

 

Kafka是一个分布式流处理平台,topic是Kafka中消息发布与订阅的基本单位,而分区则是topic的基本组成部分。在Kafka集群中,每个分区都有一个leader和若干个follower副本。当Kafka topic的分区leader不均衡时,可以出现以下情况: 1. 负载不均衡:某些分区leader负载较大,而其他分区却负载较轻。这可能是由于消息生成者在特定分区中产生了大量消息,导致该分区leader成为了热点。 2. 副本没有同步:分区的follower副本与leader之间的同步没有及时完成。这可能是由于网络延迟、节点故障或者硬件故障导致的。 3. 重新分配问题:当Kafka集群发生节点故障或者增加节点时,可能会触发分区的重新分配。如果重新分配不均衡或者配置不正确,就会导致分区leader的不均衡。 针对上述问题,可以采取以下措施来处理: 1. 监控集群:使用Kafka监控工具,实时监控分区leader的状态和负载情况。及时发现负载较大的分区,并考虑调整分区的分配策略,将负载均匀分散到不同的节点上。 2. 调整分区副本:通过增加或者减少分区的follower副本,来增强或者减轻特定分区leader的负载。可以使用工具进行手动分区副本重新分配,或者通过Kafka的自动分区分配策略来改善不均衡的情况。 3. 确保集群的健康:确保集群的网络、硬件和节点状态都处于良好的状态,及时处理故障节点,避免不必要的leader重新选举和副本同步延迟。 综上所述,解决Kafka topic分区leader不均衡的问题需要综合考虑负载均衡、分区副本调整和集群健康等因素。通过监控集群状态、合理配置分区副本和及时处理故障节点,可以有效地解决分区leader不均衡的问题,提高Kafka集群的性能和可靠性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值