如何在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 【参考方案1】:

从 0.8.2.x 版本开始支持删除主题。您必须首先在所有代理上启用主题删除(将 delete.topic.enable 设置为 true)。

注意:从 1.0.x 开始,功能稳定,delete.topic.enable 默认为true

按照此分步流程手动删除主题

    停止 Kafka 服务器 使用rm -rf 命令删除每个代理(在logs.dirslog.dir 属性中定义)上的主题目录 连接到 Zookeeper 实例:zookeeper-shell.sh host:portZookeeper 实例中:
      列出主题使用:ls /brokers/topicsZooKeeper 中删除主题文件夹,使用:rmr /brokers/topics/yourtopic 退出 Zookeeper 实例 (Ctrl+C)
    重启Kafka服务器 使用此命令确认是否删除 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 值 [重复]

如何在 apache kafka 中创建主题?

在 Kafka 0.8.1.1 中删除主题

如何使用Python以编程方式在Apache Kafka中创建主题

如何使用 JAVA API 从 Kafka 获取每个主题的消息数量 [重复]