./bin/kafka-topics.sh
--create
--zookeeper localhost:2181
--replication-factor 1 #副本数量
--partitions 1 #分区数量
--topic test1
./bin/kafka-topics.sh
--list
--zookeeper local:2181
***
查看所有topic 的详细信息
./bin/kafka-topics.sh
--describe
--zookeeper localhost:2181
查看一个topic的详细信息
./bin/kafka-topic.sh
--describe
--topic topicName
--zookeeper localhost:2181
如果只是运行命令删除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已经被删除的干干净净了,如果还不行评论区告诉我,看看还有什么是我没踩过的坑
注意:分区数量相对于原来,只能增加不能减少
./bin/kafka-topics.sh
--alter
--partitions 15
--zookeeper localhost:2181
--topic topicName
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