2015-11-05 108 views
31

我需要删除kafka-0.8.2.2.3中的主题。我用下面的命令删除话题:如何删除apache中的主题kafka

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) 

请让我知道我可以删除这个话题。

+3

阿帕奇卡夫卡从不删除主题标记为如果该主题仍然生产者仍在生产,或者消费者仍在消费,或者消息留在队列中,则删除。尝试强制执行的一种方法是重新启动Kafka。或者如果这不起作用,请进入底层并删除/ var/local/kafka/data下的主题名称目录,然后重新启动Kafka,然后重新发出删除命令。我希望Apache Kafka有一个“骇人听闻的话题”选项,这样开发人员就可以发出命令:“真的,这个时候真正的手提包真的是不可能的了。” –

+1

bin/kafka-topics.sh -delete -zookeeper localhost:2181 -topic

回答

38

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

关注这个循序渐进的过程为topics手动删除

  1. 停止卡夫卡服务器
  2. rm -rf命令
  3. 连接删除的主题目录动物园管理员例如:zookeeper-shell.sh host:port

  4. ls /brokers/topics

  5. 使用从动物园管理员删除主题文件夹rmr /brokers/topics/yourtopic
  6. 重启卡夫卡服务器
  7. 确认它是否被删除或无法使用本命令 kafka-topics.sh --list --zookeeper host:port
+0

ok ......谢谢...我会尝试重新启动kafka集群.. :) –

+0

链接已损坏! – Rubbal

+0

通过期待,我总结了关键概念以使我的答案充分 –

相关问题