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的服務器,使用命令:
./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: 首先我們查看以下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