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ı