如何在apache kafka中删除主题[重复]
Posted
技术标签:
【中文标题】如何在apache kafka中删除主题[重复]【英文标题】:How to Delete a topic in apache kafka [duplicate] 【发布时间】:2016-02-05 21:32:33 【问题描述】:我需要删除 kafka-0.8.2.2.3 中的一个主题。我已使用以下命令删除主题:
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic DummyTopic
命令执行成功,但是当我运行命令列出主题时,我可以看到主题仍然存在并且显示标记为删除。
bin/kafka-topics.sh --list --zookeeper localhost:2181
DummyTopic - marked for deletion
当我创建主题 DummyTopic 时,它会输出异常,主题已经存在,下面是堆栈跟踪:
Error while executing topic command Topic "DummyTopic" already exists.
kafka.common.TopicExistsException: Topic "DummyTopic" already exists.
at kafka.admin.AdminUtils$.createOrUpdateTopicPartitionAssignmentPathInZK(AdminUtils.scala:248)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:233)
at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:92)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:54)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
请告诉我如何删除此主题。
【问题讨论】:
Apache Kafka 永远不会删除标记为删除的主题,如果该主题的生产者仍在生产它,或者消费者仍在消费它,或者消息留在队列中。尝试强制它的一种方法是重新启动 Kafka。或者,如果这不起作用,请进入底层并删除 /var/local/kafka/data 下的主题名称目录,然后重新启动 Kafka,然后重新发出删除命令。我希望 Apache Kafka 有一个“nuke the bleeping topic”选项,这样开发人员就可以发出命令:“真的,这次真的要对 bleeping 主题进行核对,请不要吝啬”。 bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic从 0.8.2.x 版本开始支持删除主题。您必须首先在所有代理上启用主题删除(将 delete.topic.enable
设置为 true)。
注意:从 1.0.x 开始,功能稳定,delete.topic.enable
默认为true
。
按照此分步流程手动删除主题
-
停止 Kafka 服务器
使用
rm -rf
命令删除每个代理(在logs.dirs
和log.dir
属性中定义)上的主题目录
连接到 Zookeeper 实例:zookeeper-shell.sh host:port
在 Zookeeper 实例中:
-
列出主题使用:
ls /brokers/topics
从 ZooKeeper 中删除主题文件夹,使用:rmr /brokers/topics/yourtopic
退出 Zookeeper 实例 (Ctrl+C)
kafka-topics.sh --list --zookeeper host:port
【讨论】:
链接已损坏! “/brokers/topics”目录在哪里?好像找不到那个文件夹 我不敢相信删除一个话题这么难rmr
命令已弃用。您可以使用deleteall
而不是rmr
我每隔几周就会访问一次这个答案。有时一周多次。以上是关于如何在apache kafka中删除主题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Apache Kafka 删除 Apache ZooKeeper 的依赖
如何从 Kafka JSON 消息中获取 org.apache.kafka.connect.data.Decimal 值 [重复]