Kafka-Befehlszeilentools verstehen: CLI-Referenzhandbuch

Entdecken Sie die Leistungsfähigkeit von Apache Kafka mit diesem umfassenden Referenzhandbuch zur Kommandozeilenschnittstelle (CLI). Erlernen Sie essenzielle Kafka-Befehle für die Verwaltung von Topics (`kafka-topics.sh`), das Senden von Nachrichten (`kafka-console-producer.sh`), den Konsum von Daten (`kafka-console-consumer.sh`) und die Inspektion von Consumer-Gruppen (`kafka-consumer-groups.sh`). Dieser Leitfaden detailliert praktische Anwendungsfälle, Argumente und Best Practices für eine effektive Kafka-Administration und Fehlerbehebung.

40 Aufrufe

Kafka-Befehlszeilenwerkzeuge verstehen: CLI-Referenzhandbuch

Apache Kafka ist eine leistungsstarke verteilte Event-Streaming-Plattform, die hochvolumige, fehlertolerante und skalierbare Echtzeit-Datenpipelines ermöglicht. Während Kafka programmatisch über seine APIs verwaltet und mit ihm interagiert werden kann, bieten seine Befehlszeilenschnittstellen (CLI)-Werkzeuge eine direkte und effiziente Möglichkeit, wesentliche Verwaltungsaufgaben auszuführen, Themen zu verwalten, mit Konsumenten zu interagieren und den Cluster-Zustand zu überwachen. Dieses Handbuch bietet eine umfassende Referenz zu den am häufigsten verwendeten Kafka CLI-Werkzeugen und beschreibt deren Zweck, wesentliche Argumente und praktische Anwendungsfälle.

Das Verständnis dieser Werkzeuge ist entscheidend für Kafka-Administratoren, Entwickler und alle, die mit der Verwaltung oder Fehlerbehebung von Kafka-Clustern befasst sind. Sie ermöglichen eine schnelle Inspektion, Manipulation und Diagnose, ohne dass für jede einfache Operation benutzerdefinierte Skripte oder Anwendungen geschrieben werden müssen.

Kern-Kafka-CLI-Werkzeuge

Kafka-Distributionen enthalten typischerweise ein Verzeichnis bin/ mit verschiedenen Skripten und ausführbaren Dateien. Wir werden uns auf die am häufigsten verwendeten für die effektive Verwaltung von Kafka konzentrieren.

1. kafka-topics.sh

Dies ist wohl das am häufigsten verwendete Befehlszeilenwerkzeug. Es ermöglicht Ihnen, Kafka-Themen zu erstellen, aufzulisten, zu beschreiben, zu löschen, zu ändern und zu verwalten. Themenverwaltung ist grundlegend für die Organisation von Datenströmen innerhalb von Kafka.

Gängige Unterbefehle und Argumente:

  • --create: Erstellt ein neues Thema.
  • --list: Listet alle Themen im Cluster auf.
  • --describe: Bietet detaillierte Informationen zu bestimmten Themen.
  • --delete: Löscht ein oder mehrere Themen.
  • --alter: Ändert die Konfiguration eines vorhandenen Themas.
  • --topic <topic_name>: Gibt den Namen des Themas an.
  • --partitions <num_partitions>: Legt die Anzahl der Partitionen für ein Thema fest (verwendet mit --create).
  • --replication-factor <factor>: Legt den Replikationsfaktor für ein Thema fest (verwendet mit --create).
  • --bootstrap-server <host:port>: Gibt den Kafka-Broker an, mit dem eine Verbindung hergestellt werden soll.

Beispiele:

  • Erstellen eines Themas namens my_topic mit 3 Partitionen und einem Replikationsfaktor von 2:
    bash kafka-topics.sh --create --topic my_topic --partitions 3 --replication-factor 2 --bootstrap-server kafka-broker-1:9092,kafka-broker-2:9092

  • Auflisten aller Themen im Cluster:
    bash kafka-topics.sh --list --bootstrap-server kafka-broker-1:9092

  • Beschreiben eines Themas namens my_topic:
    bash kafka-topics.sh --describe --topic my_topic --bootstrap-server kafka-broker-1:9092
    Dies zeigt Details wie Partitionen, Leader, Replikate und ISRs (In-Sync Replicas) an.

  • Löschen eines Themas namens old_topic:
    bash kafka-topics.sh --delete --topic old_topic --bootstrap-server kafka-broker-1:9092
    Hinweis: Das Löschen von Themen muss in den Kafka-Broker-Konfigurationen (delete.topic.enable=true) aktiviert sein.

2. kafka-console-producer.sh

Dieses Werkzeug ermöglicht das Senden von Nachrichten an ein Kafka-Thema von der Standardeingabe. Es ist unverzichtbar zum Testen von Produzenten, zum Einfügen von Beispieldaten oder zum manuellen Veröffentlichen von Nachrichten.

Gängige Argumente:

  • --topic <topic_name>: Gibt das Zielthema an.
  • --bootstrap-server <host:port>: Gibt den Kafka-Broker an, mit dem eine Verbindung hergestellt werden soll.
  • --property <key>=<value>: Ermöglicht das Festlegen von Produzenteneigenschaften (z. B. key.serializer, value.serializer).
  • --producer-property <key>=<value>: Ähnlich wie --property, aber speziell für Konfigurationen auf der Produzentenseite.

Beispiele:

  • Senden von Nachrichten an my_topic:
    bash kafka-console-producer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092
    Nach der Ausführung können Sie Nachrichten zeilenweise eingeben. Drücken Sie Strg+C, um zu beenden.

  • Senden von Nachrichten mit Schlüsseln (JSON-Format):
    bash kafka-console-producer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092 --property parse.key=true --property key.separator=':'
    Jetzt können Sie Schlüssel:Wert-Paare eingeben, und Kafka sendet sie mit dem angegebenen Schlüssel.

3. kafka-console-consumer.sh

Dieses Werkzeug abonniert ein oder mehrere Kafka-Themen und gibt die empfangenen Nachrichten an die Standardausgabe aus. Es ist unerlässlich zum Testen von Konsumenten, zur Inspektion von Daten in Themen und zur Fehlerbehebung von Produzenten-/Konsumenten-Anwendungen.

Gängige Argumente:

  • --topic <topic_name>: Gibt das zu konsumierende Thema (oder die Themen) an.
  • --bootstrap-server <host:port>: Gibt den Kafka-Broker an, mit dem eine Verbindung hergestellt werden soll.
  • --group-id <group_id>: Gibt die Consumer-Group-ID an. Dies ist wichtig für die Verwaltung von Offsets und ermöglicht es mehreren Konsumenten, die Konsumlast zu teilen.
  • --from-beginning: Liest Nachrichten vom Anfang des Protokolls des Themas.
  • --offset <offset>: Beginnt den Konsum ab einem bestimmten Offset.
  • --partition <partition_id>: Konsumiert aus einer bestimmten Partition.
  • --property <key>=<value>: Ermöglicht das Festlegen von Konsumenteneigenschaften (z. B. value.deserializer).

Beispiele:

  • Konsumieren aller Nachrichten von my_topic:
    bash kafka-console-consumer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092

  • Konsumieren von Nachrichten vom Anfang von my_topic für die Konsumentengruppe my_group:
    bash kafka-console-consumer.sh --topic my_topic --group-id my_group --from-beginning --bootstrap-server kafka-broker-1:9092

  • Konsumieren von Nachrichten mit gedruckten Offsets und Schlüsseln:
    bash kafka-console-consumer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092 --property print.key=true --property key.separator="\t" --property print.offset=true --property print.headers=true

4. kafka-consumer-groups.sh

Dieses Werkzeug wird zur Verwaltung und Inspektion von Konsumentengruppen verwendet. Es ist unerlässlich, um den Konsumenten-Lag zu verstehen, Partitionen neu zuzuweisen und Konsumprobleme zu beheben.

Gängige Unterbefehle und Argumente:

  • --list: Listet alle Konsumentengruppen im Cluster auf.
  • --describe: Bietet Details zu bestimmten Konsumentengruppen, einschließlich des Lags.
  • --bootstrap-server <host:port>: Gibt den Kafka-Broker an, mit dem eine Verbindung hergestellt werden soll.
  • --group <group_id>: Gibt die Consumer-Group-ID an.
  • --reset-offsets: Setzt die Offsets für eine Konsumentengruppe zurück.
  • --topic <topic_name>: Gibt das Thema für den Offset-Reset an.
  • --to-earliest: Setzt die Offsets auf die früheste verfügbare Nachricht zurück.
  • --to-latest: Setzt die Offsets auf die neueste verfügbare Nachricht zurück.
  • --execute: Führt den Offset-Reset-Vorgang aus.

Beispiele:

  • Auflisten aller Konsumentengruppen:
    bash kafka-consumer-groups.sh --list --bootstrap-server kafka-broker-1:9092

  • Beschreiben der Konsumentengruppe my_group und Anzeige ihres Lags:
    bash kafka-consumer-groups.sh --describe --group my_group --bootstrap-server kafka-broker-1:9092
    Die Ausgabe zeigt das Thema, die Partition, den aktuellen Offset, den Log-End-Offset und den Lag an.

  • Zurücksetzen der Offsets für my_group auf my_topic auf die früheste verfügbare Nachricht:
    bash kafka-consumer-groups.sh --group my_group --topic my_topic --reset-offsets --to-earliest --execute --bootstrap-server kafka-broker-1:9092
    Verwenden Sie diesen Befehl mit Vorsicht, da er beeinflusst, wo Konsumenten zu lesen beginnen.

5. kafka-log-dirs.sh

Dieses Werkzeug hilft bei der Inspektion der Log-Verzeichnisse auf Kafka-Brokern. Es kann nützlich sein, um die Festplattennutzung zu verstehen und Themen-Daten zu lokalisieren.

Gängige Argumente:

  • --bootstrap-server <host:port>: Gibt den Kafka-Broker an, mit dem eine Verbindung hergestellt werden soll.
  • --topic <topic_name>: Filtert die Ausgabe, um Verzeichnisse für ein bestimmtes Thema anzuzeigen.

Beispiele:

  • Auflisten der Log-Verzeichnisse auf einem Broker:
    bash kafka-log-dirs.sh --bootstrap-server kafka-broker-1:9092

  • Anzeigen der Log-Verzeichnisse für ein bestimmtes Thema:
    bash kafka-log-dirs.sh --bootstrap-server kafka-broker-1:9092 --topic my_topic

6. kafka-preferred-replica-election.sh

Dieses Skript initiiert bevorzugte Replikat-Wahlen für Themen. Ein bevorzugtes Replikat ist der Broker, der als Leader für eine Partition basierend auf seinem Replikationsfaktor ausgewählt wird. Wenn ein Broker ausfällt und ein nicht bevorzugtes Replikat zum Leader wird, kann dieses Werkzeug verwendet werden, um die Führung zurück zum bevorzugten Replikat zu verschieben.

Gängige Argumente:

  • --topic <topic_name>: Gibt das Thema an, für das bevorzugte Replikate gewählt werden sollen.
  • --broker-list <broker_id1,broker_id2,...>: Gibt eine durch Kommas getrennte Liste von Broker-IDs an.
  • --bootstrap-server <host:port>: Gibt den Kafka-Broker an, mit dem eine Verbindung hergestellt werden soll.

Beispiele:

  • Wahl bevorzugter Replikate für my_topic:
    bash kafka-preferred-replica-election.sh --topic my_topic --bootstrap-server kafka-broker-1:9092

  • Wahl bevorzugter Replikate für mehrere Themen:
    bash kafka-preferred-replica-election.sh --topic topic1,topic2 --bootstrap-server kafka-broker-1:9092

Wichtige Überlegungen und Best Practices

  • --bootstrap-server ist entscheidend: Stellen Sie immer sicher, dass Sie das richtige Argument --bootstrap-server angeben, um eine Verbindung zu Ihrem Kafka-Cluster herzustellen. Dies ist normalerweise eine durch Kommas getrennte Liste von host:port für Ihre Broker.
  • Umgebung: Diese Befehle befinden sich normalerweise im Verzeichnis bin/ Ihrer Kafka-Installation. Sie müssen zu diesem Verzeichnis navigieren oder sicherstellen, dass das bin-Verzeichnis von Kafka in der PATH-Umgebungsvariablen Ihres Systems enthalten ist.
  • Berechtigungen: Stellen Sie sicher, dass der Benutzer, der diese Befehle ausführt, über den erforderlichen Netzwerkzugriff verfügt, um die Kafka-Broker zu erreichen.
  • Konfiguration: Viele CLI-Werkzeuge können Kafka-Client-Konfigurationen über die Argumente --property oder --producer-property/--consumer-property akzeptieren. Dies ist nützlich, um Standard-Serialisierer/Deserialisierer zu überschreiben oder andere spezifische Client-Konfigurationen festzulegen.
  • Sicherheit: Für sichere Kafka-Cluster (z. B. mit SSL/TLS- oder SASL-Authentifizierung) müssen Sie zusätzliche sicherheitsbezogene Argumente (wie --command-config, das auf eine Client-Eigenschaften-Datei verweist) an diese Werkzeuge übergeben.
  • Themenlöschung: Denken Sie daran, dass die Themenlöschung eine sensible Operation ist und in der Datei server.properties des Kafka-Brokers explizit mit delete.topic.enable=true aktiviert werden muss.

Fazit

Die Befehlszeilenwerkzeuge von Kafka bieten eine robuste und zugängliche Schnittstelle zur Verwaltung und Interaktion mit Ihrem Kafka-Cluster. Das Beherrschen von Werkzeugen wie kafka-topics.sh, kafka-console-producer.sh, kafka-console-consumer.sh und kafka-consumer-groups.sh ist für effiziente Kafka-Operationen, Fehlerbehebung und Entwicklung unerlässlich. Indem Sie ihre Argumente und Anwendungsfälle verstehen, können Sie Ihren Workflow erheblich rationalisieren und tiefere Einblicke in Ihre Event-Streaming-Infrastruktur gewinnen.

Das regelmäßige Nachschlagen dieser Befehle hilft Ihnen nicht nur bei täglichen Verwaltungsaufgaben, sondern ermöglicht Ihnen auch, Probleme effektiver zu diagnostizieren und zu lösen. Wenn Sie mit Kafka vertrauter werden, können Sie weitere Dienstprogramme im Verzeichnis bin/ für fortgeschrittenere Operationen erkunden.