Kafka 0.8.1.1のトピックを削除


92

testApache Kafka 0.8.1.1のトピックを削除する必要があります。

ここドキュメントに記載されているように、私は実行しました:

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

ただし、これにより次のメッセージが表示されます。

Command must include exactly one action: --list, --describe, --create or --alter

このトピックを削除するにはどうすればよいですか?


段階的な手順については、stackoverflow.com
questions / 33537950

回答:


107

トピックの削除が0.8.1.1で機能しない場合がある

削除は次のリリース0.8.2で機能するはずです。

kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

  Topic your_topic_name is marked for deletion.
  Note: This will have no impact if delete.topic.enable is not set to true.

トピックを削除することは可能ですか?

ジラKAFKA-1397


情報をありがとう。示されているようにカフカとズーキーパーの状態全体をクリアする方法を知っていますか?
EmPak5 2014年

@EmPack IIRC、これを行う最も簡単な方法(稼働時間を気にしない場合)は、すべてのブローカーをシャットダウンし、そのトピックのログを削除して、ZK名前空間を変更することです。
2014年

95

既知のバグ(https://issues.apache.org/jira/browse/KAFKA-1397)が原因で、削除コマンドがKafka 0.8.1.xで正式に文書化されていなかったようです。

それにもかかわらず、コマンドはまだコードに含まれており、次のように実行できます。

bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper localhost:2181 --topic test

それまでの間、バグは修正され、削除コマンドは次のようにKafka 0.8.2.0から正式に利用できるようになりました。

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

私が読んだことから、それは0.8.1.1で動作するかもしれませんが、動作しないかもしれません...修正はしばらくの間トランクにもあるので、トランクから直接ソースを取得した場合、それは動作するはずです
率直

0.8.1.1を試したところ、「削除成功」と表示されましたが、機能しませんでした。トピックはまだ残っています。コンシューマをアタッチできます。これにより、以前のすべてのアイテムが保留中として報告されます。
エリアスドルネレス2015年

Kafka 0.8.1.1でトピックを削除しても機能しません。最近リリースされたバージョン0.8.2.0には、最終的に適切な削除のサポートが必要です。blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2を参照してください。
マイケルG.ノール2015

ところで、delete.topic.enable = trueのプロパティは、server.propertiesファイルにあります。デフォルトではコメント化されています。
Shanemeister 2017年

37

以下の行を$ {kafka_home} /config/server.propertiesに追加します

delete.topic.enable=true

新しい設定でkafkaサーバーを再起動します。

${kafka_home}/bin/kafka-server-start.sh ~/kafka/config/server.properties

必要なトピックを削除します。

${kafka_home}/bin/kafka-topics.sh --delete  --zookeeper localhost:2181  --topic daemon12

10

アンドレアは正しいです。コマンドラインを使用して実行できます。

そして、私たちはまだそれをプログラムすることができます

ZkClient zkClient = new ZkClient("localhost:2181", 10000);
zkClient.deleteRecursive(ZkUtils.getTopicPath("test2"));

実際、Kafka 0.8.1.1のトピックを削除することはお勧めしません。私はこの方法でこのトピックを削除できますが、飼育係のログを確認すると、削除が失敗します。


zkClient.deleteRecursive(ZkUtils.getTopicConfigPath( "test2"));も含まれている必要があります。そして
スミット

@Sumit、そして何?その「getTopicConfigPath」は使用しませんでした。実際、Kafka 0.8.1.1のトピックを削除することはお勧めしません。私はこの方法でこのトピックを削除することができますが、飼育係のログを確認すると、削除はそれを台無しにします。

しかし、これはkafkaもそれを行う方法です(あなたが提案した方法):apache.googlesource.com/kafka
Sumit

@Sumit。はい、そこからコードを見つけました。私はその「厄介な」ことについて確信が持てません。会社のサーバーでトピックを削除すると、削除するとzookeeperログに大量のジャンクが生成されるためです。しかし、地元では再現できません。だから私はそれをお勧めしません..
リャン

4

testzookeeperシェルコマンド(zookeeper-shell.sh)から特定のkafkaトピック(例:)を削除できます。以下のコマンドを使用してトピックを削除します

rmr {path of the topic}

例:

rmr /brokers/topics/test

delete.topic.enable = trueを設定してから、kafkaから削除してから、zookeeperからも削除...
minhas23

4

Kafkaで1つ以上のトピックを削除する手順

kafkaでトピックを削除するには、Kafkaサーバーで削除オプションを有効にする必要があります。

1. Go to {kafka_home}/config/server.properties
2. Uncomment delete.topic.enable=true

Kafkaで1つのトピックを削除するには、次のコマンドを入力します

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

kafkaから複数のトピックを削除するには

(テスト目的に適しています。複数のトピックを作成し、さまざまなシナリオでそれらを削除する必要がありました)

  1. KafkaサーバーとZookeeperを停止します。
  2. ログが保存されている/ tmpフォルダーに移動し、kafkalogsおよびzookeeperフォルダーを手動で削除します
  3. zookeeperとkafkaサーバーを再起動し、トピックを一覧表示してみます。

bin / kafka-topics.sh --list --zookeeper localhost:2181

トピックがリストされていない場合、すべてのトピックが正常に削除されています。トピックがリストされている場合、削除は成功していません。上記の手順をもう一度試すか、コンピュータを再起動してください。


現時点での最新のKafkaバージョン(1.0.0)の場合、そのオプションはserver.propertiesファイルに表示されないことに注意してください。その行を手動で追加する必要があります。
David Corral、

@DavidCorralトピックの削除は、1.0.0でデフォルトで有効になっています
Tanner

2

この手順により、すべてのトピックとデータが削除されます

  • Kafka-serverおよびZookeeper-serverを停止します
  • 両方のサービスのtmpデータディレクトリを削除します。デフォルトでは、C:/ tmp / kafka-logsとC:/ tmp / zookeeperです。
  • 次にZookeeper-serverとKafka-serverを起動します

2

コマンド:

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

あいにく、トピックに削除のマークを付けるだけです。

削除は行われません。

スクリプトのテスト中に問題が発生し、Kafkaの構成が準備されます。

接続されたスレッド:


1

上記の回答に追加すると、Zookeeperの消費者オフセットパスでそのトピックに関連付けられているメタデータを削除する必要があります。

bin/zookeeper-shell.sh zookeeperhost:port

rmr /consumers/<sample-consumer-1>/offsets/<deleted-topic>

それ以外の場合、飼育係に基づくカフカ監視ツールでは、ラグはマイナスになります。


1

ここのドキュメント述べたように

トピックの削除オプションはデフォルトで無効になっています。これを有効にするには、サーバー設定delete.topic.enable = trueを設定します。Kafkaは現在、トピックのパーティション数の削減またはレプリケーション係数の変更をサポートしていません。

delete.topic.enable = trueを確認してください


このオプションは8.2でのみ使用できると思います
spuder


0

トピックの削除に問題がある場合は、次の方法でトピックを削除してみてください。

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

コマンド。次に、削除プロセスを確認するために、通常の下にあるkafkaログディレクトリに移動し、コマンドを/tmp/kafka-logs/使用してyour_topic_nameファイルを削除しますrm -rf your_topic_name

のようなカフカ管理ツールを介してプロセス全体を監視することを忘れないでくださいKafka Tool

上記のプロセスは、kafkaサーバーを再起動せずにトピックを削除します。


0

ステップ1:Zookeeperに接続し、Kafkaを実行していることを確認します

ステップ2:Kafkaトピックを削除するには、Kafka-topic(Mac)またはKafka-topic.shを実行します(Linux / Macの場合)。ポートと--topicをトピックの名前で追加し、-deleteでトピックを削除します。成功。

# Delete the kafka topic
# it will delete the kafka topic
kafka-topics --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete
# or
kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete

0

まず、次のコマンドを実行してトピックを削除します。

$ bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic <topic_name>

完全に削除を確認するアクティブなトピックをリストします。

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.