apache-kafkaRozpoczęcie pracy z Apache-Kafka


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ę w bin\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.properties i ustaw delete.topic.enable na 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