Instalacja Apache Kafka
Instalacja Apache Kafka - trzech brokerów na jednym komputerze
W dzisiejszym poście jak zainstalować sobie szybko kafkę lokalnie do testów. Będziemy używać dystrybucji Apache.
Instalacja dla systemu Linux.
Instalacja wersji z jednym brokerem
Zaczynamy od ściągnięcia Kafki i rozpakowania w nowym katalogu. Najnowsza wersja jest do ściągnięcia ze strony projektu. Będziemy używać wersji Kafki 1.1.0 dla języka Scala w wersji 2.11 (aktualnie 2.11 jest zalecana zarówno dla Kafki jak i Sparka stąd dość oczywisty wybór).
mkdir kafka
cd kafka
wget http://ftp.man.poznan.pl/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar -xzf kafka_2.11-1.1.0.tgz
Uruchomienie jednego brokera
Jeśli chcemy pracować w wersji z jednym brokerem to już koniec. Teraz wystarczy uruchomić Zookeepera
cd kafka_2.11-1.1.0/
bin/zookeeper-server-start.sh config/zookeeper.properties
oraz brokera
bin/kafka-server-start.sh config/server.properties
Oczywiście robimy to w oddzielnych terminalach lub w tle jako demony (pokazane niżej).
Operacje na Apache Kafka
Zaczynamy od stworzenia topicu
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
teraz możemy sprawdzić listę topiców
bin/kafka-topics.sh --list --zookeeper localhost:2181
Uruchamiamy skrypt producenta
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
oraz skrypt konsumenta
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
i wysyłamy kilka wiadomości z poziomu producenta sprawdzając czy zostały odebrane przez konsumenta. Jeśli zobaczymy nasze wiadomości, Kafka działa poprawnie.
Kilku brokerów
By poczuć się jak w środowisku rozproszonym, powołamy do życia dwóch kolejnych brokerów na tym samym komputerze
cp config/server.properties config/server1.properties
cp config/server.properties config/server2.properties
vim config/server1.properties
vim config/server2.properties
Edytując dwa ostatnie pliki zmieniamy
broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/tmp/kafka-logs
na
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs1
oraz
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/tmp/kafka-logs2
(uwaga opcja listeners może być zakomentowana, trzeba usunąć znak # przed nazwą)
Następnie uruchamiamy dwóch dodatkowych brokerów w oddzielnych oknach terminala (poprzedni jest ciągle włączony)
bin/kafka-server-start.sh config/server1.properties
bin/kafka-server-start.sh config/server2.properties
Tworzymy zreplikowany topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
oraz topic z partycjami
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic my-partitioned-topic
oraz topic zreplikowany z partycjami
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic my-super-topic
wyświetlamy listę topiców
bin/kafka-topics.sh --list --zookeeper localhost:2181
wyświetlamy informacje o topicach za pomocą describe
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-partitioned-topic
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-super-topic