新版kafka彻底删除topic

使用kafka时,经常创建一些测试的topic,之后想把这些topic删除掉的时候,尝试了一些网上的方法,总是无法彻底删除。

总结了一下,应该是跟新版kafka和旧版kafka对zookeeper的依赖程度有关,有些zookeeper删除操作是不必要的了。kafka中zookeeper的使用参考https://www.jianshu.com/p/a036405f989c。借用一张图如下:

新版kafka的consumer由kafka自己管理,因此在删除topic时,只需要处理跟topic相关的节点。

0、前置条件:server.properties 设置 delete.topic.enable=true

1、如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费程序需要停止。

2、使用kafka/bin目录下的命令行工具预删除:

./bin/kafka-topics --delete --zookeeper 【zookeeper server:port】 --topic 【topic name】

这一步执行完之后,节点被标记为删除,并没有物理删除。

3、 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/data/kafka-logs")相关topic的数据目录。

4、 删除zookeeper里的topic信息:

bin/zkCli.sh -server 【zookeeper server:port】

登录到zk shell,然后找到topic所在的目录:ls /brokers/topics,找到要删除的topic,然后执行命令:

rmr /brokers/topics/【topic name】

rmr /admin/delete_topics/【topic name】

5、 重启zk和kafka​​​​​​​。

 

你可能感兴趣的:(新版kafka彻底删除topic)