Apache NiFi Nedir? Neden Kullanılır?

Verinin üretileceği kaynak, depo edileceği alan veya verinin işlenmesi kadar veri akışı (data flow) da önemlidir.

Veri akışı, sistemler arası bilgi transferidir.
Veri bir kaynaktan alınır, ve bir hedefe aktarılır.

Kaynaktan hedefe veri akışı sağlanırken, kullanılacak teknolojilerin, güvenli, performanslı, efektif, ölçeklenebilir ve gerektiğinde farklı kaynaklardaki veri akışlarıyla çalışabilir olması gerekmektedir.

Ayrıca bir veri akışı esnasında kullanılacak aracın aşağıdaki zor durumları çözebiliyor olmasına dikkat etmek gerekir;

  • Hem yapısal hem de yapısal olmayan veri tipleriyle çalışabilme,
  • Kaynaktan alınan verinin yapısı ile hedef’teki veri yapısının farklı olma durumlarını tolare edebilme,
  • Verinin taşınması esnasında flow’un kapasitesinin yönetimi,
  • Veri akış hızına uyumlu çalışabilme,
  • Protokol ve format değişikliklerine uyum sağlama,
  • Güvenliğe önem verme vs.

Bu işlemlerin hepsini veya bir kısmını gerçekleştirebilen bir çok teknoloji mevcut.

Bu teknolojilerden biri olan Apache Flume’a daha önce değinmiştim. Bugün özelliklerinden bahsedeceğim bir diğer data flow teknoloji ise NiFi !

NiFi, ilk olarak Amerika Ulusal Güvenlik Ajansı (NSA) tarafından üretilmiştir.

Akan veriyi şelaleye benzetmiş olacaklar ki bu ürüne ilk olarak “Niagara Files” ismini koymuşlardır.

Daha sonra Niagarafiles, Kasım 2014 yılında açık kaynaklı yazılım vakfı olan Apache(ASF) tarafından satın alınmış ve adına kısaca NiFi denmiştir.

NiFi, gerçek zamanlı (real-time) veriyi bir yerden bir yere aktarma işlemlerini yöneten,  her türden veriyi çeşitli kaynaklardan okuyabilen, veri üzerinde çeşitli işlemler yapmaya imkan veren ve verinin farklı kaynağa depolanmasına olanak sağlayan bir veri akış aracıdır. (data flow tool)

NiFi’nin genel özelliklerini incelemeye başlamadan önce aşağıdaki iki terminolojik terimi bilmek önemlidir.

1-) FlowFile (Akış verisi)

Kullanıcının işlem ve dağıtım için NiFi’ye getirdiği her bir veri parçası, FlowFile olarak adlandırılır. Bir FlowFile iki bölümden oluşur: Attiribute(Özellik) ve Content (İçerik).

Content, NiFi’ye gelen kullanıcı verisinin kendisidir.
Attribute, kullanıcı verileri ile ilişkilendirilmiş anahtar / değer(key/value) çiftleridir.

2-) Processor (İşlemci/İşlem yapan)

FlowFile’ları oluşturma, gönderme, alma, dönüştürme, yönlendirme, bölme, birleştirme ve işleme işlemlerinden sorumlu olan bir NiFi bileşenidir.

Veri akışlarını oluşturmak için NiFi kullanıcılarının kullanabileceği en önemli yapı taşıdır.

Apache Nİ-Fİ ‘nin genel özellikleri

  • Apache NiFi, farklı sistemler arasındaki, veri alışverişini otomatikleştirmek için entegre edilebilen veri lojistik platformudur. 
  • Farklı formatlardaki verileri, şemaları, protokolleri, farklı akış hızlarını ve farklı veri boyutlarını destekler. Bunlara, click stream dataları, log dosyalar, bazı cihazlardan gelen coğrafi konum verileri örnek olarak verilebilir.
  • NiFi, verileri bir yerden bir yere taşımak için yapılandırılabilir bir platform sunar ve bu platform sayesinde verilerin gerçek zamanlı olarak izlenmesini sağlar.
  • NiFi, esnek ve genişletilebilir özelliklere sahiptir. Farklı cihazlardan, farklı ağlardan veri lojistiği yapabilir. Ve kullanıcıların kendi işlemcilerini ve daha fazlasını oluşturmasını sağlayabilir. Hızlı gelişim ve etkili test yapılmasını sağlar.
  • Web tabanlı kullanıcı arayüzüne sahiptir. Veri kaynaklarının baştan sona çeşitli görsel grafiklerle izlenmesini sağlar. Veri akışı esnasında hangi kaynaktan, hangi veri, nereye, ne şekilde gitmiş, web interface sayesinde kolayca görebilirsiniz. Ayrıca bu arayüz ile kaynak ve hedef arasındaki tüm bağlantıları, akışı, hataları veya uyarıları kullanıcı rahatlıkla takip edebilir.
  • Yüksek yapılandırma yeteneğine sahiptir. Taşıma esnasında, veri kayıplarını önler, düşük gecikme süresi ve yüksek verimlilik ile veriyi kaybetmemeyi garanti eder.
  • Veri akışlarını önceliklendirmenize olanak tanır. NiFi ile veri akışındaki işlemler, kuyruklar gibi hareket eder ve çeşitli süreçlerin, farklı oranlarda etkileşime girmesine imkan verilir. Bu iş süreçleri NiFi ile kolaylıkla önceliklendirilir. Bu sayede önceliği yüksek olan işlem, daha fazla buffer miktarına sahip olabilir.
  • Aynı veya farklı process’leri bir araya getirerek “Process Group”lar (İşlemci Grupları) oluşturulabilir. Bu bu process group’lar farklı işlemlerin bir araya getirdiği yeni işlemler olarakta çalışabilirler.
  • Güvenli – SSL, SSH, HTTPS, şifreli içerik ve daha fazlasını destekler.
  • İçerisinde 90’dan fazla processor bulunuyor. Örn: ConsumeKafka, GetHDFS, ConvertJSONToSQL vs.
  • Ancak bu processor’ları kullanmak istemediğiniz takdirde custom processor yaratabilmenize olanak sağlıyor.

NİFİ MİMARİSİ

NiFi, bir Java Virtual Machine (JVM) içinde yürütülür.

JVM içindeki ana bileşenler ise ;

Web Server: Web sunucusunun amacı, NiFi’nin HTTP tabanlı komut ve kontrol API’sini barındırmaktır.

Flow Controller: Akış kontrolörü, NiFi operasyonlarının beyinleridir. Extension’ların çalışabilmesi için iş parçaları oluşturur ve extension’ların yürütülecek kaynakları almasının zamanlamasını yönetir.

Extensions: FlowFile Repository: NiFi’nin anlık akışta aktif olan belirli bir FlowFile hakkında bildiklerinin durumunu takip ettiği ve bu bilgilerin depolandığı yerdir.

Content Repository: Belirli bir FlowFile öğesinin gerçek içerik baytının yaşadığı yerdir.

Provenance Repository: Tüm kaynaklarla ilgili olayların depolandığı alandır. Hangi kaynaktan hangi hedefe veri akışı olmuş vs. bilgileri bu kaynakta tutulur.

Ayırca, NiFi, birden fazla JVM ile bir küme şeklinde de çalışabilir. Bu kümenin kontrolü de ZooKeeper Server tarafından sağlanmaktadır.

 

Bir NiFi kümesindeki(cluster) her düğüm(node), veriler üzerinde aynı görevleri gerçekleştirir, ancak her biri farklı bir veri kümesi üzerinde çalışır.
Apache ZooKeeper, Küme Koordinatörü olarak tek bir düğüm seçer ve düğüm üzerindeki yük devretme işlemleri, ZooKeeper tarafından otomatik olarak ele alınır.

 

 

NiFi ile alakalı anlatacaklarım şimdilik bu kadar, ileriki safhalarda kurulumu ve bir örneğini gösterdiğim bir videoyu buraya eklerim.

NiFi hakkında daha fazla bilgi edinmek için kaynaklar:
NiFi FAQ Wiki, NiFi Docs , Developer Guide, Apache NiFi Wiki

Umarım sizler için faydalı bir içerik olmuştur. Okuduğunuz için teşekkür ederim.
İyi çalışmalar.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir