apache-kafka Zelfstudie
Aan de slag met apache-kafka
Zoeken…
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.shextensie. Windows: scripts inbin\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.propertiesen steltdelete.topic.enableop 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