apache-kafka Tutorial
Erste Schritte mit Apache-Kafka
Suche…
Bemerkungen
Kafka ist ein Publish-Subscribe-Messaging-System mit hohem Durchsatz, das als verteilter, partitionierter und replizierter Commit-Protokolldienst implementiert ist.
Genommen von der offiziellen Kafka- Site
Schnell
Ein einzelner Kafka-Broker kann Hunderte von Megabytes an Lese- und Schreibvorgängen pro Sekunde von Tausenden von Clients verarbeiten.
Skalierbar
Kafka ist so konzipiert, dass ein einzelner Cluster als zentrales Datengerüst für eine große Organisation dienen kann. Sie kann ohne Ausfallzeiten elastisch und transparent erweitert werden. Datenströme werden partitioniert und auf einen Cluster von Maschinen verteilt, um Datenströme zu ermöglichen, die größer sind als die Kapazität einer einzelnen Maschine, und Cluster von koordinierten Verbrauchern
Dauerhaft
Nachrichten werden auf der Festplatte gespeichert und innerhalb des Clusters repliziert, um Datenverlust zu vermeiden. Jeder Broker kann Terabytes von Nachrichten ohne Auswirkungen auf die Leistung verarbeiten.
Verteilt nach Design
Kafka verfügt über ein modernes, clusterorientiertes Design, das eine hohe Haltbarkeit und Fehlertoleranz garantiert.
Installation oder Setup
Schritt 1 Installieren Sie Java 7 oder 8
Schritt 2 Laden Sie Apache Kafka herunter: http://kafka.apache.org/downloads.html
Zum Beispiel werden wir versuchen, Apache Kafka 0.10.0.0 herunterzuladen
Schritt 3 Extrahieren Sie die komprimierte Datei.
Unter Linux:
tar -xzf kafka_2.11-0.10.0.0.tgz
Unter Fenster: Rechtsklick -> Hier extrahieren
Schritt 4 Starten Sie Zookeeper
cd kafka_2.11-0.10.0.0
Linux:
bin/zookeeper-server-start.sh config/zookeeper.properties
Windows:
bin/windows/zookeeper-server-start.bat config/zookeeper.properties
Schritt 5 Starten Sie den Kafka-Server
Linux:
bin/kafka-server-start.sh config/server.properties
Windows:
bin/windows/kafka-server-start.bat config/server.properties
Einführung
Apache Kafka ™ ist eine verteilte Streaming-Plattform.
Was bedeutet
Mit 1-It können Sie Streams von Datensätzen veröffentlichen und abonnieren. In dieser Hinsicht ähnelt es einer Nachrichtenwarteschlange oder einem Enterprise-Messagingsystem.
2-It ermöglicht das Speichern von Datensatz-Streams fehlertolerant.
3-It ermöglicht das Verarbeiten von Datensätzen, sobald diese auftreten.
Es wird für zwei breite Anwendungsklassen verwendet:
Echtzeit-Streaming-Datenpipelines, die Daten zuverlässig zwischen Systemen oder Anwendungen abrufen
2 - Erstellen von Echtzeit-Streaming-Anwendungen, die Datenströme transformieren oder darauf reagieren
Kafka-Konsolenskripts unterscheiden sich für Unix-basierte und Windows-Plattformen. In den Beispielen müssen Sie möglicherweise die Erweiterung entsprechend Ihrer Plattform hinzufügen. Linux: Skripte in
bin/mit der Erweiterung.sh. Windows: Skripts inbin\windows\und mit der Erweiterung.bat.
Installation
Schritt 1: Laden Sie den Code herunter und entpacken Sie ihn:
tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
Schritt 2: Starten Sie den Server.
server.propertiesThemen später löschen zu können, öffnen Sieserver.propertiesund setzen Siedelete.topic.enableauf true.
Kafka ist stark auf den Zoowärter angewiesen, daher müssen Sie ihn zuerst starten. Wenn Sie es nicht installiert haben, können Sie das mit kafka gelieferte Komfortskript verwenden, um eine schnelle und schmutzige ZooKeeper-Instanz mit einem Knoten zu erhalten.
zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
Schritt 3: Stellen Sie sicher, dass alles läuft
Sie sollten jetzt einen Zookeeper haben, der localhost:2181 hört, und einen einzelnen Kafka-Broker auf localhost:6667 .
Erstellen Sie ein Thema
Wir haben nur einen Broker, also erstellen wir ein Thema ohne Replikationsfaktor und nur eine Partition:
kafka-topics --zookeeper localhost:2181 \
--create \
--replication-factor 1 \
--partitions 1 \
--topic test-topic
Überprüfen Sie Ihr Thema:
kafka-topics --zookeeper localhost:2181 --list
test-topic
kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test-topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Nachrichten senden und empfangen
Einen Verbraucher starten:
kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
Starten Sie an einem anderen Terminal einen Produzenten und senden Sie einige Nachrichten. Standardmäßig sendet das Tool jede Zeile als separate Nachricht ohne besondere Codierung an den Broker. Schreiben Sie einige Zeilen und beenden Sie mit STRG + D oder STRG + C:
kafka-console-producer --broker-list localhost:9092 --topic test-topic
a message
another message
^D
Die Meldungen sollten im Verbraucher-Therminal erscheinen.
Stoppen Sie Kafka
kafka-server-stop
Starten Sie ein Multi-Broker-Cluster
Die obigen Beispiele verwenden nur einen Broker. Um einen echten Cluster einzurichten, müssen Sie lediglich mehrere Kafka-Server starten. Sie koordinieren sich automatisch.
Schritt 1: Um eine Kollision zu vermeiden, erstellen wir für jeden Broker eine Datei server.properties und ändern die Konfigurationseigenschaften für id , port und logfile .
Kopieren:
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
Bearbeiten Sie die Eigenschaften für jede Datei, zum Beispiel:
vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1
vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2
Schritt 2: Starten Sie die drei Broker:
kafka-server-start config/server.properties &
kafka-server-start config/server-1.properties &
kafka-server-start config/server-2.properties &
Erstellen Sie ein repliziertes Thema
kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
Dieses Mal gibt es mehr Informationen:
- "Leader" ist der Knoten, der für alle Lese- und Schreibvorgänge für die angegebene Partition verantwortlich ist. Jeder Knoten ist der Anführer für einen zufällig ausgewählten Teil der Partitionen.
- "Replikate" ist die Liste der Knoten, die das Protokoll für diese Partition replizieren, unabhängig davon, ob sie der Anführer sind oder ob sie gerade aktiv sind.
- "isr" ist die Menge von "In-Sync" -Replikaten. Dies ist die Untergruppe der Replikatenliste, die derzeit aktiv ist und vom Leader erfasst wird.
Beachten Sie, dass das zuvor erstellte Thema unverändert bleibt.
Testfehlertoleranz
Veröffentlichen Sie eine Nachricht zum neuen Thema:
kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
Töte den Anführer (1 in unserem Beispiel). Unter Linux:
ps aux | grep server-1.properties
kill -9 <PID>
Unter Windows:
wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties"
taskkill /pid <PID> /f
Sehen Sie, was passiert ist:
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0
Die Führung hat auf Makler 2 und "1" in nicht mehr synchronisiert. Die Nachrichten sind jedoch immer noch vorhanden (verwenden Sie den Verbraucher, um sich selbst auszuchecken).
Aufräumen
Löschen Sie die beiden Themen mit:
kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic