Apache Flink

Apache Flink, veri akışları üzerinden dağıtılmış hesaplamalar için iletişim, hata toleransı ve veri dağıtımı sağlayan bir veri akış motoru olan açık kaynaklı bir platformdur. Ayrıca Flink, Hadoop ile tamamen uyumlu ölçeklenebilir bir veri analizi çerçevesi 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, Apache’ nin üst düzey bir projesidir. Flink hem akış işlemeyi hem de toplu işlemeyi kolayca çalıştırabilir. Apache Flink’in pipeline mimarisi, akışlı verilerin mikro toplu mimarilere göre daha düşük gecikme ile daha hızlı işlenmesini sağlar.

Apache Flink, aşağıdaki gereksinim türlerini etkin bir şekilde çözebilen güçlü açık kaynaklı bir platformdur:

  • Toplu İşleme
  • İnteraktif işlem
  • Gerçek zamanlı akış işlemi
  • Grafik İşleme
  • Yinelemeli İşleme
  • Bellek içi işleme

Flink, MapReduce’un alternatifi olup, verileri MapReduce’dan 100 kat daha hızlı işler. Flink kendi veri depolama sistemini sağlamıyor. Dağıtılmış depolama alanından veri alır. Sorgu optimizasyonunu, veritabanı sistemlerinden gelen kavramları ve verimli paralel bellek içi ve çekirdek dışı algoritmaları MapReduce çerçevesi ile bütünleştirerek gerçekleştirilir. Apache Flink esas olarak akış modeli üzerine kurulu olduğundan, akışlı mimari kullanarak verileri yineler .

Apache Flink Tarihçesi

Apache Flink, 2008’de Volker Markl, The Stratosphere adlı proje fikrinin oluşturmasıyla başlatıldı. Nisan 2014’te Apache’de kuluçkaya bırakılmış ve Aralık 2014’te en üst düzey bir proje haline gelmiştir. Flink, hızlı, çevik anlamına gelen Almanca bir kelimedir. Flink logosu Hadoop ekosistemiyle uyumlu bir sincaptır.

Ekosistemi

Depolama

Flink, yalnızca herhangi bir depolama sistemi olmayan bir hesaplama motorudur. Farklı depolama sistemlerinden veri okur ve yazar, aynı zamanda akışlı sistemlerdeki verileri tüketebilir. Flink’in yazma verilerini okuyabileceği depolama sistemlerinden bazıları aşağıda belirtilmiştir:

  • HDFS – Hadoop Dağıtılmış Dosya Sistemi
  • Local-FS – Yerel Dosya Sistemi
  • HBase- Hadoop ekosisteminde NoSQL Veritabanı
  • MongoDB – NoSQL Veritabanı
  • RDBMS  – Herhangi bir ilişkisel veritabanı
  • S3 – Amazon’dan Basit Depolama Hizmeti
  • Kafka – Dağıtık Mesajlaşma Sırası
  • Flume- Veri Toplama ve Birleştirme Aracı
  • RabbitMQ – Mesajlaşma Sırası

Dağıtım

Dağıtım/kaynak yönetimi, Flink ekosisteminin ikinci katmanıdır. Flink’i şu modlarda dağıtılabilir:

  • Yerel mod – Tekli düğümde, tek JVM’de
  • Küme – Çok düğümlü kümede, aşağıdaki kaynak yöneticisi ile
  • Standalone – Flink’in varsayılan kaynak yöneticisi.
  • YARN- Bu  Hadoop’un bir parçası,  Hadoop 2.x’te tanıtılan, çok popüler kaynak yöneticisidir
  • Mesos- Bu genelleştirilmiş bir kaynak yöneticisidir
  • Bulut – Amazon veya Google bulutunda

Çekirdek

Üçüncü katman ise Çalışma Zamanı – Dağıtılmış Akışlı Veri Akışı, ki bu da Apache Flink’in çekirdeği olarak da bilinir. Bu katman, dağıtılmış işlem, hata toleransı, güvenilirlik, yerel yinelemeli işleme yeteneği vb. sağlar.

API’ler ve Kütüphane

Bu Flink API’leri ve kütüphaneleri aşağıda listelenen Flink için çeşitli yetenekler sunar:

  -DataSet API’sı

Bu API, çeşitli kaynaklardan üretilen, örneğin metin veya CSV dosyaları okumak veya yerel koleksiyonlardan elde edilen verileri işler ve kullanıcıların haritalama, filtreleme, katılma, gruplandırma gibi dönüşümleri uygulamasına izin verir. Metin ya da CSV dosyalarına veri yazmak ya da çıktıyı istemciye geri döndürmek için batar. Esas olarak dağıtılmış işlemler içindir. Ayrıca, akışlı çalışma zamanında toplu uygulamayı yürütür.

DataStream API’sı

Dönüşümleri, verilerin sürekli bir akışında işler. Canlı veri akışını işlemek için, filtreleme, durumları güncelleme, pencereleri tanımlama, bir araya getirme, vb. gibi çeşitli işlemleri sağlar. Bu, mesaj kuyrukları, soket akışları, dosyalar vb. Gibi çeşitli akışlı kaynaklardan gelen verileri tüketebilir.

Tablo API’sı

Tablo API, kullanıcıların ilişkisel akış ve toplu işleme için SQL gibi diller üzerinden geçici analiz yapmalarını sağlar. Aslında, kullanıcıların Flink’ in üst kısmında, veri işleme için karmaşık kod yazmalarından kurtaran SQL sorguları çalıştırmasına olanak tanır.Tablo API’sinin temel kavramı, ilişkisel şema içeren bir tabloyu temsil eden bir tablodur. DataSet veya DataStream’i kullanarak Tablolar oluşturabilirsiniz. Bir DataSet veya DataStream’e dönüştürür veya bir TableEnvironment kullanarak bir tablo kütüğüne kaydeder. Kayıtlı tablolar, düzenli SQL sorguları ile sorgulanabilir.Tablo her zaman belirli bir TableEnvironment’a bağlıdır. Farklı TableEnvironments tablolarını birleştirmek mümkün değildir.

Gelly

Kullanıcıların grafik oluşturmak, dönüştürmek ve işlemek için işlemler yürütmesine olanak tanıyan grafik işleme motorudur. Ayrıca, grafik uygulamalarının geliştirilmesini basitleştirmek için algoritma kütüphanesini de sağlar. Gelly, grafiği toplu işlem API’leri tarafından sağlananlara benzer üst düzey işlevler kullanarak değiştirebilir. API’leri Java ve Scala’da mevcuttur.  Noktalar ve kenarlardaki bir veri kümesi, Gelly’deki bir grafiği temsil eder. DataSet’in benzersiz kimliği bir köşe ve bir değer tanımlarken kaynak kimliği bir kenarı, hedef kimliğini ve değeri tanımlar. Dönüşümler ve yardımcı programlar, grafik metrikleri, mutasyonlar ve mahalle toplamaları içeren Graph sınıfının yöntemleridir. Tek bir sistem üzerinde Gelly aracılığıyla uçtan uca veri analizi gerçekleştirmek mümkündür. Gelly API, hem kayıt temelli hem de grafik tabanlı analiz kullanan uygulamaların uygulanması için DataSet Flink API’si ile sorunsuz bir şekilde karıştırılabilir.

FlinkML – Flink için Makine Öğrenimi

FlinkML, Flink için Machine Learning kütüphanesidir. FlinkML ile ölçeklenebilir ML algoritmaları, sezgisel bir API ve uçtan-uca ML sistemlerinde tutkal kodunu en aza indirmeye yardımcı olan araçlar sağlamayı hedeflemektedir. Bildiğimiz gibi makine öğrenme algoritmaları doğasında iteratif olmaktadır, Flink, yinelemeli algoritmanın aynısını oldukça etkin ve verimli bir şekilde ele alması için doğal destek sağlamaktadır. FlinkML, Veri Önişleme ile birlikte denetimli öğrenmeyi (Optimizasyon çerçevesi, Çoklu doğrusal regresyon ve SVM algoritmaları) ve denetimsiz öğrenmeyi (k-Nearest Neighbors katılmaktadır) destekler. FlinkML’in temel kavramlarından biri, karmaşık veri analizi pipelinelarının oluşturulmasına olanak tanıyan scikit-learn esin kaynağı pipeline mekanizmasıdır.

FlinkCEP – Flink için Kompleks Olay İşleme

FlinkCEP, veri akışı verilerinde karmaşık olay modellerinin kolaylıkla algılanmasına olanak tanır; bu, verilerin analizini elde etmek için eşleşen dizilerin bulunmasında yararlı olur. Günümüzde, borsa trendleri ve kredi kartı sahtekârlığı algılama gibi finansal uygulamalar CEP’den faydalanıyor. Ayrıca, RFID tabanlı izleme ve izlemede de yararlıdır. Örneğin, öğelerin düzgün bir şekilde kontrol edilmediği bir depoda hırsızlığı tespit eder. Ayrıca, şüpheli kullanıcı davranışı modelleri belirleyerek ağ saldırılarının tespitinde kullanımını bulabilir.

Mimarisi

Flink, şekildeki gibi master-slaves yani usta-köle tarzında çalışır.  Master, kölelerin işçi düğümleri olduğu kümenin yönetici düğümüdür. Şekilde gösterildiği gibi master, kullanıcının iş ya da uygulamayı gönderebileceği kümenin merkezidir. Ardından master işi bölecek ve kümedeki slavelere teslim edecektir. Bu şekilde, Flink veriyi yıldırım hızlı bir hızda işleyebilmesini sağlayan dağıtılmış bilgi işlem gücüne sahip olur . 

İki çeşit düğüm vardır: master yani ana ve slave yani köle düğüm vardır. Ana düğümde, “Job Manager” adı verilen Flink ana sunucusu çalışır ve tüm köle düğümlerde Flink’in “Task Manager” adı verilen köle yapılandırılır.

Özellikleri

Aşağıda Apache Flink’ e ait özellikler sıralandırılımıştır.

  • Flink gerçek bir akış işleme motorudur.
  • Flink’in veri akışlı çalışma zamanı çok yüksek verim sağlar.
  • Flink, herhangi bir gecikme olmaksızın veriyi saniyenin altındaki aralıkta işleyebilir.
  • Flink, olayların gecikmeli olarak veya arızalı olarak ulaştığı akış işleme ve pencerelemeyi destekler.
  • Flink, veriyi yıldırım hızında işler (dolayısıyla 4G Büyük Veri olarak da bilinir).
  • Donanım, düğüm, yazılım veya bir işlemin başarısızlığı kümeyi etkilemez.
  • Flink yönetilen hafızada çalışır ve asla bellek yetersizliği yaşanmaz.
  • Flink, verilerini işlemek için çeşitli depolama sistemi ile entegre edilebilir; çeşitli kaynak yönetimi araçlarıyla dağıtılabilir.
  • Flink, bir programın yürütülmesinden önce optimize ediciyle birlikte gönderilir; optimize edilmiştir.
  • Flink son derece ölçeklenebilir. Artan gereksinimlerle, flink kümesini ölçeklendirilebilir.
  • Flink, verileri işlemek için önceden tanımlanmış birçok operatör içerir. Tüm ortak işlemler bu operatörler kullanılarak yapılabilir.
  • Hesaplama sırasında özel durumunu koruyabilir.
  • Toplu işlem ve veri akışının her ikisinde de ortak çalışma zamanı vardır.
  • Flink’in API’leri, tüm ortak işlemleri kapsayacak şekilde geliştirildiğinden, programcılar verimli bir şekilde kullanabilir.
  • Yapılandırmak için bellek, ağ, seri hale getirici gerektirmez.

Flink Uygulama Modeli

apache flink

Flink uygulamalarını çalıştırmak için gereken adımlar şunlardır:

  1. Program – Uygulama programı geliştirici tarafından yazılmıştır.
  2. Parse ve Optimize – Bu adımda kod ayrıştırma, Type Extractor ve Optimizasyon gerçekleştirilir.
  3. DataFlow Graph –  Her iş, veri akış grafiğine dönüştürülür.
  4. Job Manager –  İş yöneticisi, görev yöneticileri üzerindeki görevi zamanlar;, veri akışı meta verileri tutar. İş yöneticisi operatörleri devreye sokar ve ara görev sonuçlarını izler
  5. Task Manager- Görevler görev yöneticisi üzerinde yürütülür, bunlar işçi düğümleri olur.

Bir Cevap Yazın