1、问题描述:
Kafka生产集群中有一台机器cdh-003因为物理故障缘由挂掉了,而且系统起不来了,使得线上的spark Streaming实时任务不能正常消费,重启实时任务都不行。查看kafka topic状态,发现broker Leader出现-1的状况,以下图spa
2、问题分析
Kafka Broker Leader 为-1,表示有partition在选举Leader的时候失败了,所以引发了消费该Topic的实时任务都出现了异常,通过排除发现挂掉的cdh-003机器正好是broker id为257。(但为什么192没有被选举为leader呢??).net
3、解决方法:修改kafka元数据,手动指定kakfa Leader。
kafka partition状态信息存在Zookeeper上,个人环境目录是 /kafka/brokers/topics/,具体操做以下:blog
一、查看leader为-1的partition状态
[zk: localhost:2181(CONNECTED) 2] get /kafka/brokers/topics/mds001/partitions/1/stateget
{"controller_epoch":87,"leader":-1,"version":1,"leader_epoch":96,"isr":[257]}kafka
二、强制修改partition leader为192
[zk: localhost:2181(CONNECTED) 3] set /kafka/brokers/topics/mds001/partitions/1/state {"controller_epoch":87,"leader":192,"version":1,"leader_epoch":96,"isr":[192]}it
三、查看修改是否成功
[zk: localhost:2181(CONNECTED) 4] get /kafka/brokers/topics/mds001/partitions/1/statespark
{"controller_epoch":87,"leader":192,"version":1,"leader_epoch":96,"isr":[192]}io
[zk: localhost:2181(CONNECTED) 5]集群
四、重启Kafka服务 (必须重启,我最开始就是没有重启,使得SS消费依然不正常)
五、重启Spark Streaming实时任务,此时消费正常,则完美解决
————————————————
版权声明:本文为CSDN博主「微步229」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。
原文连接:https://blog.csdn.net/lingbo229/article/details/90442171方法