Apache Kafka ist eine verteilte Event-Streaming-Plattform, die 2011 bei LinkedIn entstand und seit 2012 Apache-Top-Level-Projekt ist. Kafka speichert Nachrichtenströme in Topics, die in Partitionen zerlegt und über mehrere Broker repliziert werden. Die Kommandozeilen-Werkzeuge liegen im bin/-Verzeichnis der Distribution und heißen auf Unix *.sh, unter Windows *.bat. Seit Kafka 2.8 läuft der Cluster im KRaft-Modus (KIP-500); Kafka 4.0 hat ZooKeeper vollständig entfernt.
Topics verwalten
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic events --partitions 3 --replication-factor 1
kafka-topics.sh --bootstrap-server localhost:9092 --list
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic events
kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic events --partitions 6
kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic events
--replication-factor darf die Anzahl der Broker nicht übersteigen; --describe zeigt Partitionen, Leader und Replikate.
Nachrichten senden und lesen
kafka-console-producer.sh --topic events --bootstrap-server localhost:9092
kafka-console-consumer.sh --topic events --from-beginning --bootstrap-server localhost:9092
Der Producer liest zeilenweise von der Standardeingabe. Mit --property parse.key=true --property key.separator=: lassen sich Schlüssel senden; beim Consumer zeigt --property print.key=true Schlüssel und Werte.
Consumer-Gruppen und Konfiguration
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group mein-group
kafka-configs.sh --bootstrap-server localhost:9092 --alter --entity-type topics --entity-name events --add-config retention.ms=86400000
--describe --group zeigt den Lag (rückständige Nachrichten) jeder Partition. Mit kafka-configs.sh ändert man Laufzeit-Einstellungen wie die Aufbewahrungsdauer. Für Cluster-Spiegelung dient kafka-mirror-maker2.sh, für Stream-Verarbeitung die Bibliothek Kafka Streams.
Kafka ist der Datentransport in vielen Data-Pipelines: Spark Structured Streaming konsumiert Kafka direkt, und Hive lädt die Ströme in den Data Lake. Clients gibt es für viele Sprachen, etwa Python (confluent-kafka) oder Java. Die Skripte lassen sich klassisch per Bash automatisieren, Nachrichten werden häufig als JSON serialisiert.