İnternet evlerimize ve ceplerimize girdiğinden beri gelişen ve sürekli büyüyen “Büyük Veri” kavramı da giderek önem kazanmaya başladı. Hatta geleneksel veritabanı araçlarıyla yönetilemeyecek büyüklükte olan bu verinin analiz edilebilmesi için bir bilim dalı bile gelişti: Veri Bilimi. Bu bilimin kullanım alanlarıyla ilgili fikir edinmek isterseniz sizi Veri Bilimi serisinin diğer yazılarına şuradan ulaşabilirsiniz.

Büyük Veri siz bu yazıyı okurken büyümeye devam ediyor. Tik, tak, siteye X linkinden tıkladınız, tik, tak, sitede 1 dakikadan fazla kaldınız, tik, tak… Bu verilerin internet üzerinden kullandığınız her sistemde anonim olarak toplanmasındaki ortak amaç size daha iyi bir deneyim sunmak. Peki anlık olarak büyüyen bu veriyi nasıl saklayacağız? Daha da önemlisi bunlardan nasıl anlam çıkaracağız? Veriyi kaynağından alıp analiz edilebilir kılmak için çeşitli teknolojiler bulunuyor. Bu yazımızda veri biliminin önemli bir parçası olan ve bizim de kullandığımız Apache Kafka’dan bahsedeceğiz. Keyifli okumalar…

Apache Kafka, en basit tanımıyla akan verileri bir queue (mesaj kuyruğu) içerisine atarak; Hadoop, Spark, Elasticsearch gibi diğer sistemlere transfer etmemizi sağlar.

Apache Kafka, Linkedin bünyesinde geliştirilerek 2011 yılında Github’a eklenmiş, Java ve Scala dilleri ile geliştirilmiş açık kaynak kodlu bir projedir. Kafka, büyük veriler ile çalışabilen, ölçeklenebilir, dağıtık sistemlere uygun, anlık toplanan veriyi hızla ve hatasız bir biçimde aktarabilen bir mesajlaşma sistemidir. *

Mesajlaşma sistemi mi? Kafka mesajlaşma uygulaması mı yazıyor?

Eğer yazılım alanında yalnızca kullanıcısıysanız aklınıza ilk olarak bu sorunun gelmiş olması çok normal. Cevabı ise, hayır. “Mesajlaşma” derken aslında verinin bir uygulamadan diğerine aktarılmasından bahsediliyor. Böylece uygulamalar da verilerin doğru gelip gelmediğiyle ilgilenmeyip, onları analiz etmeye odaklanıyor. Bunun gibi yapılarda verinin güvenilirliği çok önemlidir. Verinin aynen aktarılması için “mesaj kuyruğu (message queue)” kavramı kullanılır. Mesaj kuyrukları aktarılacak veriyi sıraya alır ve buna göre aktarır. Mesajlaşma kalıpları 2 tür olarak gelişmiştir: Point to Point (Noktadan Noktaya) ve Publish-Subscribe (Yayın-Abone).

Point to Point: Bu yöntem bazen “producer-consumer” olarak da adlandırılır. “Üretici (Producer)” bir mesaj üretir ve bir yere yazar, “Tüketici (Consumer)” tüketir. Mesajlar sıraya girer, sırayla ve tüketiciler tarafından talep edilir. Bir mesajı sadece 1 tüketici tüketebilir, sonra mesaj kuyruktan silinir. E-ticaret sitenizdeki ürünleri örnek olarak düşünebilirsiniz. Aynı şekilde mesaj okunduğunda bir push (anında ilet) bildirimi gitmesi de buna bir örnektir.

Publish-Subscribe: Bu sistemde ise mesajlar bir konuda kalıcıdır. Bir örnek üzerinden açıklayalım. Biz (yayıncılar) bu blog’a yazılar yüklüyoruz, siz (aboneler) de bültenimize abone olarak yazılarımızdan haberdar oluyor ve onları okuyorsunuz. Sisteme isteyen herkes abone olabiliyor ve aynı yazıyı defalarca okuyabiliyor.

 

Sonuç olarak…

Kafka’nın temel rolü mesajlaşma, depolama ve yayın işleme sistemlerinin bir kombinasyonunu oluşturmaktır. Bu sistemlerin bir arada çalışması çok alışılmış bir durum değildir, Kafka’nın rekabet avantajı da budur.

HDFS (Hadoop Distributed File System) gibi mimariler geçmişten gelen verileri depolama ve işleme imkanı sunar. Geleneksel bir mesajlaşma sistemi abone olduktan sonra size gelecek mesajları iletmeye yarar. Kafka da bu iki özelliği birleştirir.

Apache Kafka ve yapay zeka hakkında sorularınız varsa bize sitemizde bulabileceğiniz iletişim bilgilerimizden ulaşabilirsiniz. Veri bilimi serisinde bir yazının daha sonuna geldik. Devamını takip etmek için abone olun veya Instagram, Facebook ve Linkedin’de bizi takip edin! Görüşmek üzere…