kafka broker Leader -1引起spark Streaming不能消費的故障解決方法



一、問題描述:
Kafka生產集群中有一台機器cdh-003由於物理故障原因掛掉了,並且系統起不來了,使得線上的spark Streaming實時任務不能正常消費,重啟實時任務都不行。查看kafka topic狀態,發現broker Leader出現-1的情況,如下圖

 

 

二、問題分析
Kafka Broker Leader 為-1,表示有partition在選舉Leader的時候失敗了,因此引起了消費該Topic的實時任務都出現了異常,經過排除發現掛掉的cdh-003機器正好是broker id為257。(但為何192沒有被選舉為leader呢??)

 

三、解決方法:修改kafka元數據,手動指定kakfa Leader。
kafka partition狀態信息存在Zookeeper上,我的環境目錄是 /kafka/brokers/topics/,具體操作如下:

1、查看leader為-1的partition狀態
[zk: localhost:2181(CONNECTED) 2] get /kafka/brokers/topics/mds001/partitions/1/state

{"controller_epoch":87,"leader":-1,"version":1,"leader_epoch":96,"isr":[257]}

2、強制修改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]}

3、查看修改是否成功
[zk: localhost:2181(CONNECTED) 4] get /kafka/brokers/topics/mds001/partitions/1/state

{"controller_epoch":87,"leader":192,"version":1,"leader_epoch":96,"isr":[192]}

[zk: localhost:2181(CONNECTED) 5]

 

4、重啟Kafka服務 (必須重啟,我最開始就是沒有重啟,使得SS消費依然不正常)
5、重啟Spark Streaming實時任務,此時消費正常,則完美解決
————————————————
版權聲明:本文為CSDN博主「微步229」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lingbo229/article/details/90442171


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM