kafka完全删除topic
第一步:查看 kafka/config/server.properties 文件
delete.topic.enable=true #这一项必须为true
再查看
#这一项如果为false,就可以直接进行下面的操作
#如果为true,则必须将生产者停了,再进行下面的操作
auto.create.topics.enable = false
第二步:
进入到kafka的安装目录下
#查看topic是否存在
./bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】|grep 【topic名称】
#删除topic
./bin/kafka-topics.sh --delete --zookeeper 【zookeeper server:port】 --topic 【topic name】
#再次查看topic
./bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】|grep 【topic名称】
此时会看到
topic-marked for deletion 的情况
第三步:
进入到zookeeper的安装目录:
$ cd bin/
#启动zzookeeper的客户端
$ ./zkCli.sh
(1) 找到topic所在的目录:ls /brokers/topics
(2) 找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。
(3) 找到topic所在的另一个目录:ls /config/topics
(4) 找到要删除的topic,执行命令:rmr /config/topics/【topic name】
(5) 另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,
如果你删除了此处的topic,那么marked for deletion 标记消失
(6) 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs") 相关topic目录
(7) 在zookeeper的客户端中 get /controller ,得到kafka的leader机器
(8) 重启kakfa即可
ps : 如果不重启kafka 则如果重建一模一样的topic,则不会再在log.dirs配置的目录下创建新的 topic的物理文件以及目录