Thema in Kafka 0.8.1.1 löschen


92

Ich muss das Thema testin Apache Kafka 0.8.1.1 löschen.

Wie in der Dokumentation hier ausgedrückt , habe ich ausgeführt:

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

Dies führt jedoch zu der folgenden Meldung:

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

Wie kann ich dieses Thema löschen?


Schritt für Schritt Verfahren wird erklärt in: stackoverflow.com/questions/33537950/…
Ravindra babu

Antworten:


107

Das Löschen eines Themas funktioniert in 0.8.1.1 nicht immer

Das Löschen sollte in der nächsten Version 0.8.2 funktionieren

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.

Ist es möglich, ein Thema zu löschen?

Jira KAFKA-1397


Danke für die Information. Wissen Sie, wie Sie die gesamten Kafka- und Zookeeper-Zustände wie angegeben löschen können?
EmPak5

@EmPack IIRC, der einfachste Weg, dies zu tun (wenn Sie sich nicht für die Verfügbarkeit interessieren), besteht darin, alle Ihre Broker herunterzufahren, Ihre Protokolle für dieses Thema zu löschen und Ihren ZK-Namespace zu ändern.
Frank

95

Es scheint, dass der Löschbefehl aufgrund eines bekannten Fehlers ( https://issues.apache.org/jira/browse/KAFKA-1397 ) nicht offiziell in Kafka 0.8.1.x dokumentiert wurde .

Trotzdem wurde der Befehl noch im Code ausgeliefert und kann ausgeführt werden als:

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

In der Zwischenzeit wurde der Fehler behoben und der Löschbefehl ist jetzt offiziell in Kafka 0.8.2.0 verfügbar als:

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

Nach dem, was ich gelesen habe, funktioniert es möglicherweise 0.8.1.1, aber möglicherweise nicht ... Das Update befindet sich seit einiger Zeit auch im Trunk. Wenn Sie also die Quellen direkt aus dem Trunk entnommen haben, sollte es funktionieren
Frank

Ich habe gerade 0.8.1.1 ausprobiert. Es wird gemeldet, dass das Löschen erfolgreich war, aber es hat nicht funktioniert. Das Thema ist noch vorhanden, ich kann einen Verbraucher anhängen und es werden alle vorherigen Artikel als ausstehend gemeldet.
Elias Dorneles

Das Löschen von Themen in Kafka 0.8.1.1 funktioniert nicht. Die kürzlich veröffentlichte Version 0.8.2.0 sollte endlich die richtige Löschunterstützung haben. Siehe blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll

Übrigens befindet sich die Eigenschaft für delete.topic.enable = true in der Datei server.properties. Es ist standardmäßig auskommentiert.
Shanemeister

37

Fügen Sie die folgende Zeile in $ {kafka_home} /config/server.properties hinzu

delete.topic.enable=true

Starten Sie den Kafka-Server mit der neuen Konfiguration neu:

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

Löschen Sie die gewünschten Themen:

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

10

Andrea ist richtig. Wir können es über die Kommandozeile tun.

Und wir können es immer noch programmieren, indem wir

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

Eigentlich empfehle ich nicht, das Thema auf Kafka 0.8.1.1 zu löschen. Ich kann dieses Thema mit dieser Methode löschen, aber wenn Sie das Protokoll auf zookeeper überprüfen, wird es durch Löschen durcheinander gebracht.


Sollte es auch zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")) enthalten; und
Sumit

@ Sumit, und was? Ich habe diesen "getTopicConfigPath" nicht verwendet. Eigentlich empfehle ich nicht, das Thema auf Kafka 0.8.1.1 zu löschen. Ich kann dieses Thema mit dieser Methode löschen, aber wenn Sie das Protokoll auf zookeeper überprüfen, wird es durch Löschen durcheinander gebracht.
Liang

Aber so macht es auch kafka (wie Sie es vorgeschlagen haben): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
Sumit

@ Sumit. Ja, ich habe den Code von dort gefunden. Ich bin mir nicht sicher, was das "Chaos" angeht. Denn sobald ich ein Thema auf meinem Unternehmensserver lösche, generiert das Löschen viel Junk-to-Zookeeper-Protokoll. Aber ich kann es nicht in meinem lokalen reproduzieren. Also ich empfehle das nicht ..
Liang

4

Sie können ein bestimmtes Kafka-Thema (Beispiel test:) aus dem zookeeper-Shell-Befehl ( zookeeper-shell.sh) löschen . Verwenden Sie den folgenden Befehl, um das Thema zu löschen

rmr {path of the topic}

Beispiel:

rmr /brokers/topics/test

setze delete.topic.enable = true, lösche dann aus kafka und lösche dann auch aus zookeeper ...
minhas23

4

Schritte zum Löschen eines oder mehrerer Themen in Kafka

Um Themen in Kafka zu löschen, muss die Löschoption auf dem Kafka-Server aktiviert sein.

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

Löschen Sie ein Thema in Kafka und geben Sie den folgenden Befehl ein

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

Mehr als ein Thema aus kafka löschen

(Gut zu Testzwecken, wo ich mehrere Themen erstellt habe und sie für verschiedene Szenarien löschen musste)

  1. Stoppen Sie den Kafka Server und den Zookeeper
  2. Gehen Sie zum Ordner / tmp, in dem die Protokolle gespeichert sind, und löschen Sie den Ordner kafkalogs und zookeeper manuell
  3. Starten Sie den Zookeeper und den Kafka-Server neu und versuchen Sie, Themen aufzulisten.

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

Wenn keine Themen aufgelistet sind, wurden alle Themen erfolgreich gelöscht. Wenn Themen aufgelistet sind, war das Löschen nicht erfolgreich. Versuchen Sie die obigen Schritte erneut oder starten Sie Ihren Computer neu.


Beachten Sie, dass diese Option für die aktuellste Kafka-Version (1.0.0) derzeit nicht in der server.propertiesDatei angezeigt wird. Sie müssen diese Zeile manuell hinzufügen.
David Corral

@DavidCorral Thema Löschen ist standardmäßig in 1.0.0
Tanner

2

Diese Schritte löschen alle Themen und Daten

  • Stoppen Sie den Kafka-Server und den Zookeeper-Server
  • Entfernen Sie die tmp-Datenverzeichnisse beider Dienste. Standardmäßig sind dies C: / tmp / kafka-logs und C: / tmp / zookeeper.
  • Starten Sie dann den Zookeeper-Server und den Kafka-Server


1

Wenn Sie die obigen Antworten hinzufügen, müssen Sie die mit diesem Thema verknüpften Metadaten im zookeeper-Consumer-Offset-Pfad löschen.

bin/zookeeper-shell.sh zookeeperhost:port

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

Andernfalls ist die Verzögerung bei auf zookeeper basierenden Kafka-Überwachungstools negativ.


1

Wie in doc hier erwähnt

Die Option zum Löschen von Themen ist standardmäßig deaktiviert. Um dies zu aktivieren, legen Sie die Serverkonfiguration delete.topic.enable = true fest. Kafka unterstützt derzeit nicht das Reduzieren der Anzahl von Partitionen für ein Thema oder das Ändern des Replikationsfaktors.

Stellen Sie sicher, dass delete.topic.enable = true ist


Ich glaube, dass die Option nur in 8.2
Spuder

1
bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic <topic-name>

0

Wenn Sie Probleme beim Löschen der Themen haben, versuchen Sie, das Thema folgendermaßen zu löschen:

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

Befehl. Um den Löschvorgang zu überprüfen, wechseln Sie in das Verzeichnis kafka logs, in dem sich normalerweise befindet /tmp/kafka-logs/, und löschen Sie die your_topic_nameDatei per rm -rf your_topic_nameBefehl.

Denken Sie daran, den gesamten Prozess über ein Kafka-Management-Tool wie zu überwachen Kafka Tool.

Der oben erwähnte Prozess entfernt die Themen ohne Neustart des Kafka-Servers.


0

Schritt 1: Stellen Sie sicher, dass Sie mit Zookeeper und Kafka verbunden sind

Schritt 2: Um das Kafka-Thema zu löschen, führen Sie Kafka-topic (Mac) oder Kafka-topic.sh aus, wenn Sie (Linux / Mac) verwenden. Fügen Sie den Port und --topic mit dem Namen Ihres Themas hinzu und - löschen Sie es, indem Sie das Thema mit löschen Erfolg.

# 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

Zuerst führen Sie diesen Befehl aus, um Ihr Thema zu löschen:

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

Aktive Themen auflisten, um das Löschen vollständig zu überprüfen:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.