2015-11-05 21 views
31

Ich muss ein Thema in kafka-0.8.2.2.3 löschen.So löschen Sie ein Thema in Apache kafka

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

Der Befehl wird erfolgreich ausgeführt, aber wenn ich einen Befehl ausführen, um die Themen zu verzeichnen, konnte ich sehen, dass das Thema ist immer noch da, und es zeigt zum Löschen markiert: Ich habe den unten Befehl zum Löschen des Themas verwenden .

bin/kafka-topics.sh --list --zookeeper localhost:2181 
DummyTopic - marked for deletion 

Und wenn ich das Thema erstellen DummyTopic es die Ausnahme gibt, das Thema bereits vorhanden ist, unten ist die Stack-Trace:

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) 

Bitte lassen Sie mich wissen, wie kann ich dieses Thema löschen.

+3

Apache Kafka nie ein Thema für die Verwendung markiert löscht Löschen, wenn bei diesem Thema Produzenten immer noch produzieren, oder Verbraucher immer noch davon konsumieren oder Nachrichten in der Warteschlange hängen bleiben. Eine Möglichkeit zu versuchen, es zu erzwingen, besteht darin, Kafka neu zu starten. Oder wenn das nicht funktioniert, gehen Sie unter die Haube und löschen Sie das Verzeichnis, das Ihr Themenname ist unter/var/local/kafka/data und starten Sie dann Kafka neu und geben Sie den Löschbefehl erneut aus. Ich wünschte, Apache Kafka hätte eine "Nuke the Bleeping Topic" -Option, so dass der Entwickler den Befehl ausgeben kann: "Wirklich, Totes wirklich dieses Mal Nuke das piepende Thema bitte nicht". –

+1

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

Antwort

38

Das Löschen eines Themas wurde seit Version 0.8.2.x unterstützt. Sie müssen das Löschen des Themas (Einstellung delete.topic.enable auf true) zuerst für alle Broker aktivieren.

Folgen Sie diesen Schritt für Schritt für die manuelle Löschen von topics

  1. Stopp Kafka Server
  2. Lösche das Thema Verzeichnis mit rm -rf Befehl
  3. Verbindung zu Zookeeper Beispiel: zookeeper-shell.sh host:port

  4. ls /brokers/topics

  5. das Thema Ordner aus ZooKeeper entfernen rmr /brokers/topics/yourtopic
  6. Restart Kafka Server
  7. Bestätigen Sie mit, wenn es gelöscht wurde oder nicht mit diesem Befehl kafka-topics.sh --list --zookeeper host:port
+0

ok ... danke ... Ich werde versuchen, den Kafka-Cluster neu zu starten .. :) –

+0

Link ist kaputt! – Rubbal

+0

Durch die Erwartung, habe ich Schlüsselkonzepte zusammengefasst, um meine Antwort selbst ausreichend zu machen –