删除kafka topic不仅仅是在Kafka Manager上点击下Delete Topic,或者直接命令kafka-topics --delete --zookeeper 【zookeeper server:port】 --topic 【待删除的topic name】删除这么简单
前提条件
待删除的topic生产者和消费者需要停止,同时确认topic的自动创建被关闭,防止其他疏忽的原因(比如消费者没有停止,导致topic再次自动创建) auto.create.topics.enable = falsekafka服务端配置需要开启 delete.topic.enable=true,否则无法删除,只是标识markerd for deletion删除topic
执行 bin/kafka-topics --delete --zookeeper [ zookeeper server:port ] --topic [ 待删除的topic name ]清理kafka数据目录下对应topic的数据,注意检查每个broker。一般这样就完成topic删除的工作了,若还无法删除需要到zk里去清理下kafka元数据。若无法删除,检查zk
检查zookeeper 里kafka数据信息 # 使用zk客户端zkCli.sh 登陆到zkbin/zkCli.sh -server 【zookeeper server:port】# 检查kafka topic信息,默认以下目录,根据实际目录检查ls /brokers/topics# 删除对应topic信息rmr /brokers/topics/【topic name】如果topic 是被标记为 marked for deletion,则通过命令 ls /admin/delete_topics,找到要删除的topic,然后执行命令:
rmr /admin/delete_topics/【topic name】若忘记关停生产者和消费者,还需要删除topic在zk上面的消费节点记录、配置节点记录,比如:
rmr /consumers/【consumer-group】
rmr /config/topics/【topic name】
检查topic是否删除
bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】若列表没有,恭喜你,topic已被完全删除。