Apache Flink - Kitaplıklar
Bu bölümde, Apache Flink'in farklı kütüphaneleri hakkında bilgi edineceğiz.
Karmaşık Olay İşleme (CEP)
FlinkCEP, Apache Flink'te bulunan ve sürekli akış verilerindeki olay modellerini analiz eden bir API'dir. Bu olaylar neredeyse gerçek zamanlıdır ve yüksek verim ve düşük gecikmeye sahiptir. Bu API, çoğunlukla gerçek zamanlı olarak gelen ve işlenmesi çok karmaşık olan Sensör verilerinde kullanılır.
CEP, giriş akışının modelini analiz eder ve sonucu çok kısa sürede verir. Olay modelinin karmaşık olması durumunda gerçek zamanlı bildirimler ve uyarılar sağlama yeteneğine sahiptir. FlinkCEP, farklı türdeki giriş kaynaklarına bağlanabilir ve bunların içindeki modelleri analiz edebilir.
CEP ile örnek bir mimari şöyle görünür:
Sensör verileri farklı kaynaklardan gelecek, Kafka, akışları Apache Flink'e dağıtacak dağıtılmış bir mesajlaşma çerçevesi olarak hareket edecek ve FlinkCEP karmaşık olay modellerini analiz edecek.
Pattern API kullanarak karmaşık olay işleme için Apache Flink'te programlar yazabilirsiniz. Sürekli akış verilerinden tespit edilecek olay modellerine karar vermenizi sağlar. Aşağıda en yaygın kullanılan CEP modellerinden bazıları verilmiştir -
Başla
Başlangıç durumunu tanımlamak için kullanılır. Aşağıdaki program bir Flink programında nasıl tanımlandığını göstermektedir -
Pattern<Event, ?> next = start.next("next");
Nerede
Mevcut durumda bir filtre koşulu tanımlamak için kullanılır.
patternState.where(new FilterFunction <Event>() {
@Override
public boolean filter(Event value) throws Exception {
}
});
Sonraki
Yeni bir model durumunu ve önceki modeli geçmek için gereken eşleştirme olayını eklemek için kullanılır.
Pattern<Event, ?> next = start.next("next");
Bunu takiben
Yeni bir model durumu eklemek için kullanılır, ancak burada diğer olaylar iki eşleşen olay s / b olarak gerçekleşebilir.
Pattern<Event, ?> followedBy = start.followedBy("next");
Gelly
Apache Flink'in Grafik API'si Gelly'dir. Gelly, bir dizi yöntem ve yardımcı program kullanarak Flink uygulamalarında grafik analizi yapmak için kullanılır. Gelly ile dağıtılmış bir şekilde Apache Flink API kullanarak büyük grafikleri analiz edebilirsiniz. Aynı amaç için Apache Giraph gibi başka grafik kitaplıkları da vardır, ancak Gelly Apache Flink'in üstünde kullanıldığından, tek API kullanır. Bu, geliştirme ve operasyon açısından çok faydalıdır.
Apache Flink API - Gelly kullanarak bir örnek çalıştıralım.
Öncelikle, Apache Flink'in opt dizininden lib dizinine 2 Gelly jar dosyasını kopyalamanız gerekir. Sonra flink-gelly-samples jar dosyasını çalıştırın.
cp opt/flink-gelly* lib/
./bin/flink run examples/gelly/flink-gelly-examples_*.jar
Şimdi PageRank örneğini çalıştıralım.
PageRank, kenarlar üzerinden iletilen PageRank puanlarının toplamı olan tepe başına bir puanı hesaplar. Her tepe noktasının puanı, kenarlar arasında eşit olarak bölünmüştür. Yüksek puan alan köşeler, diğer yüksek puanlı köşelerle bağlantılıdır.
Sonuç, köşe kimliğini ve PageRank puanını içerir.
usage: flink run examples/flink-gelly-examples_<version>.jar --algorithm PageRank [algorithm options] --input <input> [input options] --output <output> [output options]
./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm PageRank --input CycleGraph --vertex_count 2 --output Print