我的kafka是CDH安装的默认目录 /opt/cloudera/parcels/KAFKA-4.1.0-1.4.1.0.p0.4

1、停止生产和消费程序。否则topic的offset信息会一直在broker更新。调用kafka delete命令则无法删除该topic。取消自动创建topic,设置 auto.create.topics.enable = false。

2、server.properties 设置 delete.topic.enable=true,否则调用kafka 的delete命令无法真正将topic删除,会显示(marked for deletion)

3、调用kafka命令:

查看topic是否存在
./bin/kafka-topics –list –zookeeper 【zookeeper server:port】|grep 【topic名称】

例:./bin/kafka-topics –list –zookeeper 192.168.1.215:2181|grep __consumer_offsets

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

例:./bin/kafka-topics –delete –zookeeper 192.168.1.215:2181 –topic __consumer_offsets

4、删除kafka存储目录

server.properties文件log.dirs配置(CDH中查找配置log.dirs),默认为 /app/kafka/data 相关topic的数据目录,如果kafka 有多个 broker,需要删除每个broker 的数据盘的topic的所有分区数据。

如果经过上面四步,还是无法正常删除topic,则需要对kafka在zookeeer的存储信息进行删除。

5、进入部署了zk的服务器,使用命令:
/opt/cloudera/parcels/CDH/lib/zookeeper/bin/zkCli.sh(路径)

bin/zkCli.sh -server 【zookeeper server:port】
登录到zk shell

topic所在的目录:ls /brokers/topics

删除topic命令:rmr /brokers/topics/【topic name】
如果topic 是被标记为 marked for deletion查看命令 ls /admin/delete_topics

删除topic命令(标记为marked for deletion):rmr /admin/delete_topics/【topic name】

(可选)删除topic在zk上面的消费节点记录、配置节点记录命令
rmr /consumers/【consumer-group】
rmr /config/topics/【topic name】

6、查看topic
./bin/kafka-topics.sh –list –zookeeper 【zookeeper server:port】

如果还能够查询到删除的topic,重启zk和kafka即可。
————————————————
版权声明:本文为CSDN博主「chenxi5404」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenxi5404/article/details/118512339