如何在 apache kafka 中删除主题

2022-08-31 09:53:57

我需要删除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)

请让我知道如何删除此主题。


答案 1

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

注意:自1.0.x以来,功能稳定,默认情况下是。delete.topic.enabletrue

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

  1. 停止 Kafka 服务器
  2. 使用命令删除每个代理上的主题目录(如 和 属性中所定义)logs.dirslog.dirrm -rf
  3. 连接到 Zookeeper 实例:zookeeper-shell.sh host:port
  4. Zookeeper 实例中:
    1. 使用以下方法列出主题:ls /brokers/topics
    2. 使用以下命令从 ZooKeeper 中删除主题文件夹:rmr /brokers/topics/yourtopic
    3. 退出 Zookeeper 实例 (Ctrl+C)
  5. 重新启动 Kafka 服务器
  6. 使用此命令确认它是否已删除kafka-topics.sh --list --zookeeper host:port

答案 2

推荐