APACHE KAFKA NEDİR? APACHE KAFKA GENEL BAKIŞ
- Murat Can ÇOBAN
- 18 May 2022
- 2 dakikada okunur
Güncelleme tarihi: 18 Ara 2023
Bu yazımda sizlerle Apache Kafka kurulumundan Kafka'nın kendi bileşenlerine kadar çeşitli bilgiler vermeye çalışacağım ve bunu uygulamarıyla beraber yapacağız.
Apache Kafka Nedir?
Apache Kafka büyük veri dünyasının en popüler teknolojilerinden birisidir. Kısaca özetlemek gerekirse yüksek performanslı dağıtık bir mesajlaşma sistemidir. Linkedin mühendisleri tarafından geliştirilen ve 2010 yılında Open Source olarak GitHub’a konulan Kafka, 2011 yılında bir Apache Software Foundation Incubator Project olarak önerildi ve 2012 yılında da Apache Kafka adını aldı.
a)Apache Kafka Bileşenleri
Producer
Topic
Partition
Offset
Consumer
Broker
Zookeeper
1)Producer
Mesajları topiclere ileten birimdir.
2) Topic
Gelen mesajların depolandığı yerdir. Birden fazla topic olabilir. Veritabanındaki tablolar gibi düşünebilirsiniz.
3)Partition
Kafka topicleri kendi içinde partitionlara ayrılır. Partitionlar verileri belirli bölümlere ayırarak topiclerin paralelleşmesine olanak sağlar.

4)Offset
Partitionlardaki her kayıt belirli offsetlere atanır ve bunlar geldikleri sıraya göre yerleşirler.
5)Consumer
Mesajları topiclerden okuyan birimdir. Birden fazla olabilir. En az partition sayısı kadar olması sistemin paralelliğine destek sağlar.
6)Broker
Her bir Kafka sunucusuna Broker ismi verilir. Brokerların birden fazla olması sistemi high availability hale getirebilmek için önemlidir. Bir lider broker seçilir ve bu brokerın çökmesi durumunda diğer brokerlar devreye girerek sistemin stabil olarak çalışmasını sağlar.
7)Zookeeper
Zookeeper, dağıtık sistemlerde bileşenleri bilgilendirici bir servis olarak çalışır. Kafka Cluster ortamında ise Kafka bileşenlerini birbirleri arasında iletişim kurmasını sağlar.
b)Apache Kafka Kurulumu
İlk olarak javayı kurarak başlıyoruz.
yum install java-1.8.0-openjdk.x86_64
Daha sonrasında java versiyonumuzu kontrol ediyoruz.
java -version

JAVA_HOME ve JRE_HOME ortam değişkenlerini /etc/bashrc dosyasına ekliyoruz.
vi /etc/bashrc
export JRE_HOME=/usr/lib/jvm/jre
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
PATH=$PATH:$JRE_HOME:$JAVA_HOME
Etkinleştirmek için dosyamızı kaynak olarak gösteriyoruz.
source /etc/bashrc
Şimdi kafka kurulumuna geçiyoruz ve bir user oluşturuyoruz.
useradd kafka -m
Bu user'a şifre atıyoruz.
passwd kafka
sudo usermod -aG wheel kafka
Oluşturduğumuz user'a giriş yapalım.
su - kafka
Home dizinimize gidip kafkayı kuruyoruz. Ben burada kafkayı offline olarak kurmayı göstermek istiyorum size. Buradan indirebilirsiniz.
cd /Downloads
mv kafka_2.12-3.1.1.tgz /home/kafka
cd /home/kafka
tar -xvzf kafka_2.12-2.1.0.tgz
mv kafka_2.12-2.1.0/* .
rmdir /home/kafka/kafka_2.12-2.1.0
Zookeeper için bir servis oluşturalım.
sudo vi /lib/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/bin/zookeeper-server-start.sh /home/kafka/config/zookeeper.properties
ExecStop=/home/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

Şimdi ise Kafka için bir service oluşturuyoruz.
sudo vi /etc/systemd/system/kafka.service
[Unit]
Requires=network.target remote-fs.target zookeeper.service
After=network.target remote-fs.target zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/bin/kafka-server-start.sh /home/kafka/config/server.properties
ExecStop=/home/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

Kafka configürasyonlarını düzenleyelim.
vi /home/kafka/config/server.properties
listeners=PLAINTEXT://:9092
Oluşturduğumuz servislerin kaydedilmesi için aşağıdaki kodu girin.
systemctl daemon-reload
Kafka log dosyasını oluşturup kafka user'ına yetkilendirelim.
sudo mkdir -p /var/log/kafka-logs
chown kafka:kafka -R /var/log/kafka-logs
Servislerin herhangi bir reboot durumunda otomatikleştirilmesi için aşağıdaki kodları girin.
systemctl enable zookeeper.service
systemctl enable kafka.service
Şimdi servislerimizi sırasıyla başlatalım.
systemctl start zookeeper.service
systemctl start kafka.service
Başlatılan servislerin durumlarını kontrol edelim.
systemctl status zookeeper.service

systemctl status kafka.service

c)Apache Kafka Producer-Consumer Uygulaması
Kafka user'ına geçerek data4tech isimli bir topic oluşturuyoruz.
bin/kafka-topics.sh --create -bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic data4tech

Konsol üzerinden bir producer mesaj sistemi oluşturalım.
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic data4tech

Konsol üzerinden bir consumer mesaj sistemi oluşturalım.
bin/kafka-console-consumer.sh --broker-list localhost:9092 --topic data4tech --from-beginning

Şimdi ise producerdan yolladığımız mesajları consumer tarafından karşılanması ile ilgili bir test yapalım.

Gördüğünüz gibi producerdan yolladığımız mesajlar anında consumera ulaşıyor.
Bu yazımızda sizlerle beraber Apache Kafka'yı ele aldık. Eğer yazıyı beğendiyseniz paylaşım yaparak bizlere destek olabilirsiniz.
Gelecek yazılarımızda görüşmek üzere, sağlıcakla kalın...
Comments