1. ホーム
  2. java

[解決済み] apache kafkaのトピックを削除する方法 [重複]について

2022-03-07 12:20:56

質問

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というトピックを作成すると、The topic already existsという例外が出力されます。

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)

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

解決方法を教えてください。

0.8.2.xからトピックの削除が可能になりました。トピックの削除を有効にする必要があります(設定 delete.topic.enable をtrueに設定)をすべてのブローカーで最初に実行します。

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

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

  1. 停止 カフカ サーバー
  2. トピックディレクトリを削除し、各 ブローカー (で定義されている)。 logs.dirslog.dir プロパティ)を使って 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. 再起動 カフカ サーバー
  6. このコマンドで削除されたかどうかを確認します。 kafka-topics.sh --list --zookeeper host:port