1. 程式人生 > 實用技巧 >kafka topic常用命令

kafka topic常用命令

kafka topic常用命令

建立topic

./bin/kafka-topics.sh
--create
--zookeeper localhost:2181
--replication-factor 1    #副本數量
--partitions 1    #分割槽數量
--topic test1

檢視所有topic

./bin/kafka-topics.sh
--list
--zookeeper local:2181

檢視topic的詳細資訊

檢視所有topic 的詳細資訊

./bin/kafka-topics.sh
--describe
--zookeeper localhost:2181

檢視一個topic的詳細資訊

./bin/kafka-topic.sh
--describe
--topic topicName
--zookeeper localhost:2181

刪除topic

如果只是執行命令刪除topic,topic的資料並不會被刪除

想要完全刪除topic需要以下步驟:

step1

把正在執行的 produce和consume停止

設定auto.create.topics.enable = false(可選)

server.properties 設定delete.topic.enable=true,如果delete.topic.enable沒有設定為true那麼刪除topic的時候只是被標記為刪除而不會真正的刪除。

step2

執行刪除命令:

./bin/kafka-topics.sh 
--delete 
--zookeeper localhost:2181
--topic topicName

step3

刪除kafka儲存目錄server.properties檔案的log.dir配置,預設為/data/kafka-logs相關topic的資料目錄

注意:如果kafka有多個broker,且每個broker配置了多個數據盤,例如/data/kafka-logs,/data1/kafka-logs .....,且topic有多個分割槽partition和多個副本replication,則需要把所有的broker的所有資料盤進行掃描,刪除該topic的所有資料

經過以上基本就能刪除topic以及topic的資料了

如果還無法正常刪除topic,那麼請繼續

step4

找一臺部署了zk的伺服器,登入zookeeper:

./bin/zkCli.sh -server localhost:2181

登陸到zk shell之後,找到topic所在的目錄:

ls /brokers/topics

找到要刪除的topic,然後執行:

rmr /brokers/topics/topicName

如果topic是被標記為marked for deletion狀態,則是因為你沒有把delete.topic.enable沒有設定為true,執行:

ls /admin/delete_topic

找到要刪除的topic之後執行:

rmr /admin/delete_topic/topicName

備註

網路上很多其它文章還說明,需要刪除topic在zk上面的消費節點記錄、配置節點記錄,比如:

rmr /consumers/【consumer-group】

rmr /config/topics/【topic name】

其實正常情況是不需要進行這兩個操作的,如果需要,那都是由於操作不當導致的。比如step1停止生產和消費程式沒有做或者沒有正確配置。也就是說,正常情況下嚴格按照step1 – step4的步驟,是一定能夠正常刪除topic的。

到這裡你的topic已經被刪除的乾乾淨淨了,如果還不行評論區告訴我,看看還有什麼是我沒踩過的坑

修改topic的分割槽數量

注意:分割槽數量相對於原來,只能增加不能減少

./bin/kafka-topics.sh
--alter
--partitions 15
--zookeeper localhost:2181
--topic topicName

修改topic的副本數量

  • step1:檢視topic資訊

首先我們檢視以下kafkatest這個topic的資訊

可以看出kafkatest這個topic是有1個副本的

  • step2: 建立副本檔案
vim increase-replication-factor.json

新增內容:

{"version":1,
"partitions":[
{"topic":"kafkatest","partition":0,"replicas":[1001,1002]}
]
  • step3:執行命令載入副本檔案
./bin/kafka-reassign-partition.sh
--execute
--reassignment-json-file increase-replication-factor.json
--zookeeper localhost:2181

返回資訊:

再次檢視kafkatest這個topic的詳細資訊:

可以看到kafkatest這個topic的分割槽副本數量已經變成了兩個分別是1001,1002

參考文獻:
kafka如何徹底刪除topic及資料:https://blog.csdn.net/belalds/article/details/80575751