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

原文地址:https://www.cnblogs.com/Jaryer/p/13644739.html