Apache Kafka Quickstart - Installeer Kafka 4.2 met CLI en lokale voorbeelden
Installeer Kafka 4.2 en stream gebeurtenissen binnen enkele minuten.
Apache Kafka 4.2.0 is de momenteel ondersteunde versiereeks en vormt de beste basis voor een moderne Quickstart, omdat Kafka 4.x volledig zonder ZooKeeper werkt en standaard op KRaft is gebaseerd.
Deze gids is een praktische, op de commandoregel gebaseerde Quickstart: het installeren van Kafka, het starten van een lokale broker, het leren van de essentiële Kafka CLI-tools en het afsluiten met twee end-to-end voorbeelden die u direct in uw terminal kunt plakken.

Wat Apache Kafka is en waar het voor wordt gebruikt
Apache Kafka is een platform voor event streaming. In praktische termen betekent event streaming het vastleggen van eventdata in realtime vanuit bronnen (databases, sensoren, apps), het duurzaam opslaan van de resulterende streams en het verwerken of routeren daarvan in realtime (of later).
Kafka combineert drie kernmogelijkheden in één platform: publiceren en abonneren op streams van events, het opslaan van streams zo lang als nodig, en het verwerken van streams terwijl ze plaatsvinden of achteraf. Door deze combinatie wordt Kafka gebruikt voor real-time datapijplijnen, integratie, messaging en streaming-analyse.
Voor context over waar Kafka past binnen een bredere data-infrastructuur, zie de Data Infrastructure for AI Systems: Object Storage, Databases, Search & AI Data Architecture-pilaar, die S3-compatible objectopslag, PostgreSQL-architectuur, Elasticsearch-optimalisatie en AI-native data-lagen bespreekt.
Als u bouwt op AWS en een beheerd alternatief nodig heeft, behandelt Building Event-Driven Microservices with AWS Kinesis het implementeren van event-driven microservices met Kinesis Data Streams.
Operationeel gezien is Kafka een gedistribueerd systeem van servers en clients die communiceren via een hoogwaardig TCP-protocol: brokers slaan data op en leveren deze; clients (producenten en consumenten) schrijven en lezen events, vaak op grote schaal en met fouttolerantie.
Enkele concepten die u in de CLI regelmatig zult tegenkomen:
- Topics organiseren events. Een topic is multi-producer en multi-abonnee, en events kunnen meerdere keren worden gelezen omdat retentie controleert wanneer oude data wordt verwijderd.
- Partities sharden een topic over brokers voor schaalbaarheid; ordering (volgorde) is gegarandeerd per partitie.
- Replicatiefactor regelt fouttolerantie. Documentatievoorbeelden adviseren vaak replicatiefactoren van 2 of 3 in productie (een single-node dev Quickstart gebruikt doorgaans 1).
Apache Kafka installeren
De officiële Quickstart van Kafka gebruikt de binaire release (tarball) of het officiële Docker-image. Beide zijn geldig voor lokaal development.
Vereisten die u niet moet overslaan
Kafka 4.x vereist modern Java: voor de server en tools is Java 17+ de basis voor lokaal draaien, en Kafka 4.0 heeft Java 8-ondersteuning verwijderd.
Als u Kafka speciaal installeert om het te leren, streef dan naar een ondersteunde JDK zoals Java 17 of 21. De Java-ondersteuningspagina van Kafka vermeldt Java 17, 21 en 25 als volledig ondersteund, terwijl Java 11 alleen voor een subset van modules (clients en streams) wordt ondersteund.
Installeren vanuit de officiële binaire release
De officiële Quickstart voor Kafka 4.2.0 begint met het downloaden en uitpakken van de binaire distributie:
tar -xzf kafka_2.13-4.2.0.tgz
cd kafka_2.13-4.2.0
Noten voor geavanceerde lezers:
- De “2.13” in de bestandsnaam verwijst naar de Scala-buildlijn. Voor Kafka 4.x-binaries is Scala 2.13 de primaire distributie-lijn, en Kafka 4.0 heeft Scala 2.12-ondersteuning verwijderd.
- Als u zich zorgen maakt over de integriteit van de toeleveringsketen, documenteert de downloads-pagina expliciet dat u downloads kunt verifiëren met de gepubliceerde procedures en KEYS van Apache.
Installeren met Docker
Kafka biedt ook officiële Docker-images op Docker Hub. De Quickstart toont aan dat u Kafka 4.2.0 als volgt kunt ophalen en uitvoeren:
docker pull apache/kafka:4.2.0
docker run -p 9092:9092 apache/kafka:4.2.0
Er bestaat ook een “native” imagelijn (gebaseerd op GraalVM native image). De Kafka-documentatie en het Kafka Improvement Proposal voor deze imagelijn beschrijven het als experimenteel en bedoeld voor lokaal development en testen, niet voor productie.
Platformnotitie voor Windows-gebruikers
Kafka-distributies bevatten Windows-scripts (batchbestanden). De Kafka-docs merken historisch op dat u op Windows bin\windows\ en .bat-scripts gebruikt in plaats van de Unix bin/ .sh-scripts.
Start Kafka lokaal met KRaft
Als u vraagt: “Heb ik ZooKeeper nodig om Apache Kafka te draaien?”, is het moderne antwoord nee. Kafka 4.0 is de eerste grote release die is ontworpen om volledig zonder ZooKeeper te werken, en draait standaard in KRaft-modus, wat de operationele overhead voor lokaal en productiegebruik vermindert.
Start een single-node lokale broker vanuit de uitgepakte tarball
De Kafka 4.2 Quickstart gebruikt drie commando’s:
- Genereer een cluster UUID
- Formatteer de logdirectories
- Start de server
# Genereer een Cluster UUID
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
# Formatteer Log Directories (standalone lokale formatteer)
bin/kafka-storage.sh format --standalone -t "$KAFKA_CLUSTER_ID" -c config/server.properties
# Start de Kafka broker
bin/kafka-server-start.sh config/server.properties
Waarom de “format”-stap belangrijk is in KRaft: De documentatie van Kafka’s KRaft-operaties legt uit dat kafka-storage.sh random-uuid het cluster-ID genereert en dat elke server moet worden geformateerd met kafka-storage.sh format. Een reden hiervoor is dat automatische formatteer fouten kan verbergen, vooral rondom de metadatalog, dus expliciete formatteer wordt aanbevolen.
Wat u in deze Quickstart draait
Voor lokaal development kan Kafka draaien in een vereenvoudigde “gecombineerde” opzet (controllers en brokers samen). De KRaft-documentatie van Kafka noemt gecombineerde servers eenvoudiger voor development, maar niet aanbevolen voor kritieke implementatie-omgevingen (waar u controllers wilt isoleren en onafhankelijk schaalbaar maken).
Voor “echte” clusters zijn KRaft-controllers en brokers aparte rollen (process.roles), en controllers worden typisch geïmplementeerd als een quorum van 3 of 5 nodes (beschikbaarheid hangt af van een meerderheid levend).
Kafka CLI-essentials en belangrijkste commandoregelparameters
Kafka wordt geleverd met veel CLI-tooling onder bin/. De officiële operations-docs benadrukken twee nuttige eigenschappen:
- De gebruikelijke tools bevinden zich in de
bin/-map van de distributie. - Elk tool geeft zijn volledige commandoregel-gebruik weer wanneer het zonder argumenten wordt uitgevoerd.
Ook belangrijk voor Kafka 4.x: AdminClient-commando’s accepteren niet langer --zookeeper. De compatibiliteitsdocumentatie van Kafka merkt op dat, met ingang van Kafka 4.0, u --bootstrap-server moet gebruiken om met het cluster te communiceren.
Kafka-verbindingvlaggen die u voortdurend zult gebruiken
De meeste tools hebben een cluster-ingangspunt nodig:
--bootstrap-server host:port
Gebruik dit voor topic-operaties, consumergroepen en de meeste broker-gerichte commando’s. Het is de canonieke vervanger voor ZooKeeper-gebaseerde administratieve workflows in Kafka 4.x.
KRaft introduceert voor sommige tools broker- versus controller-endpoints. Bijvoorbeeld, kafka-features.sh en delen van de metadatatooling kunnen controller-endpoints gebruiken, terwijl veel administratieve operaties broker-endpoints gebruiken. De KRaft-operatiemap toont beide stijlen in voorbeelden.
Topic-beheer met kafka-topics.sh
U zult kafka-topics.sh gebruiken voor de kernlevenscyclus:
- Topics maken, beschrijven en lichten (Quickstart toont
--create,--describe,--topic). - Schaal en duurzaamheid specificeren via partities en replicatiefactor. De operations-gids toont
--partitionsen--replication-factoren legt uit hoe deze schaalbaarheid en fouttolerantie beïnvloeden. - Voeg per-topic-overrides toe op het moment van maken met
--config key=value(topic-config-docs tonen concrete voorbeelden).
Een goed “productiegericht” create-commando ziet er zo uit (deze exacte vorm wordt gebruikt in de officiële operations-docs):
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic my_topic_name \
--partitions 20 --replication-factor 3 \
--config x=y
Produceren en consumeren met console-clients
De Quickstart gebruikt de console-producer en -consumer omdat ze snel zijn voor validatie en rooktesten:
kafka-console-producer.sh --topic ... --bootstrap-server ...kafka-console-consumer.sh --topic ... --from-beginning --bootstrap-server ...
Kafka 4.2 bevat ook verbeteringen voor CLI-consistentie. In de upgrade-notes:
kafka-console-producermaakt--max-partition-memory-bytesverouderd en raadadviseert--batch-sizein plaats daarvan.kafka-console-consumermaakt--property(formatter-eigenschappen) verouderd ten gunste van--formatter-property.kafka-console-producermaakt--property(message reader-eigenschappen) verouderd ten gunste van--reader-property.
Als u interne runbooks onderhoudt, is het de moeite waard om deze notities nu bij te werken, voordat Kafka 5.0 de verouderde vlaggen verwijdert.
Consumentenachterstand inspecteren met kafka-consumer-groups.sh
Voor echte systemen is “Houdt mijn consument bij” een dagelijkse vraag. De operations-gids demonstreert:
- Groepen lichten:
--list - Een groep beschrijven met offsets en achterstand:
--describe --group ... - Leden en toewijzingen beschrijven:
--membersen--verbose - Groepen verwijderen:
--delete - Offsets veilig resetten:
--reset-offsets
Voorbeeld:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
Één config-valkuil voor lokale Docker en externe clients
Als u Kafka in containers draait of achter load balancers, zult u uiteindelijk de noodzaak ondervinden om listeners correct in te stellen. De broker-configuratie-docs van Kafka verklaren advertised.listeners als de adressen die brokers aan clients en andere brokers adverteren, met name als het bind-adres niet het adres is dat clients moeten gebruiken.
Quickstart-voorbeelden die u nu kunt uitvoeren
De onderstaande voorbeelden zijn opzettelijk CLI-gebaseerd, zodat u een lokale Kafka-opzet kunt valideren voordat u enige applicatiecode schrijft.
Voorbeeld: een topic uitvoeren en messages end-to-end streamen
Dit is de canonieke “create, produce, consume”-flow uit de Kafka 4.2 Quickstart.
Open terminal A en maak een topic:
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
Beschrijf het nu (optioneel, maar nuttig als u partities en replicatiefactor leert):
bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Open terminal B en start een producer:
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
Typ een paar regels (elke regel wordt een event), en laat de producer draaien:
This is my first event
This is my second event
Open terminal C en start een consument vanaf het begin:
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
U zou dezelfde regels moeten zien afdrukken.
Waarom dit meer valideert dan “het werkt”: De Kafka Quickstart legt uit dat brokers events duurzaam opslaan en dat events meerdere keren en door meerdere consumenten kunnen worden gelezen. Die duurzaamheid is de reden waarom dit Quickstart-patroon het eerste is dat u moet doen na elke installatie of upgrade.
Voorbeeld: een simpele Kafka Connect-pijplijn uitvoeren van bestand naar topic naar bestand
Kafka Connect beantwoordt de terugkerende vraag “Hoe verplaats ik data naar en uit Kafka zonder voor alles aangepaste producenten en consumenten te schrijven”. Het Kafka Connect-overzicht beschrijft het als een tool voor schaalbare, betrouwbare streaming tussen Kafka en andere systemen, via connectoren.
De Kafka 4.2 Quickstart bevat een minimale, lokale Connect-demo met behulp van de file-source en file-sink-connectoren.
Vanaf uw Kafka-directory, stel eerst de worker-plugin-path in om de meegeleverde file-connector jar op te nemen:
echo "plugin.path=libs/connect-file-4.2.0.jar" >> config/connect-standalone.properties
Maak een klein invoerbestand:
echo -e "foo\nbar" > test.txt
Start de Connect-worker in standalone-modus met zowel een source- als sink-connector-configuratie:
bin/connect-standalone.sh \
config/connect-standalone.properties \
config/connect-file-source.properties \
config/connect-file-sink.properties
Wat er zou moeten gebeuren (en waarom het nuttig is):
- De source-connector leest regels uit
test.txten produceert ze naar het topicconnect-test. - De sink-connector leest uit
connect-testen schrijft naartest.sink.txt.
Verifieer het sink-bestand:
more test.sink.txt
U zou moeten zien:
foo
bar
U kunt het topic ook direct verifiëren:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning
Dit tweede voorbeeld is een geweldige spiergeheugenbouwer omdat het u ook leert waar Connect-configuratie zit (worker-config plus connector-configs) en een minimale “ingest, store, export”-lus toont.
Probleemoplossing en vervolgstappen
De meeste “Kafka Quickstart start niet” problemen vallen in een klein aantal oorzaken.
Broker start niet
Begin met de officiële vereisten:
- De Kafka 4.2 Quickstart vereist expliciet Java 17+. Als u op een oudere JDK zit, lossen dit eerst op.
- In KRaft-modus is het formatteren van opslag een verplichte, expliciete stap. Als u
kafka-storage.sh formatoverslaat, zult u waarschijnlijk startfouten of metadata-fouten zien.
Als u heeft geëxperimenteerd en nu een schone lei wilt, toont de Kafka Quickstart hoe u de lokale data-directories die in de demo worden gebruikt, kunt verwijderen:
rm -rf /tmp/kafka-logs /tmp/kraft-combined-logs
CLI-commando’s falen ondanks dat de broker draait
Bij Kafka 4.x, valideer dat u --bootstrap-server gebruikt (niet --zookeeper). De compatibiliteitsdocumentatie van Kafka noemt expliciet het verwijderen van --zookeeper van AdminClient-commando’s met ingang van Kafka 4.0.
Docker-netwerkverrassingen
Als Kafka in Docker staat en uw client-tool buiten Docker (of op een andere machine) staat, heeft u mogelijk correcte listener-advertentie nodig. De broker-config-docs verklaren dat advertised.listeners wordt gebruikt wanneer de adressen waar clients mee moeten verbinden verschillen van de bind-adressen (listeners).
Waarheen na de Quickstart
Als u de voorbeelden in dit bericht hebt voltooid, heeft u al de meest voorkomende eerste zoekopdrachten beantwoord:
- waar Kafka voor wordt gebruikt (event streaming end-to-end)
- hoe Kafka lokaal te installeren (tarball of Docker)
- waarom ZooKeeper weg is en KRaft de standaard is in 4.x
- welke CLI-tools dagelijks belangrijk zijn (topics, producer, consumer, groepen)
Vanaf hier zijn de meest waardevolle vervolgstappen meestal:
- Lees de “Introduction” van Kafka voor dieper mentale modellen van topics, partities en replicatie.
- Ontdek de Kafka Streams Quick Start als u een eerste verwerkingsapplicatie wilt (de Streams Quickstart demonstreert het uitvoeren van de WordCount-demo en inspecteren van resultaten met de console-consumer).