Apache Kafka - Operasi Dasar

Pertama mari kita mulai menerapkan konfigurasi broker tunggal-simpul-tunggal dan kita kemudian akan memigrasi pengaturan kita ke konfigurasi pialang simpul-banyak.

Semoga Anda sudah menginstal Java, Zookeeper dan Kafka di komputer Anda sekarang. Sebelum pindah ke Penyiapan Kluster Kafka, pertama-tama Anda harus memulai Penjaga Kebun karena Kluster Kafka menggunakan Penjaga Kebun.

Mulai ZooKeeper

Buka terminal baru dan ketik perintah berikut -

bin/zookeeper-server-start.sh config/zookeeper.properties

Untuk memulai Kafka Broker, ketik perintah berikut -

bin/kafka-server-start.sh config/server.properties

Setelah memulai Kafka Broker, ketik perintah jps di terminal Zookeeper dan Anda akan melihat respon berikut -

821 QuorumPeerMain
928 Kafka
931 Jps

Sekarang Anda bisa melihat dua daemon berjalan di terminal di mana QuorumPeerMain adalah daemon Zookeeper dan satu lagi adalah daemon Kafka.

Konfigurasi Broker Node-Single Tunggal

Dalam konfigurasi ini Anda memiliki satu instance Zookeeper dan broker id. Berikut adalah langkah-langkah untuk mengkonfigurasinya -

Creating a Kafka Topic- Kafka menyediakan utilitas baris perintah bernama kafka-topics.sh untuk membuat topik di server. Buka terminal baru dan ketik contoh di bawah ini.

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

Kami baru saja membuat topik bernama Hello-Kafka dengan satu partisi dan satu faktor replika. Output yang dibuat di atas akan mirip dengan output berikut -

Output- Topik yang dibuat Hello-Kafka

Setelah topik dibuat, Anda bisa mendapatkan notifikasi di jendela terminal Kafka broker dan log untuk topik yang dibuat ditentukan di "/ tmp / kafka-logs /" di file config / server.properties.

Daftar Topik

Untuk mendapatkan daftar topik di server Kafka, Anda dapat menggunakan perintah berikut -

Syntax

bin/kafka-topics.sh --list --zookeeper localhost:2181

Output

Hello-Kafka

Karena kita telah membuat topik, itu hanya akan mencantumkan Hello-Kafka . Misalkan, jika Anda membuat lebih dari satu topik, Anda akan mendapatkan nama topik di output.

Mulai Produser untuk Mengirim Pesan

Syntax

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name

Dari sintaks di atas, dua parameter utama diperlukan untuk klien baris perintah produser -

Broker-list- Daftar pialang yang ingin kami kirimi pesan. Dalam hal ini kami hanya memiliki satu broker. File Config / server.properties berisi id port broker, karena kami tahu broker kami mendengarkan pada port 9092, jadi Anda dapat menentukannya secara langsung.

Nama topik - Berikut adalah contoh nama topik.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka

Produser akan menunggu masukan dari stdin dan mempublikasikan ke cluster Kafka. Secara default, setiap baris baru diterbitkan sebagai pesan baru, kemudian properti produsen default ditentukan dalam file config / producer.properties . Sekarang Anda dapat mengetik beberapa baris pesan di terminal seperti yang ditunjukkan di bawah ini.

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

Mulai Konsumen Menerima Pesan

Mirip dengan produsen, properti konsumen default ditentukan dalam file config / consumer.proper-ties . Buka terminal baru dan ketik sintaks di bawah ini untuk menggunakan pesan.

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

Terakhir, Anda dapat memasukkan pesan dari terminal produsen dan melihatnya muncul di terminal konsumen. Sampai sekarang, Anda memiliki pemahaman yang sangat baik tentang cluster node tunggal dengan satu broker. Sekarang mari kita beralih ke konfigurasi beberapa broker.

Konfigurasi Single Node-Multiple Brokers

Sebelum melanjutkan ke pengaturan cluster beberapa broker, pertama-tama mulai server Zookeeper Anda.

Create Multiple Kafka Brokers- Kami memiliki satu contoh broker Kafka yang sudah ada di con-fig / server.properties. Sekarang kita memerlukan beberapa contoh broker, jadi salin file server.prop-erties yang ada ke dalam dua file konfigurasi baru dan ubah namanya menjadi server-one.properties dan server-two.prop-erties. Kemudian edit kedua file baru dan tetapkan perubahan berikut -

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- Setelah semua perubahan dilakukan pada tiga server, buka tiga terminal baru untuk memulai setiap broker satu per satu.

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

Sekarang kami memiliki tiga broker berbeda yang berjalan di mesin. Cobalah sendiri untuk memeriksa semua daemon dengan mengetikjps di terminal ZooKeeper, maka Anda akan melihat tanggapannya.

Membuat Topik

Mari kita tetapkan nilai faktor replikasi sebagai tiga untuk topik ini karena kita memiliki tiga broker berbeda yang berjalan. Jika Anda memiliki dua broker, maka nilai replika yang ditetapkan adalah dua.

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”

The Jelaskan Perintah ini digunakan untuk memeriksa broker mendengarkan pada topik dibuat saat ini seperti gambar di bawah -

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

Dari output di atas, kita dapat menyimpulkan bahwa baris pertama memberikan ringkasan dari semua partisi, yang menunjukkan nama topik, jumlah partisi, dan faktor replikasi yang telah kita pilih. Di baris kedua, setiap node akan menjadi pemimpin untuk bagian partisi yang dipilih secara acak.

Dalam kasus kami, kami melihat bahwa broker pertama kami (dengan broker.id 0) adalah pemimpinnya. Kemudian Replika: 0,2,1 berarti bahwa semua broker mereplikasi topik tersebut, akhirnya Isr adalah kumpulan replika yang tidak sinkron . Nah, ini adalah bagian dari replika yang saat ini hidup dan ditangkap oleh pemimpinnya.

Mulai Produser untuk Mengirim Pesan

Prosedur ini tetap sama seperti pada pengaturan broker tunggal.

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

Mulai Konsumen Menerima Pesan

Prosedur ini tetap sama seperti yang ditunjukkan dalam pengaturan broker tunggal.

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

Operasi Topik Dasar

Dalam bab ini kita akan membahas berbagai operasi topik dasar.

Mengubah Topik

Seperti yang Anda sudah mengerti cara membuat topik di Kafka Cluster. Sekarang mari kita ubah topik yang dibuat menggunakan perintah berikut

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!

Menghapus Topik

Untuk menghapus topik, Anda dapat menggunakan sintaks berikut.

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 −Ini tidak akan berdampak jika delete.topic.enable tidak disetel ke true