Apache Kafka - Temel İşlemler
Öncelikle, tek düğümlü tek aracı
yapılandırmasını uygulamaya başlayalım ve ardından kurulumumuzu tek düğümlü birden çok aracı yapılandırmasına geçireceğiz.
Umarım şimdiye kadar makinenize Java, ZooKeeper ve Kafka'yı yüklemişsinizdir. Kafka Küme Kurulumuna geçmeden önce, önce ZooKeeper'ınızı başlatmanız gerekir çünkü Kafka Kümesi ZooKeeper'ı kullanır.
ZooKeeper'ı başlatın
Yeni bir terminal açın ve aşağıdaki komutu yazın -
bin/zookeeper-server-start.sh config/zookeeper.properties
Kafka Broker'ı başlatmak için aşağıdaki komutu yazın -
bin/kafka-server-start.sh config/server.properties
Kafka Broker'ı başlattıktan sonra , ZooKeeper terminalinde jps
komutunu yazın ve aşağıdaki yanıtı göreceksiniz -
821 QuorumPeerMain
928 Kafka
931 Jps
Şimdi, QuorumPeerMain'in ZooKeeper arka plan programı ve diğerinin Kafka arka plan programı olduğu terminalde çalışan iki arka plan programı görebilirsiniz.
Tek Düğüm-Tek Broker Yapılandırması
Bu yapılandırmada, tek bir ZooKeeper ve broker kimliği örneğiniz vardır. Yapılandırma adımları aşağıdadır -
Creating a Kafka Topic- Kafka , sunucuda konular oluşturmak için kafka-topics.sh
adlı bir komut satırı aracı sağlar. Yeni terminal açın ve aşağıdaki örneği yazın.
Syntax
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1
--partitions 1 --topic topic-name
Example
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1
--partitions 1 --topic Hello-Kafka
Az önce , tek bölümlü ve çoğaltma faktörlü Hello-Kafka
adlı bir konu oluşturduk . Yukarıda oluşturulan çıktı, aşağıdaki çıktıya benzer olacaktır -
Output- Hello-Kafka
konusu oluşturuldu
Konu oluşturulduktan sonra, Kafka broker terminal penceresinde bildirimi ve config / server.properties dosyasındaki "/ tmp / kafka-logs /" içinde belirtilen oluşturulan konu için günlüğü alabilirsiniz.
Konu Listesi
Kafka sunucusundaki konuların bir listesini almak için aşağıdaki komutu kullanabilirsiniz -
Syntax
bin/kafka-topics.sh --list --zookeeper localhost:2181
Output
Hello-Kafka
Bir konu oluşturduğumuz için, sadece Hello-Kafka'yı
listeleyecek . Diyelim ki, birden fazla konu oluşturursanız, konu adlarını çıktıda alacaksınız.
Yapımcıyı Mesaj Göndermeye Başlayın
Syntax
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name
Yukarıdaki sözdiziminden, üretici komut satırı istemcisi için iki ana parametre gereklidir -
Broker-list- Mesajları göndermek istediğimiz aracıların listesi. Bu durumda sadece bir komisyoncumuz var. Config / server.properties dosyası, aracımızın 9092 numaralı bağlantı noktasını dinlediğini bildiğimizden, aracı bağlantı noktası kimliğini içerir, böylece doğrudan belirtebilirsiniz.
Konu adı - İşte konu adı için bir örnek.
Example
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka
Üretici, stdin'den gelen girdiyi bekleyecek ve Kafka kümesine yayınlayacaktır. Varsayılan olarak, her yeni satır yeni bir mesaj olarak yayınlanır, ardından varsayılan üretici özellikleri config / yapımcı.properties
dosyasında belirtilir . Şimdi, terminalde aşağıda gösterildiği gibi birkaç satır mesaj yazabilirsiniz.
Output
$ bin/kafka-console-producer.sh --broker-list localhost:9092
--topic Hello-Kafka[2016-01-16 13:50:45,931]
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message
Tüketiciyi Mesaj Almaya Başlayın
Üreticiye benzer şekilde, varsayılan tüketici özellikleri config / Consumer.proper-ties
dosyasında belirtilir. Yeni bir terminal açın ve mesaj tüketmek için aşağıdaki sözdizimini yazın.
Syntax
bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name
--from-beginning
Example
bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka
--from-beginning
Output
Hello
My first message
My second message
Son olarak, üreticinin terminalinden mesajlar girebilir ve bunların tüketici terminalinde göründüğünü görebilirsiniz. Şu an itibariyle, tek bir broker ile tek düğüm kümesi hakkında çok iyi bir anlayışa sahipsiniz. Şimdi çoklu broker yapılandırmasına geçelim.
Tek Düğümlü-Çoklu Aracı Yapılandırması
Çoklu aracılar kümesi kurulumuna geçmeden önce, önce ZooKeeper sunucunuzu başlatın.
Create Multiple Kafka Brokers- con-fig / server.properties dosyasında zaten bir Kafka broker örneğimiz var. Şimdi birden fazla aracı örneğine ihtiyacımız var, bu nedenle mevcut server.prop-erties dosyasını iki yeni yapılandırma dosyasına kopyalayın ve onu server-one.properties ve server-two.prop-erties olarak yeniden adlandırın. Ardından her iki yeni dosyayı düzenleyin ve aşağıdaki değişiklikleri atayın -
config / server-one.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
# The port the socket server listens on
port=9093
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-1
config / server-two.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
# The port the socket server listens on
port=9094
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-2
Start Multiple Brokers- Üç sunucuda tüm değişiklikler yapıldıktan sonra, her aracıyı tek tek başlatmak için üç yeni terminal açın.
Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties
Şimdi makinede çalışan üç farklı brokerimiz var. Tüm artalan süreçleri yazarak kontrol etmeyi kendiniz deneyinjps ZooKeeper terminalinde, yanıtı görürsünüz.
Konu Oluşturmak
Bu konu için çoğaltma faktörü değerini üç olarak atayalım çünkü çalışan üç farklı aracımız var. İki aracınız varsa, atanan kopya değeri iki olacaktır.
Syntax
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3
-partitions 1 --topic topic-name
Example
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3
-partitions 1 --topic Multibrokerapplication
Output
created topic “Multibrokerapplication”
Açıklayın
komutu aşağıda gösterildiği gibi akım yarattı konuda dinlediği komisyoncu kontrol etmek için kullanılır -
bin/kafka-topics.sh --describe --zookeeper localhost:2181
--topic Multibrokerappli-cation
Output
bin/kafka-topics.sh --describe --zookeeper localhost:2181
--topic Multibrokerappli-cation
Topic:Multibrokerapplication PartitionCount:1
ReplicationFactor:3 Configs:
Topic:Multibrokerapplication Partition:0 Leader:0
Replicas:0,2,1 Isr:0,2,1
Yukarıdaki çıktıdan, ilk satırın, konu adını, bölüm sayısını ve daha önce seçmiş olduğumuz çoğaltma faktörünü gösteren tüm bölümlerin bir özetini verdiği sonucuna varabiliriz. İkinci satırda, her bir düğüm, bölümlerin rastgele seçilen bir kısmı için lider olacaktır.
Bizim durumumuzda, ilk brokerimizin (broker.id 0 ile) lider olduğunu görüyoruz. O zaman Kopyalar: 0,2,1, tüm aracıların konuyu çoğalttığı anlamına gelir ve nihayet Isr
, eşzamanlı
çoğaltma kümesidir . Bu, şu anda hayatta olan ve lider tarafından yakalanan kopyaların alt kümesidir.
Yapımcıyı Mesaj Göndermeye Başlayın
Bu prosedür, tek aracı kuruluşundakiyle aynı kalır.
Example
bin/kafka-console-producer.sh --broker-list localhost:9092
--topic Multibrokerapplication
Output
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Multibrokerapplication
[2016-01-20 19:27:21,045] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message
Tüketiciyi Mesaj Almaya Başlayın
Bu yordam, tek aracı kuruluşunda gösterilenle aynı kalır.
Example
bin/kafka-console-consumer.sh --zookeeper localhost:2181
—topic Multibrokerapplica-tion --from-beginning
Output
bin/kafka-console-consumer.sh --zookeeper localhost:2181
—topic Multibrokerapplica-tion —from-beginning
This is single node-multi broker demo
This is the second message
Temel Konu İşlemleri
Bu bölümde çeşitli temel konu işlemlerini tartışacağız.
Bir Konuyu Değiştirme
Kafka Kümesi'nde nasıl konu oluşturulacağını zaten anladığınız gibi. Şimdi oluşturulmuş bir konuyu aşağıdaki komutu kullanarak değiştirelim
Syntax
bin/kafka-topics.sh —zookeeper localhost:2181 --alter --topic topic_name
--parti-tions count
Example
We have already created a topic “Hello-Kafka” with single partition count and one replica factor.
Now using “alter” command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:2181
--alter --topic Hello-kafka --parti-tions 2
Output
WARNING: If partitions are increased for a topic that has a key,
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!
Bir Konuyu Silme
Bir konuyu silmek için aşağıdaki sözdizimini kullanabilirsiniz.
Syntax
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name
Example
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka
Output
> Topic Hello-kafka marked for deletion
Note −Bunun hiçbir etkisi olmayacak, eğer delete.topic.enable doğru olarak ayarlanmadı