1. 程式人生 > >新版kafka徹底刪除topic

新版kafka徹底刪除topic

使用kafka時,經常建立一些測試的topic,之後想把這些topic刪除掉的時候,嘗試了一些網上的方法,總是無法徹底刪除。

總結了一下,應該是跟新版kafka和舊版kafka對zookeeper的依賴程度有關,有些zookeeper刪除操作是不必要的了。kafka中zookeeper的使用參考https://www.jianshu.com/p/a036405f989c。借用一張圖如下:

新版kafka的consumer由kafka自己管理,因此在刪除topic時,只需要處理跟topic相關的節點。

0、前置條件:server.properties 設定 delete.topic.enable=true

1、如果需要被刪除topic 此時正在被程式 produce和consume,則這些生產和消費程式需要停止。

2、使用kafka/bin目錄下的命令列工具預刪除:

./bin/kafka-topics --delete --zookeeper 【zookeeper server:port】 --topic 【topic name】

這一步執行完之後,節點被標記為刪除,並沒有物理刪除。

3、 刪除kafka儲存目錄(server.properties檔案log.dirs配置,預設為"/data/kafka-logs")相關topic的資料目錄。

4、 刪除zookeeper裡的topic資訊:

bin/zkCli.sh -server 【zookeeper server:port】

登入到zk shell,然後找到topic所在的目錄:ls /brokers/topics,找到要刪除的topic,然後執行命令:

rmr /brokers/topics/【topic name】

rmr /admin/delete_topics/【topic name】

5、 重啟zk和kafka​​​​​​​。