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的服务器,使用命令:

./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的详细信息:

topic信息
可以看到kafkatest这个topic的分区副本数量已经变成了两个分别是1001,1002


参考文献:
kafka如何彻底删除topic及数据:https://blog.csdn.net/belalds/article/details/80575751

发布了40 篇原创文章 · 获赞 23 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章