Apache Flink Nedir?
Apache Flink, sınırsız ve sınırlı veri akışları üzerinde durum bilgisi hesaplamaları için bir çerçeve ve dağıtılmış işleme motorudur. Flink, tüm yaygın küme ortamlarında çalışacak ve her ölçekte bellek içi hızda hesaplamalar gerçekleştirecek şekilde tasarlanmıştır. Finans, e-ticaret ve telekomünikasyon gibi sektörlerdeki işletmeler için hem toplu hem de akış işlemeyi tek bir birleşik platformda gerçekleştirebilençok yönlü bir araçtır. Apache Flink dolandırıcılık tespiti, kişiselleştirilmiş öneriler, borsa analizi ve makineöğrenimi gibi modern uygulamalar için kullanılabilir.
Her türlü veri bir olay akışı olarak üretilir. Kredi kartı işlemleri, sensör ölçümleri, makine günlükleri veya bir web sitesi veya mobil uygulamadaki kullanıcı etkileşimleri, tüm bu veriler bir akış olarak üretilir.
Veriler, sınırsız veya sınırlı akışlar olarak işlenebilir.
- Sınırsız akışların bir başlangıcı vardır ancak tanımlı bir sonu yoktur. Sonlanmazlar ve üretildikleri anda veri sağlarlar yani sürekli olarak işlenmelidir.
- Sınırlı akışların tanımlanmış bir başlangıcı ve sonu vardır. Sınırlı akışlar, herhangi bir hesaplama yapmadan önce tüm verileri alarak işlenebilir. Sınırlı akışların işlenmesi toplu işleme olarak da bilinir.
Flink'in özellikleri arasında gelişmiş durum yönetimi, kaydetme noktaları, kontrol noktaları, olay zamanıişleme semantiği ve durum bilgisi işleme için tam bir kez (exactly-once) tutarlılık garantileri bulunur. Durum bilgisi akışı işleme özelliği, kullanıcıların sürekli veri akışları üzerinde dağıtılmış hesaplamalar tanımlamasına olanak tanır. Bu, pencereli birleştirmeler, toplamalar ve desen eşleştirme gibi olay akışlarında karmaşık olay işleme analizlerini etkinleştirir.
Hem sınırlı hem de sınırsız akışları işleyebilir, toplu ve akış işlemeyi aynı şemsiye altında birleştirebilir. Bu, her iki veri türünü de işlemeyi gerektiren gerçek zamanlı akış uygulamaları gibi çeşitli veri işleme ihtiyaçları için yararlı hale getirir. Ayrıca, hemen hemen her ölçekte durum bilgisi uygulamalarınıçalıştırmak üzere tasarlanmıştır. Birden fazla makineye dağıtılmış binlerce göreve paralel olarak verileri işleyebilir ve büyük veri kümelerini verimli bir şekilde işleyebilir. Bu, minimum gecikme ve verim kaybıyla binlerce düğüme ölçeklenmesi gereken uygulamalar için idealdir.
Flink, mesajlaşma ve akış sistemleri, veri depoları, arama motorları ve Apache Kafka, OpenSearch, Elasticsearch, DynamoDB, HBase ve JDBC istemcisi sağlayan herhangi bir veritabanı gibi dosya sistemleri için bağlayıcılara sahiptir.
Apache Flink, programlama arabirimi için birden fazla soyutlama seviyesi sunar. Daha yüksek seviyeli akışSQL ve Tablo API'sinden tablo, birleşmeler ve gruplar gibi bilindik soyutlamaları kullanır. DataStream API'si, akışların semantiği, zaman aralığı ve eşleme ile daha düşük bir soyutlama seviyesi ve aynı zamanda daha fazla kontrol sunar. Son olarak ProcessFunction API'si, her mesajın işlenmesi ve durumun doğrudan kontrolü üzerinde detaylı kontrol sağlar. Tüm programlama arabirimleri, hem sınırlandırılmamış (akışlar) hem de sınırlandırılmış (tablolar) tarih kümeleriyle sorunsuz şekilde çalışır. Her sorunu çözmek için doğru araç olarak aynı uygulamada farklı soyutlama seviyeleri kullanılabilir.
Ayrıca Java, Scala, Python ve Kotlin gibi diğer JVM dilleri dahil olmak üzere birden fazla programlama dilini destekler ve bu da onu geliştiriciler arasında popüler bir seçim haline getirir.
FLİNK
Stream-First Yaklaşımı: Flink, tüm veriyi temel olarak akış (stream) olarak ele alır.
Hem sınırsız (unbounded) hem de sınırlı(bounded) veri kümelerini gerçek zamanlı, olay bazında işler. Bu sayede düşük
gecikme (latency) sağlanır.
Gerçek Zamanlı İşleme: Her bir olay anında (event-at-a-time) işlenir, bu da özellikle düşük gecikmeli uygulamalar için büyük avantaj sunar.
Gelişmiş ve Yerel Durum Yönetimi: Flink, stateful işlemler için güçlü ve yerel (local) durum yönetimi sunar. Checkpoint ve
savepoint mekanizmaları sayesinde exactly-once semantiği sağlanır. Bu, özellikle
karmaşık, durum bazlı uygulamalar için kritikönem taşır.
SPARK
Micro-Batching Modeli: Spark Streaming, veri akışlarını mikro-batch’lere bölerek işler. Bu
model, batch işleme optimizasyonlarına
odaklanmış olsa da, gerçek zamanlı
uygulamalarda milisaniye düzeyinde gecikmeye yol açabilir.
Batch Odaklı: Spark, hem batch hem de stream işlemlerinde kullanılabilir; ancak, temel mimarisi mikro-batching’e dayandığı için düşük gecikme gerektiren senaryolarda Spark, Flink kadar
başarılı olmayabilir.
Durum Yönetimi: Spark Structured Streaming, durum yönetimi sağlar ancak mikro-batching nedeniyle durumun güncellenmesi ve yeniden hesaplanması durumunda gecikme veya
karmaşıklık yaşanabilir. Bu durum, özellikle sürekli ve yoğun veri akışlarında performans farkı oluşturabilir.