apache-kafkaAan de slag met apache-kafka


Opmerkingen

Kafka is een publish-subscribe berichtensysteem met hoge doorvoer geïmplementeerd als gedistribueerde, gepartitioneerde, gerepliceerde commit log service.

Genomen van officiële Kafka- site

Snel

Een enkele Kafka-makelaar kan honderden megabytes lezen en schrijven per seconde verwerken van duizenden klanten.

schaalbare

Kafka is ontworpen om een enkel cluster te laten dienen als centrale gegevensbackbone voor een grote organisatie. Het kan elastisch en transparant worden uitgebreid zonder downtime. Datastromen worden gepartitioneerd en verspreid over een cluster van machines om datastromen mogelijk te maken die groter zijn dan de mogelijkheden van een enkele machine en om clusters van gecoördineerde consumenten mogelijk te maken

Duurzaam

Berichten worden op schijf bewaard en binnen het cluster gerepliceerd om gegevensverlies te voorkomen. Elke broker kan terabytes aan berichten verwerken zonder impact op de prestaties.

Gedistribueerd door Design

Kafka heeft een modern, clustergericht ontwerp dat sterke duurzaamheid en fouttolerantiegaranties biedt.

Installatie of instellingen

Stap 1 Installeer Java 7 of 8

Stap 2 Download Apache Kafka op: http://kafka.apache.org/downloads.html

We zullen bijvoorbeeld proberen Apache Kafka 0.10.0.0 te downloaden

Stap 3 Pak het gecomprimeerde bestand uit.

Op Linux:

tar -xzf kafka_2.11-0.10.0.0.tgz
 

In venster: klik met de rechtermuisknop -> Hier uitpakken

Stap 4 Start Zookeeper

cd kafka_2.11-0.10.0.0
 

Linux:

bin/zookeeper-server-start.sh config/zookeeper.properties
 

Ramen:

bin/windows/zookeeper-server-start.bat config/zookeeper.properties
 

Stap 5 . Start Kafka-server

Linux:

bin/kafka-server-start.sh config/server.properties
 

Ramen:

bin/windows/kafka-server-start.bat config/server.properties
 

Invoering

Apache Kafka ™ is een gedistribueerd streamingplatform.

Wat betekent

Met 1-It kunt u publiceren en zich abonneren op streams van records. In dit opzicht is het vergelijkbaar met een berichtenwachtrij of berichtensysteem voor ondernemingen.

Met 2-It kunt u streams van records op een fouttolerante manier opslaan.

Met 3-It kunt u streams van records verwerken zodra deze zich voordoen.

Het wordt gebruikt voor twee brede toepassingsklassen:

1-Real-time streaming datapijplijnen bouwen die op betrouwbare wijze gegevens tussen systemen of applicaties ophalen

2-Real-time streamingapplicaties bouwen die de gegevensstromen transformeren of erop reageren

Kafka-consolescripts zijn verschillend voor op Unix gebaseerde en Windows-platforms. In de voorbeelden moet u mogelijk de extensie toevoegen op basis van uw platform. Linux: scripts in bin/ met .sh extensie. Windows: scripts in bin\windows\ en met de extensie .bat .

Installatie

Stap 1: Download de code en untar it:

tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
 

Stap 2: start de server.

om onderwerpen later te kunnen verwijderen, opent u server.properties en stelt delete.topic.enable op true.

Kafka vertrouwt sterk op dierenverzorger, dus u moet het eerst starten. Als je het niet hebt geïnstalleerd, kun je het gemaksscript dat bij kafka zit, gebruiken om een snelle en vuile ZooKeeper-instantie met één knooppunt te krijgen.

zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
 

Stap 3: zorg dat alles actief is

Je zou nu een dierenverzorger moeten hebben die naar localhost:2181 luistert localhost:2181 en een enkele kafka-makelaar op localhost:6667 .

Maak een onderwerp

We hebben slechts één makelaar, dus we maken een onderwerp zonder replicatiefactor en slechts één partitie:

kafka-topics --zookeeper localhost:2181 \
    --create \
    --replication-factor 1 \
    --partitions 1 \
    --topic test-topic
 

Controleer je onderwerp:

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
 

berichten verzenden en ontvangen

Een consument lanceren:

kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
 

Start op een andere terminal een producent en verzend enkele berichten. Standaard verzendt het hulpprogramma elke regel als een afzonderlijk bericht naar de makelaar, zonder speciale codering. Schrijf enkele regels en sluit af met CTRL + D of CTRL + C:

kafka-console-producer --broker-list localhost:9092 --topic test-topic   
a message
another message
^D
 

De berichten moeten in de therminal van de consument verschijnen.

Stop Kafka

kafka-server-stop 
 

start een multi-broker cluster

De bovenstaande voorbeelden gebruiken slechts één makelaar. Om een echt cluster op te zetten, moeten we gewoon meer dan één Kafka-server starten. Ze zullen zichzelf automatisch coördineren.

Stap 1: om botsing te voorkomen, maken we een server.properties bestand voor elke broker en wijzigen de configuratie-eigenschappen van id , port en logfile .

Kopiëren:

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
 

Bewerk eigenschappen voor elk bestand, bijvoorbeeld:

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
 

Stap 2: start de drie makelaars:

    kafka-server-start config/server.properties &
    kafka-server-start config/server-1.properties &
    kafka-server-start config/server-2.properties &
 

Maak een gerepliceerd onderwerp

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
 

Deze keer is er meer informatie:

  • "leider" is het knooppunt dat verantwoordelijk is voor alle lees- en schrijfbewerkingen voor de gegeven partitie. Elke knoop zal de leider zijn voor een willekeurig geselecteerd deel van de partities.
  • "replica's" is de lijst met knooppunten die het logboek voor deze partitie repliceren, ongeacht of ze de leider zijn of zelfs als ze momenteel in leven zijn.
  • "isr" is de verzameling "in-sync" replica's. Dit is de subset van de lijst met replica's die momenteel leeft en wordt ingehaald door de leider.

Merk op dat het eerder gemaakte onderwerp ongewijzigd is gebleven.

test fouttolerantie

Publiceer een bericht over het nieuwe onderwerp:

kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
 

Dood de leider (1 in ons voorbeeld). Op Linux:

ps aux | grep server-1.properties
kill -9 <PID>
 

Op Windows:

wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties" 
taskkill /pid <PID> /f
 

Kijk wat er is gebeurd:

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
 

Het leiderschap is niet meer gesynchroniseerd over naar makelaar 2 en "1". Maar de berichten zijn er nog steeds (gebruik de consument om zelf uit te checken).

Schoonmaken

Verwijder de twee onderwerpen met:

kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic