web-dev-qa-db-ja.com

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)

このトピックを削除する方法を教えてください。

59
Rishi Arora

トピックの削除は、0.8.2.xバージョンからサポートされています。最初に、すべてのブローカーでトピックの削除を有効にする(delete.topic.enableをtrueに設定する)必要があります。

注:機能が安定している1.0.x以降、delete.topic.enableはデフォルトでtrueです。

トピックを手動で削除するには、この手順に従ってください。

  1. 停止Kafkaサーバー
  2. rm -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を使用して、削除されたかどうかを確認します
76
Ravindra babu