top of page

APACHE KAFKA NEDİR? APACHE KAFKA GENEL BAKIŞ

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

Rated 0 out of 5 stars.
No ratings yet

Add a rating

©2021, Data4Tech 

bottom of page