Listen Sie alle Kafka-Themen auf


78

Ich benutze Kafka 0.10 ohne Zookeeper . Ich möchte eine Liste mit Kafka-Themen erhalten. Dieser Befehl funktioniert nicht, da wir zookeeper nicht verwenden : bin/kafka-topics.sh --list --zookeeper localhost:2181. Wie kann ich ohne Zookeeper die gleiche Ausgabe erhalten?


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

Antworten:


135

Kafka verwendet ZooKeeper, daher müssen Sie zuerst einen ZooKeeper-Server starten, falls Sie noch keinen haben.

Wenn Sie keinen separaten Zookeeper-Server installieren und haben möchten, können Sie das mit kafka gelieferte Convenience-Skript verwenden, um eine schnelle und fehlerhafte ZooKeeper-Instanz mit einem Knoten zu erhalten.

Starten der Zookeeper-Instanz mit einem Knoten:

bin/zookeeper-server-start.sh config/zookeeper.properties

Starten des Kafka-Servers:

bin/kafka-server-start.sh config/server.properties

Auflistung der in Kafka verfügbaren Themen:

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

2
Ich brauche eine Lösung ohne Tierpfleger. Gibt es einen anderen Befehl als diesen, um alle Themen ohne Zookeeper aufzulisten?
SSR

5
Ich denke nicht, dass es möglich ist, Kafka auch ohne Zookeeper zu verwenden, da der Status von Kafka im Zookeeper gespeichert ist. Wie haben Sie das erreicht?
Daniccan

Wenn Sie nach einem Befehl suchen, um dies zu tun, dann stackoverflow.com/questions/40034074/…
Peru

Wenn Ihr Zookeeper-Server ein benannter Host ist, müssen Sie den Hostnamen anstelle von localhostz ./kafka-topics.sh --list --zookeeper zookeeper:2181. Abhängig von Ihrer Konfiguration müssen Sie möglicherweise die IP-Adresse verwenden, z. B../kafka-topics.sh --list --zookeeper 10.10.10.180:2181
Chris Halcrow,


28

Kafka 2.2 und höher

Neuere Versionen von Kafka benötigen keine ZooKeeper-Verbindungszeichenfolge mehr, um Themen aufzulisten, sondern können direkt über die Kafka-Broker aufgerufen werden. kafka-topics.shwird bin/beim Herunterladen von Kafka im Ordner bereitgestellt . Gehen Sie wie folgt vor, um Themen aufzulisten:

bin/kafka-topics.sh --list --bootstrap-server <BROKER-LIST>

1
Unter der Annahme, dass das OP "ohne die Option zookeeper cli" bedeutet - was wahrscheinlich ist, da kafka ohne zookeeper nicht funktioniert - sollte diese Antwort die akzeptierte Antwort für Kafka 2.2+ sein. Die CLI-Dokumente zeigen nun an, dass --zookeeper zugunsten von --bootstrap-server veraltet ist.
Luke W

Dies ist eigentlich der beste Weg, wenn Sie in AWS mit ihrem MSK arbeiten. Andernfalls müssen Sie Ihren ZooKeeper-Dienst öffnen. Dies kann bei falscher Ausführung ein potenzielles Sicherheitsproblem darstellen.
Michael Robinson

@MichaelRobinson hat gewährt, dass Sie MSK mit v2.2.1 und nicht mit v1.1.1 verwenden.
Paul

Ja, mein Kommentar wurde in diesem Beitrag lokalisiert.
Michael Robinson

19

Um dieses Thema zu sehen, wenn wir den Befehl list topic ausführen:

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

So überprüfen Sie, ob die Daten in Kafka landen:

$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic twitterstream --from-beginning


19

Für dockerisierte Kafka / Tierpfleger

docker ps

Finden Sie Ihre Zookeeper Container ID

docker exec -it <id> bash

cd bin

./zkCli.sh

ls /brokers/topics

5

Befehle:

  1. So starten Sie die Kafka:

    $ nohup ~ / kafka / bin / kafka-server-start.sh ~ / kafka / config / server.properties> ~ / kafka / kafka.log 2> & 1 &

  2. Um alle Themen auf kafka aufzulisten;

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

  3. Um die Daten zu überprüfen, landen Sie auf dem Kafka-Thema und drucken sie aus.

    $ bin / kafka-console-consumer.sh --bootstrap-server localhost: 9092 --topic your_topic_name --from-begin


4

Für Kafka ist ein Tierpfleger erforderlich, und die Liste der Themen wird dort gespeichert. Daher muss das Tool für Kafka-Themen auch eine Verbindung zum Tierpfleger herstellen. kafka-clients apis in den neueren versionen sprechen nicht mehr direkt mit zookeeper , vielleicht haben sie deshalb den eindruck, dass ein setup ohne zookeeper möglich ist. Dies ist nicht der Fall, da sich Kafka intern darauf verlässt. Referenz siehe: http://kafka.apache.org/documentation.html#quickstart Schritt 2:

Kafka verwendet ZooKeeper, daher müssen Sie zuerst einen ZooKeeper-Server starten, falls Sie noch keinen haben


3

Die Kafka-Clients benötigen keinen Zookeeper mehr, die Kafka-Server benötigen ihn jedoch für den Betrieb.

Mit der neuen AdminClient-API können Sie eine Liste mit Themen abrufen. Der mit Kafka gelieferte Shell-Befehl wurde jedoch noch nicht neu geschrieben, um diese neue API zu verwenden.

Die andere Möglichkeit, Kafka ohne Zookeeper zu verwenden, besteht darin, einen SaaS-Kafka-as-a-Service-Anbieter wie Confluent Cloud zu verwenden, damit Sie die Kafka-Broker (und das erforderliche Backend-Zookeeper-Ensemble) nicht sehen oder betreiben.

In Confluent Cloud würden Sie beispielsweise nur den folgenden zookeeper-freien CLI-Befehl verwenden:

ccloud topic list


1

Zookeeper ist erforderlich, um Kafka auszuführen. Tierpfleger ist ein Muss. Wenn Sie jedoch eine Themenliste ohne Zookeeper anzeigen möchten, benötigen Sie ein Kafka-Überwachungstool wie das Kafka-Überwachungstool, den Kafka-Manager usw.


1

Um Nachrichten zu lesen, sollten Sie Folgendes verwenden:

kafka-console-consumer.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --topic messages --from-beginning

--bootstrap-serverist erforderlich Attribut. Sie können nur einen einzelnen kafka1:9020Knoten verwenden.


1

Sie müssen zuerst den Zookeeper-Server starten. Also gehe zuerst zu kafka / bin / windows und renne

zookeeper-server-start.bat ../../config/zookeeper.properties

Starten Sie dann im selben Ordner mit einem neuen Cmd-Fenster die Kafka-Server, indem Sie ausgeführt werden

kafka-server-start.bat ../../config/server.properties

Hinweis: Wenn Sie es zum ersten Mal starten, müssen bestimmte Änderungen an diesen Dateien vorgenommen werden

dann laufen in kafka / bin / windows

kafka-topics.bat --zookeeper localhost:2181 --list

um alle vorhandenen Themen aufzulisten.


0

Sie haben eine veraltete Version des Pakets mit Befehlen, die keinen Zookeeper mehr akzeptieren, sondern einen Bootstrap-Server als Verbindung. Confluent stellt dann eine interne Verbindung mit Zookeeper her.

https://www.confluent.io/download/ (5.3 oder höher)


0

Sie können versuchen, die folgenden zwei Befehle zu verwenden und alle Kafka-Themen aufzulisten

  • bin / kafka-topics.sh --describe --zookeeper 192.168.0.142:2181,192.168.9.115:2181,192.168.4.57:2181
  • bin / kafka-topics.sh --zookeeper 192.168.0.142:2181,192.168.9.115:2181,192.168.4.57:218 --list

0

Verwenden der REST-Proxy- API von Confluent :

curl -X GET -H "Accept: application/vnd.kafka.v2+json" localhost:8082/topics 

Wo localhost:8082ist die Kafka-Proxy-Adresse?

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.