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_64Daha 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_HOMEEtkinleştirmek için dosyamızı kaynak olarak gösteriyoruz.
source /etc/bashrcŞimdi kafka kurulumuna geçiyoruz ve bir user oluşturuyoruz.
useradd kafka -mBu user'a şifre atıyoruz.
passwd kafka
sudo usermod -aG wheel kafkaOluşturduğumuz user'a giriş yapalım.
su - kafkaHome 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.0Zookeeper 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.propertieslisteners=PLAINTEXT://:9092Oluşturduğumuz servislerin kaydedilmesi için aşağıdaki kodu girin.
systemctl daemon-reloadKafka log dosyasını oluşturup kafka user'ına yetkilendirelim.
sudo mkdir -p /var/log/kafka-logschown kafka:kafka -R /var/log/kafka-logsServislerin herhangi bir reboot durumunda otomatikleştirilmesi için aşağıdaki kodları girin.
systemctl enable zookeeper.servicesystemctl enable kafka.serviceŞimdi servislerimizi sırasıyla başlatalım.
systemctl start zookeeper.servicesystemctl start kafka.serviceBaş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...






Yorumlar