apache-kafkaErste Schritte mit Apache-Kafka


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 in bin\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.properties Themen später löschen zu können, öffnen Sie server.properties und setzen Sie delete.topic.enable auf 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