我需要删除 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)
请告诉我如何删除此主题。
最佳答案
从 0.8.2.x 版本开始支持删除主题。您必须首先在所有代理上启用主题删除(将 delete.topic.enable
设置为 true)。
注意:从1.0.x开始,功能稳定,delete.topic.enable
默认为true
。
按照此分步流程手动删除主题
- 停止 Kafka 服务器
- 使用
删除每个 broker 上的主题目录(在
命令logs.dirs
和log.dir
属性中定义) rm -rf - 连接到 Zookeeper 实例:
zookeeper-shell.sh host:port
- 在 Zookeeper 实例中:
- 使用以下命令列出主题:
ls/brokers/topics
- 使用以下命令从 ZooKeeper 中删除主题文件夹:
rmr/brokers/topics/yourtopic
- 退出 Zookeeper 实例 (Ctrl+C)
- 使用以下命令列出主题:
- 重启Kafka服务器
- 使用该命令确认是否被删除
kafka-topics.sh --list --zookeeper host:port
关于java - 如何在 apache kafka 中删除主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537950/