Apache Kafka Quickstart – Installation von Kafka 4.2 mit CLI und lokalen Beispielen

Installieren Sie Kafka 4.2 und streamen Sie Events in Minuten.

Inhaltsverzeichnis

Apache Kafka 4.2.0 ist die aktuell unterstützte Release-Serie und stellt die beste Grundlage für einen modernen Quickstart dar, da Kafka 4.x standardmäßig vollständig ohne ZooKeeper auskommt und auf KRaft basiert.

Dieser Leitfaden ist ein praktischer, auf der Kommandozeile basierender Quickstart: Installation von Kafka, Start eines lokalen Brokers, Erlernen der wesentlichen Kafka-CLI-Tools und Abschluss mit zwei End-to-End-Beispielen, die Sie direkt in Ihr Terminal kopieren können.

distributed message processing infographic apache kafka

Was Apache Kafka ist und wofür es verwendet wird

Apache Kafka ist eine Event-Streaming-Plattform. Im praktischen Sinne bedeutet Event-Streaming, dass Ereignisdaten in Echtzeit aus Quellen (Datenbanken, Sensoren, Apps) erfasst, die resultierenden Streams dauerhaft gespeichert und in Echtzeit (oder später) verarbeitet oder weitergeleitet werden.

Kafka vereint drei Kernfunktionen in einer Plattform: Publizieren und Abonnieren von Ereignisströmen, dauerhaftes Speichern von Streams für die benötigte Dauer und Verarbeitung der Streams während ihres Auftretens oder im Nachhinein. Diese Kombination ist der Grund, warum Kafka für Echtzeit-Datenpipelines, Integration, Messaging und Streaming-Analysen verwendet wird.

Für den Kontext, wo Kafka innerhalb einer breiteren Dateninfrastruktur platziert ist, siehe das Data Infrastructure for AI Systems: Object Storage, Databases, Search & AI Data Architecture-Kapitel, das S3-kompatiblen Object Storage, PostgreSQL-Architektur, Elasticsearch-Optimierung und AI-native Datenlagen behandelt.

Wenn Sie auf AWS aufbauen und eine verwaltete Alternative benötigen, behandelt Building Event-Driven Microservices with AWS Kinesis die Implementierung ereignisgesteuerter Microservices mit Kinesis Data Streams.

Für zustandsbehaftetes Stream-Processing mit Kafka siehe Apache Flink on K8s and Kafka: PyFlink, Go, ops, and managed pricing.

Für Dienste, die vor dem Publizieren an Kafka in eine Datenbank schreiben, stellt das transactionale Outbox-Muster sicher, dass Ereignisse niemals zwischen dem Datenbank-Commit und dem Kafka-Producing-Call verloren gehen.

Operativ gesehen ist Kafka ein verteiltes System aus Servern und Clients, die über ein Hochleistungs-TCP-Protokoll kommunizieren: Broker speichern und liefern Daten; Clients (Producer und Consumer) schreiben und lesen Ereignisse, oft im großen Maßstab und mit Fehlertoleranz.

Einige Konzepte, die Sie in der CLI wiederholt sehen werden:

  • Topics organisieren Ereignisse. Ein Topic ist multi-producer und multi-subscriber, und Ereignisse können mehrfach gelesen werden, da die Retention steuert, wann alte Daten verworfen werden.
  • Partitions sharding ein Topic über Broker hinweg für Skalierbarkeit; die Reihenfolge ist pro Partition garantiert.
  • Replikationsfaktor steuert die Fehlertoleranz. Dokumentationsbeispiele empfehlen üblicherweise Replikationsfaktoren von 2 oder 3 in der Produktion (einSingleNode-Dev-Quickstart verwendet typischerweise 1).

Apache Kafka installieren

Der offizielle Quickstart von Kafka verwendet das Binärrelease (Tarball) oder das offizielle Docker-Image. Beide sind für die lokale Entwicklung gültig.

Voraussetzungen, die Sie nicht überspringen sollten

Kafka 4.x erfordert modernes Java: Für den Server und die Tools ist Java 17+ die Basislinie für den lokalen Betrieb, und Kafka 4.0 hat die Java 8-Unterstützung entfernt.

Wenn Sie Kafka speziell installieren, um es zu lernen, streben Sie eine unterstützte JDK-Version wie Java 17 oder 21 an. Die Java-Unterstützungsseite von Kafka listet Java 17, 21 und 25 als vollständig unterstützt auf, während Java 11 nur für einen Teil der Module (Clients und Streams) unterstützt wird.

Installation aus dem offiziellen Binärrelease

Der offizielle Quickstart für Kafka 4.2.0 beginnt mit dem Herunterladen und Entpacken der Binärverteilung:

tar -xzf kafka_2.13-4.2.0.tgz
cd kafka_2.13-4.2.0

Hinweise für fortgeschrittene Leser:

  • Die “2.13” im Dateinamen spiegelt die Scala-Build-Linie wider. Für Kafka 4.x-Binärdateien ist Scala 2.13 die primäre Verteilungslinie, und Kafka 4.0 hat die Scala 2.12-Unterstützung entfernt.
  • Wenn Ihnen die Integrität der Lieferkette wichtig ist, dokumentiert die Downloads-Seite explizit, dass Sie Downloads gemäß den veröffentlichten Verfahren von Apache und KEYS verifizieren können.

Installation mit Docker

Kafka bietet auch offizielle Docker-Images auf Docker Hub an. Der Quickstart zeigt, dass Sie Kafka 4.2.0 wie folgt pullen und starten können:

docker pull apache/kafka:4.2.0
docker run -p 9092:9092 apache/kafka:4.2.0

Es gibt auch eine “native” Image-Linie (basierend auf GraalVM Native Image). Die Kafka-Dokumentation und der Kafka Improvement Proposal für diese Image-Linie beschreiben sie als experimentell und für lokale Entwicklung und Tests, nicht für die Produktion, bestimmt.

Plattformhinweis für Windows-Benutzer

Kafka-Verteilungen enthalten Windows-Skripte (Batch-Dateien). Die Kafka-Docs stellen historisch fest, dass unter Windows bin\windows\ und .bat-Skripte anstelle der Unix-bin/-.sh-Skripte verwendet werden.

Starten Sie Kafka lokal mit KRaft

Wenn Sie sich fragen: “Brauche ich ZooKeeper, um Apache Kafka auszuführen?”, ist die moderne Antwort nein. Kafka 4.0 ist das erste wichtige Release, das darauf ausgelegt ist, vollständig ohne ZooKeeper zu operieren, und läuft standardmäßig im KRaft-Modus, was den operativen Aufwand für lokale und produktive Nutzung reduziert.

Starten Sie einenSingleNode-lokalen Broker aus dem entpackten Tarball

Der Kafka 4.2 Quickstart verwendet drei Befehle:

  1. Generieren Sie eine Cluster-UUID
  2. Formatieren Sie die Log-Verzeichnisse
  3. Starten Sie den Server
# Generate a Cluster UUID
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

# Format Log Directories (standalone local format)
bin/kafka-storage.sh format --standalone -t "$KAFKA_CLUSTER_ID" -c config/server.properties

# Start the Kafka broker
bin/kafka-server-start.sh config/server.properties

Warum der “Format”-Schritt in KRaft wichtig ist: Die KRaft-Operationsdokumentation von Kafka erklärt, dass kafka-storage.sh random-uuid die Cluster-ID generiert und dass jeder Server mit kafka-storage.sh format formatiert werden muss. Eine der genannten Rationale ist, dass automatische Formatierung Fehler verbergen kann, insbesondere rund um das Metadata-Log, daher wird explizite Formatierung bevorzugt.

Was Sie in diesem Quickstart ausführen

Für die lokale Entwicklung kann Kafka in einer vereinfachten “combined” (kombinierten) Setup (Controller und Broker zusammen) laufen. Die KRaft-Dokumentation von Kafka nennt kombinierte Server als einfacher für die Entwicklung, empfiehlt sie aber nicht für kritische Bereitstellungsumgebungen (wo Controller isoliert und unabhängig skalierbar sein sollen).

Für “echte” Cluster sind KRaft-Controller und Broker separate Rollen (process.roles), und Controller werden typischerweise als Quorum von 3 oder 5 Knoten bereitgestellt (Verfügbarkeit hängt davon ab, dass eine Mehrheit lebt).

Kafka-CLI-Essentials und Hauptkommandozeilenparameter

Kafka liefert umfangreiche CLI-Tools unter bin/. Die offiziellen Operations-Doks betonen zwei nützliche Eigenschaften:

  • Die gängigen Tools befinden sich im bin/-Verzeichnis der Distribution.
  • Jedes Tool gibt seine vollständige Kommandozeilennutzung aus, wenn es ohne Argumente ausgeführt wird.

Auch wichtig für Kafka 4.x: AdminClient-Befehle akzeptieren --zookeeper nicht mehr. Die Kompatibilitätsdokumentation von Kafka stellt fest, dass ab Kafka 4.0 --bootstrap-server verwendet werden muss, um mit dem Cluster zu interagieren.

Kafka-Verbindungsflags, die Sie ständig verwenden werden

Die meisten Tools benötigen einen Cluster-Einstiegspunkt:

  • --bootstrap-server host:port
    Verwenden Sie dies für Topic-Operationen, Consumer-Gruppen und die meisten broker-zugewandten Befehle. Es ist der kanonische Ersatz für ZooKeeper-basierte Admin-Workflows in Kafka 4.x.

KRaft führt Endpunkte für Broker vs. Controller für einige Tools ein. Zum Beispiel können kafka-features.sh und Teile der Metadata-Tooling Controller-Endpunkte verwenden, während viele Admin-Operationen Broker-Endpunkte verwenden. Die KRaft-Operationsseite zeigt beide Stile in Beispielen.

Topic-Verwaltung mit kafka-topics.sh

Sie werden kafka-topics.sh für den Kernlebenszyklus verwenden:

  • Erstellen, beschreiben, auflisten von Topics (Quickstart zeigt --create, --describe, --topic).
  • Skalierung und Dauerhaftigkeit über Partitions und Replikationsfaktor spezifizieren. Der Operations-Guide zeigt --partitions und --replication-factor und erklärt, wie sie Skalierbarkeit und Fehlertoleranz beeinflussen.
  • Fügen Sie pro-Topic-Overrides beim Erstellen mit --config key=value hinzu (Topic-Config-Doks zeigen konkrete Beispiele).

Ein guter “produktionsorientierter” Create-Befehl sieht so aus (diese genaue Form wird in den offiziellen Operations-Doks verwendet):

bin/kafka-topics.sh --bootstrap-server localhost:9092 \
  --create --topic my_topic_name \
  --partitions 20 --replication-factor 3 \
  --config x=y

Produzieren und Konsumieren mit Console-Clients

Der Quickstart verwendet den Console-Producer und Consumer, da sie für Validierung und Smoke-Tests schnell sind:

  • kafka-console-producer.sh --topic ... --bootstrap-server ...
  • kafka-console-consumer.sh --topic ... --from-beginning --bootstrap-server ...

Kafka 4.2 enthält auch CLI-Konsistenzverbesserungen. In den Upgrade-Notizen:

  • kafka-console-producer depreciert --max-partition-memory-bytes und empfiehlt stattdessen --batch-size.
  • kafka-console-consumer depreciert --property (Formatter-Eigenschaften) zugunsten von --formatter-property.
  • kafka-console-producer depreciert --property (Message-Reader-Eigenschaften) zugunsten von --reader-property.

Wenn Sie interne Runbooks pflegen, lohnt es sich, diese Notizen jetzt zu aktualisieren, bevor Kafka 5.0 die deprecierten Flags entfernt.

Inspektion von Consumer-Lag mit kafka-consumer-groups.sh

Für reale Systeme ist “Hält mein Consumer mit?” eine tägliche Frage. Der Operations-Guide demonstriert:

  • Gruppen auflisten: --list
  • Gruppe mit Offsets und Lag beschreiben: --describe --group ...
  • Mitglieder und Zuweisungen beschreiben: --members und --verbose
  • Gruppen löschen: --delete
  • Offsets sicher zurücksetzen: --reset-offsets

Beispiel:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

Eine Config-Falle für lokalen Docker und Remote-Clients

Wenn Sie Kafka in Containern oder hinter Load Balancern ausführen, werden Sie irgendwann auf die Notwendigkeit stoßen, Listener korrekt einzustellen. Die Broker-Config-Doks von Kafka erklären advertised.listeners als die Adressen, die Broker an Clients und andere Broker werben, insbesondere wenn die Bind-Adresse nicht die Adresse ist, die Clients verwenden sollten.

Quickstart-Beispiele, die Sie jetzt ausführen können

Die folgenden Beispiele sind absichtlich CLI-basiert, damit Sie ein lokales Kafka-Setup validieren können, bevor Sie Anwendungscode schreiben.

Beispiel: Führen Sie ein Topic durch und streamen Sie Nachrichten End-to-End

Dies ist der kanonische “create, produce, consume”-Flow aus dem Kafka 4.2 Quickstart.

Öffnen Sie Terminal A und erstellen Sie ein Topic:

bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

Beschreiben Sie es nun (optional, aber nützlich, wenn Sie Partitions und Replikationsfaktor lernen):

bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092

Öffnen Sie Terminal B und starten Sie einen Producer:

bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

Tippen Sie ein paar Zeilen ein (jede Zeile wird zu einem Ereignis), lassen Sie den Producer dann laufen:

This is my first event
This is my second event

Öffnen Sie Terminal C und starten Sie einen Consumer vom Anfang an:

bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

Sie sollten die gleichen Zeilen gedruckt sehen.

Warum dies mehr validiert als “es funktioniert”: Der Kafka-Quickstart erklärt, dass Broker Ereignisse dauerhaft speichern und dass Ereignisse mehrfach und von mehreren Consumern gelesen werden können. Diese Dauerhaftigkeit ist der Grund, warum dieses Quickstart-Muster das erste ist, was Sie nach jeder Installation oder Upgrade durchführen sollten.

Beispiel: Führen Sie eine einfache Kafka Connect Pipeline von Datei zu Topic zu Datei durch

Kafka Connect beantwortet die wiederkehrende Frage “Wie bewege ich Daten in und aus Kafka, ohne für alles benutzerdefinierte Producer und Consumer zu schreiben”. Die Kafka Connect-Übersicht beschreibt es als ein Tool für skalierbares, zuverlässiges Streaming zwischen Kafka und anderen Systemen über Connectors.

Der Kafka 4.2 Quickstart enthält eine minimale, lokale Connect-Demo mit den File-Source- und File-Sink-Connectors.

Legen Sie von Ihrem Kafka-Verzeichnis aus zuerst den Worker-Plugin-Pfad fest, um die bereitgestellte File-Connector-JAR einzuschließen:

echo "plugin.path=libs/connect-file-4.2.0.jar" >> config/connect-standalone.properties

Erstellen Sie eine kleine Eingabedatei:

echo -e "foo\nbar" > test.txt

Starten Sie den Connect-Worker im Standalone-Modus mit einer Source- und Sink-Connector-Konfiguration:

bin/connect-standalone.sh \
  config/connect-standalone.properties \
  config/connect-file-source.properties \
  config/connect-file-sink.properties

Was passieren sollte (und warum es nützlich ist):

  • Der Source-Connector liest Zeilen aus test.txt und produziert sie zum Topic connect-test.
  • Der Sink-Connector liest aus connect-test und schreibt in test.sink.txt.

Verifizieren Sie die Sink-Datei:

more test.sink.txt

Sie sollten sehen:

foo
bar

Sie können auch das Topic direkt verifizieren:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

Dieses zweite Beispiel ist ein großartiger Muskelgedächtnis-Aufbauer, da es Ihnen auch beibringt, wo die Connect-Konfiguration sitzt (Worker-Config plus Connector-Configs) und eine minimale “Ingest, Store, Export”-Schleife zeigt.

Fehlerbehebung und nächste Schritte

Die meisten “Kafka Quickstart startet nicht”-Probleme fallen in eine kleine Menge von Ursachen.

Broker startet nicht

Beginnen Sie mit den offiziellen Anforderungen:

  • Der Kafka 4.2 Quickstart erfordert explizit Java 17+. Wenn Sie eine ältere JDK verwenden, beheben Sie dies zuerst.
  • Im KRaft-Modus ist das Formatieren des Speichers ein erforderlicher expliziter Schritt. Wenn Sie kafka-storage.sh format überspringen, werden Sie wahrscheinlich Startfehler oder Metadata-Fehler sehen.

Wenn Sie experimentiert haben und nun einen sauberen Start wünschen, zeigt der Kafka-Quickstart, wie Sie die lokalen Datenverzeichnisse des Demos löschen:

rm -rf /tmp/kafka-logs /tmp/kraft-combined-logs

CLI-Befehle schlagen fehl, obwohl der Broker läuft

Validieren Sie in Kafka 4.x, dass Sie --bootstrap-server (nicht --zookeeper) verwenden. Die Kompatibilitätsdokumentation von Kafka hebt explizit die Entfernung von --zookeeper aus AdminClient-Befehlen ab Kafka 4.0 hervor.

Docker-Netzwerküberraschungen

Wenn Kafka in Docker ist und Ihr Client-Tool außerhalb von Docker (oder auf einer anderen Maschine) ist, können Sie korrekte Listener-Ankündigung benötigen. Die Broker-Config-Doks erklären, dass advertised.listeners verwendet wird, wenn die Adressen, zu denen Clients verbinden sollten, von den Bind-Adressen (listeners) abweichen.

Wohin nach dem Quickstart

Wenn Sie die Beispiele in diesem Beitrag abgeschlossen haben, haben Sie bereits die häufigsten ersten Suchanfragen beantwortet:

  • wofür Kafka verwendet wird (Event-Streaming End-to-End)
  • wie man Kafka lokal installiert (Tarball oder Docker)
  • warum ZooKeeper weg ist und KRaft in 4.x der Standard ist
  • welche CLI-Tools täglich wichtig sind (Topics, Producer, Consumer, Groups)

Von hier aus sind die wertvollsten nächsten Schritte meist:

  • Lesen Sie Kafkas “Introduction” für tiefere mentale Modelle von Topics, Partitions und Replikation.
  • Erkunden Sie den Kafka Streams Quick Start, wenn Sie eine erste Verarbeitungsanwendung wünschen (der Streams Quickstart demonstriert das Ausführen des WordCount-Demos und das Inspektieren der Ergebnisse mit dem Console-Consumer).

Abonnieren

Neue Beiträge zu Systemen, Infrastruktur und KI-Engineering.