apache-kafka Samouczek
Rozpoczęcie pracy z Apache-Kafka
Szukaj…
Uwagi
Kafka to wysokowydajny system przesyłania komunikatów publikowania i subskrybowania, wdrażany jako rozproszona, podzielona na partycje, replikowana usługa dziennika zatwierdzeń.
Zaczerpnięte z oficjalnej strony Kafka
Szybki
Jeden broker Kafka może obsłużyć setki megabajtów odczytów i zapisów na sekundę od tysięcy klientów.
Skalowalny
Kafka została zaprojektowana tak, aby pojedynczy klaster mógł służyć jako centralny szkielet danych dla dużej organizacji. Można go elastycznie i transparentnie rozszerzać bez przestojów. Strumienie danych są dzielone na partycje i rozproszone w klastrze maszyn, aby umożliwić strumienie danych większe niż możliwości dowolnego pojedynczego komputera i umożliwić klastrom skoordynowanych konsumentów
Trwały
Wiadomości są utrwalane na dysku i replikowane w klastrze, aby zapobiec utracie danych. Każdy broker może obsługiwać terabajty wiadomości bez wpływu na wydajność.
Dystrybucja według projektu
Kafka ma nowoczesną, skupioną na klastrach konstrukcję, która zapewnia dużą wytrzymałość i gwarancje odporności na uszkodzenia.
Instalacja lub konfiguracja
Krok 1 . Zainstaluj Javę 7 lub 8
Krok 2 Pobierz Apache Kafka ze strony: http://kafka.apache.org/downloads.html
Na przykład spróbujemy pobrać Apache Kafka 0.10.0.0
Krok 3 Wyodrębnij skompresowany plik.
W systemie Linux:
tar -xzf kafka_2.11-0.10.0.0.tgz
W oknie: kliknij prawym przyciskiem myszy -> tutaj wypakuj
Krok 4 . Uruchom 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
Krok 5 . Uruchom serwer Kafka
Linux:
bin/kafka-server-start.sh config/server.properties
Windows:
bin/windows/kafka-server-start.bat config/server.properties
Wprowadzenie
Apache Kafka ™ jest rozproszoną platformą streamingową.
Co znaczy
1-Pozwala publikować i subskrybować strumienie rekordów. Pod tym względem jest podobny do kolejki komunikatów lub korporacyjnego systemu przesyłania wiadomości.
2-Pozwala przechowywać strumienie rekordów w sposób odporny na uszkodzenia.
3-Pozwala przetwarzać strumienie rekordów w miarę ich występowania.
Przyzwyczaja się do dwóch szerokich klas zastosowań:
1-Budowanie potoków przesyłania strumieniowego danych w czasie rzeczywistym, które niezawodnie uzyskują dane między systemami lub aplikacjami
2-Budowanie aplikacji do przesyłania strumieniowego w czasie rzeczywistym, które przekształcają lub reagują na strumienie danych
Skrypty konsoli Kafka są różne dla platform opartych na Uniksie i Windows. W przykładach może być konieczne dodanie rozszerzenia stosownie do platformy. Linux: skrypty znajdujące się w
bin/z rozszerzeniem.sh. Windows: skrypty znajdujące się wbin\windows\iz rozszerzeniem.bat.
Instalacja
Krok 1: Pobierz kod i rozpakuj go:
tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
Krok 2: uruchom serwer.
aby móc później usunąć tematy, otwórz
server.propertiesi ustawdelete.topic.enablena true.
Kafka w dużej mierze opiera się na dozorcy, więc musisz go najpierw uruchomić. Jeśli nie masz go zainstalowanego, możesz użyć skryptu wygody spakowanego z kafką, aby uzyskać szybką i brudną instancję ZooKeeper z jednym węzłem.
zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
Krok 3: Upewnij się, że wszystko działa
Powinieneś teraz mieć obserwatora słuchającego localhost:2181 i pojedynczego brokera kafka na localhost:6667 .
Utwórz temat
Mamy tylko jednego brokera, dlatego tworzymy temat bez czynnika replikacji i tylko jedną partycję:
kafka-topics --zookeeper localhost:2181 \
--create \
--replication-factor 1 \
--partitions 1 \
--topic test-topic
Sprawdź swój temat:
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
wysyłać i odbierać wiadomości
Uruchom konsumenta:
kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
Na innym terminalu uruchom producenta i wyślij kilka wiadomości. Domyślnie narzędzie wysyła każdą linię jako osobną wiadomość do brokera, bez specjalnego kodowania. Napisz kilka linii i wyjdź za pomocą CTRL + D lub CTRL + C:
kafka-console-producer --broker-list localhost:9092 --topic test-topic
a message
another message
^D
Komunikaty powinny pojawić się w terminarzu konsumenckim.
Przestań kafka
kafka-server-stop
uruchom klaster obejmujący wiele brokerów
Powyższe przykłady używają tylko jednego brokera. Aby skonfigurować prawdziwy klaster, wystarczy uruchomić więcej niż jeden serwer Kafka. Będą się automatycznie koordynować.
Krok 1: aby uniknąć kolizji, tworzymy plik server.properties dla każdego brokera i zmieniamy właściwości konfiguracyjne id , port i logfile .
Kopiuj:
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
Edytuj właściwości każdego pliku, na przykład:
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
Krok 2: uruchom trzech brokerów:
kafka-server-start config/server.properties &
kafka-server-start config/server-1.properties &
kafka-server-start config/server-2.properties &
Utwórz zreplikowany temat
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
Tym razem jest więcej informacji:
- „lider” to węzeł odpowiedzialny za wszystkie odczyty i zapisy dla danej partycji. Każdy węzeł będzie liderem dla losowo wybranej części partycji.
- „repliki” to lista węzłów, które replikują dziennik dla tej partycji, niezależnie od tego, czy są one liderem, czy nawet jeśli obecnie żyją.
- „isr” to zestaw replik „zsynchronizowanych”. Jest to podzbiór listy replik, który jest obecnie żywy i dogoniony przez lidera.
Pamiętaj, że wcześniej utworzony temat pozostaje niezmieniony.
test tolerancji na uszkodzenia
Opublikuj wiadomość na nowy temat:
kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
Zabij przywódcę (1 w naszym przykładzie). W systemie Linux:
ps aux | grep server-1.properties
kill -9 <PID>
W systemie Windows:
wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties"
taskkill /pid <PID> /f
Zobacz co się stało:
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
Kierownictwo zmieniło się na brokera 2 i „1” już niesynchronizowanych. Ale wiadomości wciąż tam są (skorzystaj z pomocy konsumenta, aby sprawdzić to sam).
Sprzątać
Usuń dwa tematy, używając:
kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic