1. 程式人生 > >kafka全部數據清空與某一topic數據清空

kafka全部數據清空與某一topic數據清空

需要 csdn 情況 http 命令 思考 dev delete 目的

1. Kafka全部數據清空

kafka全部數據清空的步驟為:

  1. 停止每臺機器上的kafka;
  2. 刪除kafka存儲目錄(server.properties文件log.dirs配置,默認為“/tmp/kafka-logs”)全部topic的數據目錄;
  3. 刪除zookeeper上與kafka相關的znode節點;
  4. 重啟kafka、如果刪除topic還在則需要重啟zookeeper;

這裏以192.168.187.201 node1、192.168.187.202 node2、192.168.187.203 node3三臺機器作為kafka的集群。

註意:kafka版本為kafka_2.11-1.1.1

1.1 停止每臺機器上的kafka

以root用戶分別登錄三臺機器,使用命令jps 找出kafka的PID,再使用命令 kill kafka進程。

節點node1

技術分享圖片

節點node2

技術分享圖片

節點node3

技術分享圖片

1.2 刪除kafka存儲目錄

在kafka安裝目錄的config文件夾下server.properties中查看存儲目錄為:

技術分享圖片

刪除該目錄所有數據:

技術分享圖片

技術分享圖片

技術分享圖片

1.3 刪除zookeeper上與kafka相關的znode節點

zookeeper上面保存著kafka的所有topic及其消費信息,故需要刪除與kafka相關的znode節點:

進入zookeeper的shell界面:

技術分享圖片

查看與kafka相關的znode節點:

技術分享圖片

在上面的znode節點中,除了zookeeper作為zk的安全保障措施,其他znode節點都得刪除

技術分享圖片

1.4 重啟kafka

分別在node1、node2、node3上面執行如下命令啟動kafka:

/opt/app/kafka_2.11-1.1.1/bin/kafka-server-start.sh /opt/app/kafka_2.11-1.1.1/config/server.properties > /dev/null 2>&1 &

jps命令查看node1、node2、node3上面的啟動情況:

技術分享圖片

技術分享圖片

技術分享圖片

最後在查看kafka上面是否還有topic存在:

技術分享圖片

可以看到topic及其相關數據已被清空刪除

2. 某一topic數據清空

查看當前所有topic

技術分享圖片

技術分享圖片

比如目前需要刪除test這一topic,目前kafka_2.11-1.1.1以上版本默認delete.topic.enable=true,即是說使用命令

./kafka-topics.sh --zookeeper node1:2181 --delete --topic test

該命令將會在zookeeper中刪除與test這一topic相關的znode節點(包括test詳細信息、生產數據、消費數據的節點),並在kafka的存儲目錄/opt/data/kafka/kafka-logs/下把與test這一topic相關的存儲數據目錄標記為待刪除,稍後會真正刪除這些待刪除的目錄,如下:

技術分享圖片

使用kafka-topics.sh查看test在zookeeper中相關znode節點信息是否已被刪除

技術分享圖片

在/opt/data/kafka/kafka-logs目錄下查看test相關存儲目錄是否被標記刪除

技術分享圖片

在/opt/data/kafka/kafka-logs目錄下查看test相關存儲目錄已被刪除

技術分享圖片

3. 思考

kafka全部數據清空步驟比較繁瑣,借鑒某一topic數據清空的方式,可以通過使用kafka-topics.sh --delete命令逐個刪除所有的topic,達到清空kafka全部topic數據的目的,不足的是topic“__consumer_offsets”無法刪除,不過不礙事。

參考資料:

https://blog.csdn.net/belalds/article/details/80575751

kafka全部數據清空與某一topic數據清空