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