Buse Bozkurt
4 min readSep 1, 2020

APACHE NIFI NEDİR ? NEDEN APACHE NIFI ? APACHE NIFI İŞLEMCİ ÖZELLİKLERİ

Merhaba, bu yazımda Apache Nifi’nin ne olduğunu ve Apache Nifi işlemci özelliklerini anlatacağım. Apache Nifi üzerinde çalışırken yeterli kaynak olmadığını fark ettim bu yüzden bu yazıyı sizinle paylaşmak istedim.

Apache Nifi Nedir ?

NiFi, sistemler arasındaki veri akışını otomatikleştirmek için inşa edilmiştir. Veri akışı (FlowFile) terimi çeşitli bağlamlarda kullanılsa da, burada sistemler arasında otomatik ve yönetilen bilgi akışı anlamına gelir. Apache Nifi verileri sistemden siteme verimli bir şekilde işlemek için açık kaynak sunan bir teknoloji aracıdır.

Neden Apache Nifi ?

  • Kaynaktan alınan verinin yapısı ile hedefteki veri yapısının farklı olma durumlarını tolere edebilir.
  • Verinin taşınması esnasında akışın kapasitesini yönetebilir.
  • Veri akış hızı ile uyumlu bir şekilde çalışabilir.
  • Protokol ve format değişikliklerine uyum sağlayabilir.
  • Güvenliğe önem verir.
  • Akış sırasında veriler önceliklendirilebilir. Böylece önceliğe sahip olan verilere daha fazla buffer sağlanır.

Apache Nifi Kullanıcı Arayüzü

Nifi web tabanlı kullanıcı arayüzüne sahiptir ve böylece kullanıcı akış sırasında veri hareketini, hataları kolayca görebilir. Bu arayüz, uygulamayı çalıştırdıktan sonra 8080 portundan açılır.

Apache Nifi İşlemci

İşlemciler veri akışını oluşturmanın temelini oluşturan bileşenlerdir. İşlemciler ile verileri almak, dönüştürmek, sorgulamak, göndermek gibi işlemler yapılabilir. Apache Nifi veri işlemlerini yapabilmek için (bu yazıda) 260 işlemci sunar. İşlemciler arka planda çalışan JavaScript kütüphaneleriyle oluşturulmuştur ve XML veri tipinde bilgileri girerek veri akışı oluşturulur. Apache Nifi tarafından sunulan işlemciler bizim için yeterli olmadığı takdirde özel işlemcimizi geliştirebiliriz.

Şimdi her işlemci için ortak olan işlemci ayarlarını ve işlemci planlamasını tanıyalım.

İşlemci Ayarları

Penaulty Duration: Veri akışında sorun çıktığında Penaulty Duration ayarlanarak akışın kaç sn beklenilmesi gerektiği belirlenebilir ve FlowFile o süre boyunca işlenmez. Default değeri 30 saniyedir.

Yield Duration: Eğer işlemcinin ilerleme kaydedemediği durum olursa Yield Duration devreye girer. Örneğin PutSQL işlemcisi sunucuya bağlanamadığında Yield Duration’da ayarlanan zaman kadar işlemci bekler. Default değeri 1 saniyedir.

Bulletin Level: Her işlemci çalıştırıldığında bir bülten oluşur ve Bulletin Level değerini istenilen değere ayarlayarak bültende sonuçları izlenebilir. Örneğin bir sorun olduğunda bu hatanın kaynağını görebilmek için Bulletin Level değeri ‘debug’ olarak seçilebilir.

Automatically Terminate Relationship: Veri akışının tamamlanabilmesi için her bir işlemcinin diğer işlemcilerle bağlantı kurması gerekir. Bu kısımda FlowFile seçilen ilişki değerlerinden biri ile karşılaşırsa o FlowFile atlanır ve diğer işlemciye aktarılmaz.

İşlemci Planlaması

Timer Driven: İşlemcinin çalışması için zaman planlaması sağlar. Default değeri Timer Driven seçeneğidir. Bu seçenekle işlemci belirli aralıklarla çalışacak şekilde programlanır.

Concurrent Tasks: Bu kısımda aynı anda kaç FlowFile işleneceği belirlenir. Burdaki default değer artırılırsa işlemci kullanılmayan işlemcinin kaynağından kullanarak verileri işler.

Run Schedule: Bu alan işlemcinin ne kadar sürede bir çalışacağını belirler. Time Driven alanında CRON Driven seçeneği seçilirse Run Schedule kullanılamaz.

Run Duration: Bu kaydırıcı işlemci tetiklendiğinde işlemcinin ne kadar süre çalışacağını belirler. Kaydırıcının sol tarafı daha düşük gecikme anlamına gelir. Çünkü bir sonraki işlemci verileri uzun süre beklemez. Kaydırıcının sağ tarafı yüksek verim anlamına gelir. FlowFile’ın bir sonraki işlemciye aktarılma maliyeti yüksektir bu yüzden bir seferde ne kadar fazla FlowFile işenirse verim o kadar yüksek olur.

Nifi’de akışın gerçekleşebilmesi için işlemciler arasında bağlantı kurulması gerektiğini söylemiştik. Yukarıda iki işlemcinin bağlantı örneği verilmiştir. Back Pressure Object Threshold alanında diğer işlemciye geçmeden depolanabilecek FlowFile sayısı belirtilir. Default değeri 1000'dir. Size Threshold alanında ise işlenmeden önce sıraya alınabilecek maximum veri miktarı belirtilir. Sekmenin sağ tarafından ise kuyruktaki istenilen Flowfile’a öncelik verilebilir. Birden fazla öncelik seçilebilir. Öncelik sırası liste sırasına göredir.

Sonuç olarak Apache Nifi veri akışında ve veri işlemede bir çok kolaylık sağlayabilen bir teknolojidir. Artık Nifi’yi tanıyorsunuz ve denemelere başlayabilirsiniz.

İyi Çalışmalar 😊