問題描述:
我之前使用kafka的命令刪除了改topic:
./kafka-topics.sh --delete --zookeeper 【zookeeper server】 --topic 【topic name】
kafka是啟用了自動創建topic功能的(之氣那測試過可以使用),發布消息到該topic上,此時報錯,感覺沒刪除干凈,只是標記為刪除狀態。
拋出異常信息為:
WARN clients.NetworkClient: Error while fetching metadata with correlation id 1 : {my-topic=LEADER_NOT_AVAILABLE}
解決方法:
kafka在zookeeper上存儲結構:
啟動zookeeper的客戶工具,刪除zookeeper根目錄下的brokers目錄下的topic目錄下的所有東西(這樣會把之前建的所有topic都刪除)
1)jps查看zk的進程
30837 QuorumPeerMain
2)查找zk的運行目錄:
ps -ef|grep QuorumPeerMain
3)進入zk的安裝目錄找打bin/zkClient.sh,並運行它:
4)查看/brokers/topics和/admin/delete_topics下面有什么東西
ls /brokers/topics
ls /admin/delete_topics
此時發現刪除的topic在zk的/brokers/topics節點下依然存在。
5)強制刪除該topic節點。
rmr /brokers/topics/my-topic
rmr /admin/delete_topics/my-topic
驗證程序可以正常運行。
同事說造成整個問題的原因,有可能是默認kafka topic的partition不是brokers的倍數的問題,但暫時未驗證。