Gerçek Zamanlı Veri İşleme
Günümüzde teknolojinin ilerlemesi, akıllı cihazların artması ve kullanım alanlarının çoğalması, internetin yaygınlaşması ve daha birçok etkenden dolayı veri kavramının önemi artmıştır. Yıllar içinde veri manzarasının değişmesi, verilerle yapabilecekleriniz veya yapmanız beklenenlerin değişmesi ve veri etkileşiminin artması ile de ortaya yeni bir kavram çıktı; Büyük Veri!
Büyük veri; toplumsal medya paylaşımları, ağ günlükleri, bloglar, fotoğraf, video, log dosyaları gibi değişik kaynaklardan toparlanan tüm verinin, anlamlı ve işlenebilir biçime dönüştürülmüş haline denir. Verilerin büyük hale gelmesinden dolayı da veri yığınlarının gerçek zamanlı işlenerek anlamlı hale getirilmesi kaçınılmaz bir durum olmuştur.
Gerçek zaman sistemleri; yazılım ve donanım sistemlerinin zaman kısıtlamaları altında bir etkiye tepki verebilmesi için tasarlanan sistemlerdir.
Günümüzün rekabetçi sistemlerinde inşa ettiğiniz ürünlerin bilgiye mümkün olduğunca hızlı tepki verebilmeleri gerekmektedir. Örneğin; telefonunuzda futbol maçlarının skorlarını bildiren bir uygulamanız var. Gol olduğunda bildirimin size dakikalar sonrasında geldiğini düşünün. Tavsiyem şu ki; o Skor uygulamanızı hemen silin. Ya da dünyada neler olduğunu öğrenmek için artık saat 19:00 daki haberleri beklemiyoruz. Haberleri veren uygulamalarda bakılan yerler genelde son dakika haberleri içeren yerlerdir. Bu yüzden gerçek zamanlı veriler ile ilgilenme becerilerinin geliştirilmesi gerekmektedir.
Gerçek zamanlı sistemlerin genel yapısında, verinin sürekliliği önemlidir. Gerçek zamanlı mimaride, giriş verisi sürekli olarak gelirken çıktıların da gerçek zamanlı olarak üretilmesini beklemekteyiz. Sistemde gecikme yok denecek kadar azdır veya yoktur. Sistem sürekli ayaktadır ve giriş verisi beslenmesi ile tetiklenir. Bunun sonucunda kesintisiz olarak çıkış verisinin üremesini bekleriz.
Şimdi dilerseniz, büyük veri ile ilgili çalışmalarda sıkça yer alan bazı teknoloji bileşenlerinden bahsedelim. Sonraki yazılarımızda bu teknolojilerin de kullanıldığı uygulamalı örnekler yapacağız.
Apache Kafka
Günümüz dünyasında anlık olarak üreyen verilerin devasa boyutlara ulaşması, akan veri üzerinden gerçek zamanlı olarak ulaşabilme ihtiyacını doğurmuştur. Büyük veriyi düşük gecikme ile sağlaması, yatay olarak ölçeklenebilmesi, hata toleransının olması Kafka’yı muadillerinden bir adım önde tutmuştur.
Apache Kafka, verilerin bir sistemden hızlı bir şekilde toplanıp diğer sistemlere hatasız bir şekilde transferini sağlamak için geliştirilen dağıtık bir veri akış mekanizmasıdır.
Basit olarak Apache Kafka mimarisinden bahsedelim:
Topic : Verilerin tutulduğu yerdir.
Producer : Topic’lere veriyi gönderendir.
Consumer : Topic’leri dinleyendir.
Biz de uygulamamızda verilerimizi gerçek zamanlı olarak Kafka topic’lere göndereceğiz ve gerçek zamanlı olarak Kafka topic’leri dinleyeceğiz.
Apache Flink
Apache Flink, Apache Software Foundation tarafından geliştirilen üst düzey açık kaynaklı bir akış işleme projesidir. Ayrıca ölçeklenebilir bir veri analizi ve çok yüksek hızda üretilen verileri işleyebilen büyük ölçekli veri işleme çerçevesidir. Apache Flink, yeni nesil büyük veri aracıdır.
Flink’in yanısıra akan verileri gerçek zamanlı olarak işleme konusunda en çok bilinen teknolojiler;
Spark Streaming, Storm, Beam, Apache Flume, Samza, Kafka Streams.
Özellikle Apache Spark dünya çapında kullanımı ve geliştirici sayısı önde olan ve gerçek zamanlı veri işleme teknolojilerinden en çok bilinenidir. Fakat Apache Flink’ in işlem hızı, kapasite, gecikme zamanı, performans gibi ölçeklerde Apache Spark’ tan geri kalır yanı olmadığı ve hatta çoğu noktalarda önde olduğu söylenebilir.
Apache Flink’in hız, performans, işlem kapasitesi gibi artılarının yanı sıra kişisel olarak Java programlama dilini kullanmayı tercih edenler için de Apache Flink entegrasyonu kolay olacaktır.
Biz de uygulamamızda gerçek zamanlı olarak Kafka topic’leri dinleyeceğiz ve Flink ile gerçek zamanlı olarak işleyeceğiz.
Genel olarak gerçek zamanlı veri işleme terminolojisine ve sonraki yazılara giriş olması açısından kullanılacak teknolojilere değindim.
Sonraki yazıda görüşmek üzere.
Sağlıcakla..