2015-11-05 77 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

通過期待,我總結了關鍵概念以使我的答案充分 –

相關問題