如何在apache kafka中删除主题

时间:2015-11-05 06:25:20

标签: java hadoop apache-kafka

我需要删除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 :(得分:76)

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

注意:自1.0.x以来,功能稳定,delete.topic.enable默认为true

按照此步骤手动删除主题

  1. 停止 Kafka 服务器
  2. 使用rm -rf命令
  3. 删除主题目录
  4. 连接到 Zookeeper 实例:zookeeper-shell.sh host:port
  5. Zookeeper 实例中:
    1. 使用以下内容列出主题:ls /brokers/topics
    2. 使用以下内容从 ZooKeeper 中删除主题文件夹:rmr /brokers/topics/yourtopic
    3. 退出Zookeeper实例(Ctrl + C)
  6. 重新启动 Kafka 服务器
  7. 使用此命令确认是否删除了它 kafka-topics.sh --list --zookeeper host:port