Apache Nifi Nedir?

Burak Uğur
4 min readOct 3, 2023

--

Photo by israel palacio on Unsplash

Apache Nifi, açık kaynaklı bir veri entegrasyon ve akış işlem platformudur. NiFi’nin temel amacı, farklı veri kaynakları arasında veri akışlarını kolayca yönetmek, işlemek ve taşımak için bir hizmet sunmaktır.

  1. Veri Toplama ve Akış İşleme: NiFi, farklı kaynaklardan veri toplamak ve bu verileri işlemek için kullanılabilir. Sensörlerden, veritabanlarından, uygulamalardan veya diğer veri kaynaklarından gelen verileri yakalayabilir, temizleyebilir ve işleyebilirsiniz.
  2. Veri Entegrasyonu: Farklı veri formatları arasında dönüşüm yapabilir ve veri entegrasyonu işlemleri için kullanabilirsiniz. Örneğin, JSON verilerini XML’e dönüştürebilir veya farklı veri tabanları arasında veri aktarımı yapabilirsiniz.
  3. Veri Akışı Yönetimi: NiFi, veri akışlarını yönetmek için kullanışlı araçlar sunar. Verileri çeşitli işlem aşamalarından (filtreleme, düzenleme, zenginleştirme, güvenlik) geçirebilir ve hedef sistemlere iletebilirsiniz.
  4. Gerçek Zamanlı İşleme: NiFi, gerçek zamanlı veri işleme senaryoları için uygundur. Veriler anlık olarak işlenip iletilirken, gecikme sürelerini minimize edilebilir.

Processor, Processor Group ve Daha Fazlası

Processor’lar, görevleri otomatikleştirmenize, veri akışlarınızı işlemeye ve verileri istenen formata getirmenize olanak tanır. Özellikle veri entegrasyonu, veri akışı işleme ve ETL (Extract, Transform, Load) işlemleri için güçlü bir şekilde kullanılırlar. Apache NiFi, birçok yerleşik Processor ile birlikte gelir ve ayrıca özelleştirilmiş Processor’lar oluşturmanıza da olanak tanır.

Her Processor, belirli bir işlevi yerine getirir. Örneğin, veri çıkarma, veri dönüşümü, filtreleme, veri zenginleştirme, güvenlik işlemleri ve daha fazlası gibi farklı işlevleri olan Processor’lar bulunmaktadır. Kullanıcılar bu Processor’ları bağlayarak ve yapılandırarak veri akışları oluşturabilir ve verileri istedikleri biçimde işleyebilirler.

Processor Group’lar, aşağıdaki amaçlar için kullanılabilir:

  1. Modülerlik: Benzer işlemleri bir araya getirerek, bir Processor Group içindeki işlevselliği daha kolay anlayabilir ve yönetebilirsiniz. Ayrıca, bu modüler yapı sayesinde belirli işlemleri yeniden kullanabilirsiniz.
  2. İzolasyon: Her Processor Group, kendi ayarları, ilişkilendirmeleri ve izinleriyle birlikte gelir. Bu, farklı işlevlere sahip Processor Group’ları izole etmenizi sağlar, böylece hataların yayılmasını önler.
  3. Güvenlik ve İzinler: Processor Group’lar, işlevleri sınırlamak ve izinleri daha iyi yönetmek için kullanılır. Her Processor Group, kendi erişim izinleri ve güvenlik ayarlarına sahip olabilir.
  4. İzleme ve Yönetim: Processor Group’lar, NiFi akışınızı daha büyük ve karmaşık hale getirdiğinizde, işlevsellikleri daha kolay izlemenize ve yönetmenize yardımcı olur.
  5. Paralel İşleme: Processor Group’lar, işlevleri paralel olarak yürütmek için kullanılabilir. Belirli bir Processor Group içindeki işlemler, aynı anda birden çok işlemciye yayılabilir.

Sık Kullanılan Processorlara Örnek

1. Invoke Http

Örnek Endpoint İsteği

Bir endpointe istek atmak için kullanılır. Endpointin döndüğü veri türünden cevap döner.

2. Split Record

Gelen veriyi böler. Record reader/writer avro, csv, json,xml, parguet olabilir. İhtiyacınıza uygun veri formatını seçmeniz gerekir.

3. SplitJson

Bu process json veri türünü ayırmamıza ve istediğimiz fieldları çekmemize yardımcı olur.

Jsonpath Expression” parametresi ile istediğiniz field’a erişebilirsiniz.

Jsonpath yapısı kullanılarak filtreleme yapılır.

Nifi üzerinde veri filtrelemek için kendine özel dil olan Nifi Expression Language kullanılır.

4. PutDatabaseRecord

Veritabanlarına veri yazmak için kullanılır. Özellikle ETL işlemleri için kullanılır ve veri tabanlarında veri depolama amaçları için kullanışlıdır.

Record Reader: Gelen verinin hangi türde olduğunu belirler

Statement Type: Veritabanına hangi CRUD işleminin yapılacağını belirler.

Table Name: Verilerin hangi tabloya yazılacağını belirler.

Database Connection Pooling Service: veritabanı erişim bilgilerini içerir.

Diğer Processorler

  1. SplitText: Metin verilerini belirli bir ayırıcıya göre bölmek için kullanılır. Özellikle log dosyaları veya CSV dosyaları gibi metin tabanlı verileri işlerken kullanışlıdır.
  2. MergeContent: Birden çok akışı birleştirmek için kullanılır. Özellikle paralel işlem gerektiren veri işleme görevlerinde kullanılır.
  3. UpdateAttribute: Bu Processor, akış içindeki özellikleri güncellemek için kullanılır. Özellikle akış içindeki verileri dönüştürme veya zenginleştirme işlemlerinde kullanılır.
  4. RouteOnAttribute: Akış içindeki özelliklere dayalı olarak belirli koşullara göre yönlendirme yapar. Özellikle filtreleme ve yönlendirme görevleri için kullanılır.
  5. ExecuteScript: Bu Processor, kullanıcı tarafından yazılan betikleri çalıştırmak için kullanılır. Python, Groovy, Ruby gibi dilleri destekler ve özelleştirilmiş işlemler için kullanılır.
  6. ListenHTTP ve HandleHttpRequest: Bu Processor’lar, HTTP isteklerini dinlemek ve işlemek için kullanılır. Özellikle dış dünyadan gelen HTTP isteklerini işlemek için kullanışlıdır.
  7. GetKafka ve PublishKafka: Apache Kafka ile entegrasyon için kullanılır. Kafka akışlarından veri alma ve Kafka’ya veri gönderme işlemlerini gerçekleştirir.

Artık Apache Nifi hakkında temel bilgilere sahipsiniz. Bunu bir uygulama yaparak pekiştirmelisiniz.

--

--