Apache NiFi - Hızlı Kılavuz
Apache NiFi, verileri farklı sistemler arasında işlemek ve dağıtmak için güçlü, kullanımı kolay ve güvenilir bir sistemdir. NSA tarafından geliştirilen ve ardından 8 yıl sonra Apache Software vakfına bağışlanan Niagara Files teknolojisine dayanmaktadır. Apache Lisans Sürümü 2.0, Ocak 2004 altında dağıtılmaktadır. Apache NiFi'nin en son sürümü 1.7.1'dir.
Apache NiFi, farklı kaynaklar ve hedef sistemler arasında veri aktarımını aktarabilen ve yönetebilen gerçek zamanlı bir veri alma platformudur. Kayıtlar, coğrafi konum verileri, sosyal beslemeler vb. Gibi çok çeşitli veri formatlarını destekler. Ayrıca SFTP, HDFS ve KAFKA gibi birçok protokolü destekler. Bu, çok çeşitli veri kaynakları ve protokoller için destek bu platformu popüler kılar birçok BT kuruluşu.
Apache NiFi- Genel Özellikler
Apache NiFi'nin genel özellikleri aşağıdaki gibidir -
Apache NiFi, tasarım, kontrol, geri bildirim ve izleme arasında sorunsuz deneyim sağlayan web tabanlı bir kullanıcı arayüzü sağlar.
Oldukça yapılandırılabilir. Bu, kullanıcılara garantili teslimat, düşük gecikme, yüksek verim, dinamik önceliklendirme, geri basınç ve çalışma zamanında akışları değiştirme konusunda yardımcı olur.
Ayrıca, akışın başından sonuna kadar verileri izlemek ve izlemek için veri kaynağı modülü sağlar.
Geliştiriciler, ihtiyaçlarına göre kendi özel işlemcilerini ve raporlama görevlerini oluşturabilirler.
NiFi ayrıca SSL, HTTPS, SSH ve diğer şifrelemeler gibi güvenli protokoller için destek sağlar.
Ayrıca kullanıcı ve rol yönetimini destekler ve ayrıca yetkilendirme için LDAP ile yapılandırılabilir.
Apache NiFi -Anahtar Kavramlar
Apache NiFi'nin temel kavramları aşağıdaki gibidir -
Process Group - Bir kullanıcının akışları hiyerarşik bir şekilde yönetmesine ve sürdürmesine yardımcı olan bir NiFi akışı grubudur.
Flow - Gerektiğinde verileri bir veri kaynağından veya kaynaklardan başka bir hedef veri kaynaklarına aktarmak ve değiştirmek için farklı işlemcileri bağlayarak oluşturulur.
Processor- İşlemci, kaynak bulma sisteminden veri almaktan veya hedef sistemde depolamaktan sorumlu bir java modülüdür. Diğer işlemciler de akış dosyasında öznitelik eklemek veya içeriği değiştirmek için kullanılır.
Flowfile- NiFi'de kaynak sistemden toplanan verilerin tek nesnesini temsil eden NiFi'nin temel kullanımıdır. NiFiprocessor, kaynak işlemciden hedefe hareket ederken akış dosyasında değişiklikler yapar. CREATE, CLONE, RECEIVE, vb. Gibi farklı olaylar, bir akıştaki farklı işlemciler tarafından akış dosyası üzerinde gerçekleştirilir.
Event- Olaylar, bir NiFi Akışı içinden geçerken akış dosyasındaki değişikliği temsil eder. Bu olaylar veri kaynağında izlenir.
Data provenance - Bir havuzdur.Ayrıca, kullanıcıların bir akış dosyası hakkındaki bilgileri kontrol etmelerini sağlayan ve bir akış dosyasının işlenmesi sırasında ortaya çıkan herhangi bir sorun varsa sorun gidermeye yardımcı olan bir UI'ye sahiptir.
Apache NiFi Avantajları
Apache NiFi, SFTP kullanarak uzak makinelerden veri alınmasını sağlar ve veri kökenini garanti eder.
Apache NiFi, kümelemeyi destekler, böylece farklı verileri işleyen aynı akışa sahip birden çok düğümde çalışabilir ve bu da veri işleme performansını artırır.
Ayrıca kullanıcı seviyesinde, süreç grubu seviyesinde ve diğer modüller üzerinde de güvenlik politikaları sağlar.
Kullanıcı arabirimi, kullanıcıların NiFi ile etkileşimini güvenli hale getiren HTTPS üzerinde de çalışabilir.
NiFi, yaklaşık 188 işlemciyi destekler ve bir kullanıcı, çok çeşitli veri sistemlerini desteklemek için özel eklentiler de oluşturabilir.
Apache NiFi Dezavantajları
Bir kullanıcı içinde herhangi bir değişiklik yaparken düğümün NiFi kümesinden bağlantısı kesildiğinde, flow.xml geçersiz hale gelir. Yönetici, flow.xml'yi bağlı düğümden manuel olarak kopyalamadıkça, anot kümeye geri bağlanamaz.
Apache NiFi, birincil düğüm anahtarı durumunda, bazen işlemcilerin kaynak sistemlerinden veri alamamasına neden olan durum sürekliliği sorununa sahiptir.
Apache NiFi, Java Virtual Machine üzerinde çalışan bir web sunucusu, akış denetleyicisi ve bir işlemciden oluşur. Ayrıca aşağıdaki şekilde gösterildiği gibi 3 havuzlu Flowfile Repository, Content Repository ve Provenance Repository vardır.
Akış Dosyası Deposu
Bu depo, apache NiFi'nin veri akışlarından geçen her akış dosyasının mevcut durumunu ve özniteliklerini depolar. Bu deponun varsayılan konumu apache NiFi'nin kök dizinindedir. Bu deponun konumu, "nifi.flowfile.repository.directory" adlı özellik değiştirilerek değiştirilebilir.
İçerik Havuzu
Bu depo, NiFi'nin tüm akış dosyalarında bulunan tüm içeriği içerir. Varsayılan dizini de NiFi'nin kök dizinindedir ve "org.apache.nifi.controller.repository.FileSystemRepository" özelliği kullanılarak değiştirilebilir. Bu dizin diskte geniş alan kullanır, bu nedenle kurulum diskinde yeterli alan olması önerilir.
Provenance Repository
Depo, NiFi'de akan tüm akış dosyalarının tüm olaylarını izler ve depolar. İki kaynak deposu vardır -volatile provenance repository (bu havuzda tüm provenans verileri yeniden başlatıldıktan sonra kaybolur) ve persistent provenance repository. Varsayılan dizini de NiFi'nin kök dizinindedir ve ilgili depolar için "org.apache.nifi.provenance.PersistentProvenanceRepository" ve "org.apache.nifi.provenance.VolatileProvenanceRepositor" özelliği kullanılarak değiştirilebilir.
Bu bölümde, Apache NiFi'nin ortam kurulumu hakkında bilgi edineceğiz. Apache NiFi'nin kurulum adımları aşağıdaki gibidir -
Step 1- Bilgisayarınıza Java'nın güncel sürümünü yükleyin. Lütfen makinenizdeki JAVA_HOME'u ayarlayın. Sürümü aşağıda gösterildiği gibi kontrol edebilirsiniz:
Windows İşletim Sisteminde (OS) (komut istemini kullanarak) -
> java -version
UNIX OS'de (Terminal Kullanarak):
$ echo $JAVA_HOME
Step 2 - Apache NiFi'yi şuradan indirin https://nifi.apache.org/download.html
Windows işletim sistemi için ZIP dosyasını indirin.
UNIX OS için TAR dosyasını indirin.
Docker görüntüleri için aşağıdaki bağlantıya gidin https://hub.docker.com/r/apache/nifi/.
Step 3- Apache NiFi'nin kurulum süreci çok kolaydır. İşlem, işletim sistemine göre farklılık gösterir -
Windows OS - Zip paketini açın ve Apache NiFi kurulur.
UNIX OS - Tar dosyasını herhangi bir konumda çıkarın ve Logstash kurulur.
$tar -xvf nifi-1.6.0-bin.tar.gz
Step 4- Komut istemini açın, NiFi'nin bin dizinine gidin. Örneğin, C: \ nifi-1.7.1 \ bin ve run-nifi.bat dosyasını yürütün.
C:\nifi-1.7.1\bin>run-nifi.bat
Step 5- NiFi kullanıcı arayüzünü kurmak birkaç dakika sürecektir. Bir kullanıcı nifi-app.log'u kontrol edebilir, NiFi UI açıldığında, kullanıcı girebilirhttp://localhost:8080/nifi/ UI'ye erişmek için.
Apache, web kullanıcı arayüzü kullanan bir kullanıcı tarafından erişilebilen web tabanlı bir platformdur. NiFi kullanıcı arayüzü çok etkileşimlidir ve NiFi hakkında çok çeşitli bilgiler sağlar. Aşağıdaki resimde gösterildiği gibi, bir kullanıcı aşağıdaki özniteliklerle ilgili bilgilere erişebilir -
- Aktif Konular
- Toplam sıradaki veriler
- Uzak İşlem Gruplarını İletme
- Uzak İşlem Gruplarını Aktarmama
- Çalışan Bileşenler
- Durdurulan Bileşenler
- Geçersiz Bileşenler
- Devre Dışı Bırakılan Bileşenler
- Güncel Versiyonlu İşlem Grupları
- Yerel olarak değiştirilmiş Versiyonlu İşlem Grupları
- Eski Sürümlü İşlem Grupları
- Yerel olarak değiştirilmiş ve Eski Sürümlü İşlem Grupları
- Senkronizasyon hatası Versiyonlu İşlem Grupları
Apache NiFi Bileşenleri
Apache NiFi UI aşağıdaki bileşenlere sahiptir -
İşlemciler
Kullanıcı, işlem simgesini tuval üzerine sürükleyebilir ve NiFi'deki veri akışı için istenen işlemciyi seçebilir.
Giriş bağlantı noktası
Giriş bağlantı noktasını herhangi bir veri akışına eklemek için aşağıdaki simge tuvale sürüklenir.
Giriş portu, o işlem grubunda bulunmayan işlemciden veri almak için kullanılır.
Bu simgeyi sürükledikten sonra NiFi, Giriş bağlantı noktasının adını girmenizi ister ve ardından NiFi tuvaline eklenir.
Çıkış bağlantı noktası
Aşağıdaki simge, çıktı bağlantı noktasını herhangi bir veri akışına eklemek için tuvale sürüklenir.
Çıkış bağlantı noktası, işlem grubunda bulunmayan işlemciye veri aktarmak için kullanılır.
Bu simgeyi sürükledikten sonra NiFi, Çıkış bağlantı noktasının adını girmenizi ister ve ardından NiFi tuvaline eklenir.
Proses Grubu
Bir kullanıcı, NiFi tuvaline işlem grubu eklemek için aşağıdaki simgeyi kullanır.
Bu simgeyi sürükledikten sonra NiFi, İşlem Grubunun adını girmenizi ister ve ardından NiFi tuvaline eklenir.
Uzak İşlem Grubu
Bu, NiFi tuvaline Uzak işlem grubu eklemek için kullanılır.
Huni
Huni, bir işlemcinin çıktısını birden çok işlemciye aktarmak için kullanılır. Kullanıcı, huniyi NiFi veri akışına eklemek için aşağıdaki simgeyi kullanabilir.
Şablon
Bu simge, NiFi tuvaline bir veri akışı şablonu eklemek için kullanılır. Bu, veri akışını aynı veya farklı NiFi örneklerinde yeniden kullanmaya yardımcı olur.
Sürükledikten sonra, kullanıcı NiFi'ye önceden eklenmiş şablonları seçebilir.
Etiket
Bunlar, NiFi'de bulunan herhangi bir bileşen hakkında NiFi tuvaline metin eklemek için kullanılır. Estetik bir his katmak için kullanıcı tarafından kullanılan bir dizi renk sunar.
Apache NiFi işlemcileri, veri akışı oluşturmanın temel bloklarıdır. Her işlemcinin farklı işlevleri vardır ve bu da çıktı akış dosyasının oluşturulmasına katkıda bulunur. Aşağıdaki resimde gösterilen veri akışı, GetFile işlemcisini kullanarak bir dizinden dosya alıyor ve PutFile işlemcisini kullanarak başka bir dizinde depoluyor.
Dosyayı al
GetFile işlemi, belirli bir formattaki dosyaları belirli bir dizinden almak için kullanılır. Ayrıca, getirme üzerinde daha fazla kontrol için kullanıcıya başka seçenekler de sağlar. Bunu aşağıdaki özellikler bölümünde tartışacağız.
GetFile Ayarları
Aşağıda GetFile işlemcisinin farklı ayarları verilmiştir -
İsim
Ad ayarında bir kullanıcı, projeye göre veya buna göre işlemciler için herhangi bir ad tanımlayabilir, bu da adı daha anlamlı hale getirir.
etkinleştirme
Bir kullanıcı bu ayarı kullanarak işlemciyi etkinleştirebilir veya devre dışı bırakabilir.
Ceza Süresi
Bu ayar, kullanıcının akış dosyası arızası durumunda ceza süresi süresini eklemesine izin verir.
Verim Süresi
Bu ayar, işlemcinin üretim süresini belirtmek için kullanılır. Bu süre içerisinde süreç tekrar programlanmaz.
Bülten Seviyesi
Bu ayar, o işlemcinin günlük seviyesini belirlemek için kullanılır.
İlişkileri Otomatik Olarak Sonlandırın
Bu, söz konusu sürecin mevcut tüm ilişkilerinin bir kontrol listesine sahiptir. Kutuları işaretleyerek, bir kullanıcı işlemciyi bu olayda akış dosyasını sonlandıracak ve akışta daha fazla göndermeyecek şekilde programlayabilir.
GetFile Planlama
Bunlar GetFile işlemcisi tarafından sunulan aşağıdaki planlama seçenekleridir -
Planlama Stratejisi
Bir CRON sürücüsü seçeneği belirleyerek, sürülen süreyi veya belirli bir CRON dizesini seçerek süreci zaman temelinde planlayabilirsiniz.
Eşzamanlı Görevler
Bu seçenek, bu işlemci için eşzamanlı görev programını tanımlamak için kullanılır.
Yürütme
Bir kullanıcı, bu seçeneği kullanarak işlemcinin tüm düğümlerde mi yoksa sadece Birincil düğümde mi çalıştırılacağını tanımlayabilir.
Programı Çalıştır
Zaman odaklı strateji için zamanı veya CRON güdümlü strateji için CRON ifadesini tanımlamak için kullanılır.
GetFile Özellikleri
GetFile, aşağıdaki görüntüde gösterildiği gibi, Giriş dizini ve Dosya Filtresi gibi Zorunlu Özellikler Yol Filtresi ve Maksimum dosya Boyutu gibi isteğe bağlı özelliklere sahiptir. Bir kullanıcı, bu özellikleri kullanarak dosya getirme sürecini yönetebilir.
GetFile Yorumları
Bu Bölüm, işlemci hakkındaki herhangi bir bilgiyi belirtmek için kullanılır.
PutFile
PutFile işlemcisi, dosyayı veri akışından belirli bir konuma depolamak için kullanılır.
PutFile Ayarları
PutFile işlemcisi aşağıdaki ayarlara sahiptir -
İsim
Ad ayarında, bir kullanıcı projeye göre veya adı daha anlamlı kılacak şekilde işlemciler için herhangi bir ad tanımlayabilir.
etkinleştirme
Bir kullanıcı bu ayarı kullanarak işlemciyi etkinleştirebilir veya devre dışı bırakabilir.
Ceza Süresi
Bu ayar, kullanıcının akış dosyası arızası durumunda ceza süresi süresini eklemesine izin verir.
Verim Süresi
Bu ayar, işlemcinin üretim süresini belirtmek için kullanılır. Bu süre içinde süreç tekrar planlanmaz.
Bülten Seviyesi
Bu ayar, o işlemcinin günlük seviyesini belirlemek için kullanılır.
İlişkileri Otomatik Olarak Sonlandırın
Bu ayarlarda, söz konusu sürecin mevcut tüm ilişkilerinin kontrol listesi bulunur. Kutuları işaretleyerek, kullanıcı işlemciyi bu olayda akış dosyasını sonlandıracak ve akışta daha fazla göndermeyecek şekilde programlayabilir.
PutFile Planlama
Bunlar, PutFile işlemcisi tarafından sunulan aşağıdaki planlama seçenekleridir -
Planlama Stratejisi
Süreci, CRON sürücüsü seçeneğini seçerek zamanlayıcıyla çalıştırılan veya belirli bir CRON dizesini seçerek zaman temelinde programlayabilirsiniz. Ayrıca, belirli bir olayda işlemciyi tetikleyecek olan Olay Odaklı Deneysel bir strateji de vardır.
Eşzamanlı Görevler
Bu seçenek, bu işlemci için eşzamanlı görev programını tanımlamak için kullanılır.
Yürütme
Bir kullanıcı, bu seçeneği kullanarak işlemciyi tüm düğümlerde mi yoksa yalnızca birincil düğümde mi çalıştıracağını tanımlayabilir.
Programı Çalıştır
Zamanlayıcı odaklı strateji için zamanı veya CRON güdümlü strateji için CRON ifadesini tanımlamak için kullanılır.
PutFile Özellikleri
PutFile işlemcisi, dosya aktarımı amacıyla çıktı dizinini belirtmek için Dizin ve aşağıdaki resimde gösterildiği gibi aktarımı yönetmek için diğerleri gibi özellikler sağlar.
PutFile Yorumları
Bu Bölüm, işlemci hakkındaki herhangi bir bilgiyi belirtmek için kullanılır.
Bu bölümde, Apache NiFi'de süreç kategorizasyonu tartışacağız.
Veri Alım İşlemcileri
Veri Besleme kategorisi altındaki işlemciler, verileri NiFi veri akışına almak için kullanılır. Bunlar esas olarak apache NiFi'deki herhangi bir veri akışının başlangıç noktasıdır. Bu kategorilere ait işlemcilerden bazıları GetFile, GetHTTP, GetFTP, GetKAFKA vb.
Yönlendirme ve Arabuluculuk İşlemcileri
Yönlendirme ve Arabuluculuk işlemcileri, akış dosyalarının niteliklerindeki veya içeriğindeki bilgilere göre akış dosyalarını farklı işlemcilere veya veri akışlarına yönlendirmek için kullanılır. Bu işlemciler ayrıca NiFi veri akışlarını kontrol etmekten de sorumludur. Bu kategoriye ait işlemcilerden bazıları RouteOnAttribute, RouteOnContent, ControlRate, RouteText vb.
Veritabanı Erişim İşlemcileri
Bu Veritabanı Erişimi kategorisinin işlemcileri, veri seçme veya ekleme veya veritabanından diğer SQL ifadelerini yürütme ve hazırlama becerisine sahiptir. Bu işlemciler çoğunlukla Apache NiFi'nin veri bağlantı havuzu denetleyicisi ayarını kullanır. Bu kategoriye ait işlemcilerden bazıları ExecuteSQL, PutSQL, PutDatabaseRecord, ListDatabaseTables vb.
Öznitelik Çıkarma İşlemcileri
Öznitelik Çıkarma İşlemcileri, NiFi veri akışında işlenen akış dosyası özniteliklerini çıkarmak, analiz etmek ve değiştirmekle sorumludur. Bu kategoriye ait işlemcilerden bazıları UpdateAttribute, EvaluateJSONPath, ExtractText, AttributesToJSON, vb.
Sistem Etkileşimi İşlemcileri
Sistem Etkileşimi işlemcileri, herhangi bir işletim sistemindeki işlemleri veya komutları çalıştırmak için kullanılır. Bu işlemciler ayrıca çeşitli sistemlerle etkileşim kurmak için birçok dilde komut dosyaları çalıştırır. Bu kategoriye ait işlemcilerden bazıları ExecuteScript, ExecuteProcess, ExecuteGroovyScript, ExecuteStreamCommand vb.
Veri Dönüştürme İşlemcileri
Veri Dönüşümüne ait işlemciler, akış dosyalarının içeriğini değiştirme yeteneğine sahiptir. Bunlar, bir kullanıcının HTTP işlemcisini çağırmak için bir HTTP gövdesi olarak akış dosyası göndermesi gerektiğinde normalde kullanılan bir akış dosyasının verilerini tamamen değiştirmek için kullanılabilir. Bu kategoriye ait işlemcilerden bazıları ReplaceText, JoltTransformJSON, vb.
Veri İşlemcileri Gönderme
Veri Gönderme İşlemcileri genellikle bir veri akışındaki son işlemcidir. Bu işlemciler, verileri hedef sunucuya depolamak veya bu sunucuya göndermekle sorumludur. Verileri başarıyla depoladıktan veya gönderdikten sonra, bu işlemciler başarı ilişkisiyle akış dosyasını DÜŞÜRÜR. Bu kategoriye ait işlemcilerden bazıları PutEmail, PutKafka, PutSFTP, PutFile, PutFTP vb.
Bölme ve Toplama İşlemcileri
Bu işlemciler, bir akış dosyasında bulunan içeriği bölmek ve birleştirmek için kullanılır. Bu kategoriye ait işlemcilerden bazıları SplitText, SplitJson, SplitXml, MergeContent, SplitContent vb.
HTTP İşlemcileri
Bu işlemciler HTTP ve HTTPS çağrılarıyla ilgilenir. Bu kategoriye ait işlemcilerden bazıları InvokeHTTP, PostHTTP, ListenHTTP vb .'dir.
AWS İşlemcileri
AWS işlemcileri, Amazon web hizmetleri sistemiyle etkileşimden sorumludur. Bu kategoriye ait işlemcilerden bazıları GetSQS, PutSNS, PutS3Object, FetchS3Object vb.
Bir Apache NiFi veri akışında akış dosyaları, işlemciler arasındaki ilişki kullanılarak doğrulanan bağlantı yoluyla bir işlemciden diğerine geçer. Bir bağlantı oluşturulduğunda, geliştirici bu işlemciler arasında bir veya daha fazla ilişki seçer.
Yukarıdaki resimde görebileceğiniz gibi, siyah dikdörtgendeki onay kutuları ilişkilerdir. Bir geliştirici bu onay kutularını seçerse, akış dosyası, ilişki başarılı olduğunda veya başarısız olduğunda veya her ikisinde de söz konusu işlemcide sona erecektir.
Başarı
Bir işlemci, herhangi bir veri kaynağından herhangi bir bağlantı, kimlik doğrulama veya başka bir hata almadan akış dosyası gibi bir depolama veya getirme verilerini başarıyla işlediğinde, akış dosyası başarı ilişkisine gider.
Başarısızlık
Bir işlemci, kimlik doğrulama hatası veya bağlantı sorunu gibi hatalar olmadan bir akış dosyasını işleyemediğinde, akış dosyası bir başarısızlık ilişkisine gider.
Bir geliştirici, akış dosyalarını bağlantıları kullanarak diğer işlemcilere de aktarabilir. Geliştirici bunu seçebilir ve yük dengeleyebilir, ancak yük dengeleme 1.8 sürümünde yayınlanmıştır ve bu eğitimde ele alınmayacaktır.
Yukarıdaki görüntüde görebileceğiniz gibi kırmızıyla işaretlenmiş bağlantı başarısızlık ilişkisine sahiptir, bu da hatalı tüm akış dosyalarının soldaki işlemciye gideceği ve sırasıyla hatasız tüm akış dosyalarının yeşil ile işaretlenmiş bağlantıya aktarılacağı anlamına gelir.
Şimdi diğer ilişkilere geçelim.
comms.failure
Bu ilişki, bir iletişim hatası nedeniyle uzak sunucudan bir Akış Dosyası alınamadığında karşılanır.
bulunamadı
Uzak sunucudan 'Bulunamadı' mesajı aldığımız herhangi bir Akış Dosyası şu adrese taşınacaktır: not.found ilişki.
izin reddedildi
NiFi, yetersiz izin nedeniyle uzak sunucudan bir akış dosyası alamadığında, bu ilişki üzerinden hareket edecektir.
Bir akış dosyası, Apache NiFi'de temel bir işleme varlığıdır. NiFi işlemcileri tarafından verileri işlemek için kullanılan veri içeriklerini ve nitelikleri içerir. Dosya içeriği normalde kaynak sistemlerden alınan verileri içerir. Apache NiFi FlowFile'ın en yaygın öznitelikleri şunlardır:
UUID
Bu, NiFi tarafından oluşturulan bir akış dosyasının benzersiz bir kimliği olan Evrensel Benzersiz Tanımlayıcı anlamına gelir.
Dosya adı
Bu öznitelik, o akış dosyasının dosya adını içerir ve herhangi bir dizin yapısı içermemelidir.
Dosya boyutu
Bir Apache NiFi FlowFile boyutunu içerir.
mime.type
Bu FlowFile'ın MIME Tipini belirtir.
yol
Bu öznitelik, bir akış dosyasının ait olduğu bir dosyanın göreceli yolunu içerir ve dosya adını içermez.
Apache NiFi veri akışı bağlantısı, büyük miktarda veri akışını işlemek için bir kuyruk sistemine sahiptir. Bu kuyruklar, işlemcinin bunları seri olarak işlemesine izin vermek için çok büyük miktarda FlowFiles işleyebilir.
Yukarıdaki görüntüdeki kuyruk, başarı ilişkisi ile aktarılan 1 akış dosyasına sahiptir. Bir kullanıcı, akış dosyasını seçerek kontrol edebilir.List queueaçılır listedeki seçeneği. Herhangi bir aşırı yüklenme veya hata durumunda, bir kullanıcı ayrıcaempty queue seçeneği ve ardından kullanıcı bu dosyaları veri akışında yeniden almak için akışı yeniden başlatabilir.
Bir kuyruktaki akış dosyalarının listesi, konum, UUID, Dosya adı, Dosya boyutu, Sıra Süresi ve Köken Süresinden oluşur. Bir kullanıcı, akış dosyası listesinin ilk sütununda bulunan bilgi simgesine tıklayarak akış dosyasının tüm özniteliklerini ve içeriğini görebilir.
Apache NiFi'de, bir kullanıcı farklı işlem gruplarında farklı veri akışlarını koruyabilir. Bu gruplar, farklı projelere veya Apache NiFi örneğinin desteklediği kuruluşlara dayalı olabilir.
NiFi arayüzünün üst kısmındaki menüdeki dördüncü sembol, yukarıdaki resimde gösterildiği gibi NiFi tuvaline bir işlem grubu eklemek için kullanılır. "Tutorialspoint.com_ProcessGroup" adlı süreç grubu, yukarıdaki resimde görebileceğiniz gibi, şu anda durdurma aşamasında olan dört işlemciye sahip bir veri akışı içerir. Veri akışlarını daha iyi bir yapıda yönetmek için hiyerarşik bir şekilde süreç grupları oluşturulabilir ve anlaşılması kolaydır.
NiFi UI altbilgisinde, işlem gruplarını görebilir ve bir kullanıcının şu anda içinde bulunduğu işlem grubunun en üstüne geri dönebilirsiniz.
NiFi'de bulunan işlem gruplarının tam listesini görmek için bir kullanıcı, NiFi kullanıcı arayüzünün sol üst tarafında bulunan menüyü kullanarak özete gidebilir. Özetle, aşağıdaki resimde gösterildiği gibi Sürüm Durumu, Aktarılan / Boyut, Giriş / Boyut, Okuma / Yazma, Çıkış / Boyut gibi parametrelerle tüm işlem gruplarının listelendiği işlem grupları sekmesi vardır.
Apache NiFi, geliştiricinin NiFI tuvalinde bulunan bileşenler hakkında bilgi yazmasını sağlamak için etiketler sunar. NiFi kullanıcı arayüzünün üst menüsünde en soldaki simge, etiketi NiFi tuvaline eklemek için kullanılır.
Bir geliştirici, etikete sağ tıklayarak etiketin rengini ve metnin boyutunu değiştirebilir ve menüden uygun seçeneği seçebilir.
Apache NiFi, oldukça yapılandırılabilir bir platformdur. Conf dizinindeki nifi.properties dosyası
yapılandırmanın çoğunu içerir.
Apache NiFi'nin yaygın olarak kullanılan özellikleri aşağıdaki gibidir -
Temel özellikler
Bu bölüm, bir NiFi örneğini çalıştırmak için zorunlu olan özellikleri içerir.
S.No. | Mülkiyet adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | nifi.flow.configuration.file | ./conf/flow.xml.gz | Bu özellik, flow.xml dosyasının yolunu içerir. Bu dosya, NiFi'de oluşturulan tüm veri akışlarını içerir. |
2 | nifi.flow.configuration.archive.enabled | doğru | Bu özellik, NiFi'de arşivlemeyi etkinleştirmek veya devre dışı bırakmak için kullanılır. |
3 | nifi.flow.configuration.archive.dir | ./conf/archive/ | Bu özellik, arşiv dizinini belirtmek için kullanılır. |
4 | nifi.flow.configuration.archive.max.time | 30 gün | Bu, içeriğin arşivlenmesi için saklama süresini belirtmek için kullanılır. |
5 | nifi.flow.configuration.archive.max.storage | 500 MB | maksimum arşivleme boyutunu içerir dizinin büyüyebilir. |
6 | nifi.authorizer.configuration.file | ./conf/authorizers.xml | Kullanıcı yetkilendirmesi için kullanılan yetkilendirici yapılandırma dosyasını belirtmek için. |
7 | nifi.login.identity.provider.configuration.file | ./conf/login-identity-providers.xml | Bu özellik, oturum açma kimliği sağlayıcılarının yapılandırmasını içerir, |
8 | nifi.templates.directory | ./conf/templates | Bu özellik, NiFi şablonlarının saklanacağı dizini belirtmek için kullanılır. |
9 | nifi.nar.library.directory | ./lib | Bu özellik, NiFi'nin bu kitaplık klasöründe bulunan NAR dosyalarını kullanarak tüm bileşenleri yüklemek için kullanacağı kitaplık yolunu içerir. |
10 | nifi.nar.working.directory | ./work/nar/ | Bu dizin, NiFi onları işlediğinde, paketlenmemiş nar dosyalarını depolayacaktır. |
11 | nifi.documentation.working.directory | ./work/docs/components | Bu dizin, tüm bileşenlerin belgelerini içerir. |
Durum Yönetimi
Bu özellikler, işlemenin başlatılmasına yardımcı olan bileşenlerin durumunu depolamak için kullanılır; burada bileşenler yeniden başlatıldıktan sonra ve sonraki programda çalışır.
S.No. | Mülkiyet adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | nifi.state.management.configuration.file | ./conf/state-management.xml | Bu özellik, state-management.xml dosyasının yolunu içerir. Bu dosya, söz konusu NiFi örneğinin veri akışlarında bulunan tüm bileşen durumunu içerir. |
2 | nifi.state.management.provider.local | yerel sağlayıcı | Yerel eyalet sağlayıcısının kimliğini içerir. |
3 | nifi.state.management.provider.cluster | zk-provider | Bu özellik, küme çapında durum sağlayıcısının kimliğini içerir. NiFi kümelenmemişse, ancak bir kümede çalışıyorsa doldurulması gerekiyorsa bu dikkate alınmayacaktır. |
4 | nifi.state.management. gömülü. hayvanat bahçesi görevlisi. Başlat | yanlış | Bu özellik, bu NiFi örneğinin katıştırılmış bir ZooKeeper sunucusu çalıştırıp çalıştırmayacağını belirtir. |
5 | nifi.state.management. gömülü. zookeeper.properties | ./conf/zookeeper.properties | Bu özellik, <nifi.state.management ise kullanılacak ZooKeeper özelliklerinin sağlayan özellikler dosyasının yolunu içerir. gömülü. hayvanat bahçesi görevlisi. start> true olarak ayarlandı. |
FlowFile Deposu
Şimdi FlowFile deposunun önemli ayrıntılarına bakalım -
S.No. | Mülkiyet adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | nifi.flowfile.repository. uygulama | org.apache.nifi. denetleyici. depo. WriteAhead FlowFileRepository | Bu özellik, akış dosyalarını bellekte veya diskte depolamayı belirtmek için kullanılır. Bir kullanıcı akış dosyalarını bellekte saklamak istiyorsa, "org.apache.nifi.controller. Repository.VolatileFlowFileRepository" olarak değiştirin. |
2 | nifi.flowfile.repository.directory | ./flowfile_repository | Akış dosyası havuzunun dizinini belirtmek için. |
Apache NiFi, yönetim amaçları için ambari, zookeeper gibi birden çok aracı destekler. NiFi ayrıca yöneticiler için HTTPS ve diğer şeyleri ayarlamak için nifi.properties dosyasında yapılandırma sağlar.
hayvanat bahçesi görevlisi
NiFi, kümedeki oylama sürecini kendisi yönetmez. Bu, bir küme oluşturulduğunda, tüm düğümlerin birincil ve koordinatör olduğu anlamına gelir. Bu nedenle, zookeeper, birincil düğüm ve koordinatörün oylamasını yönetmek için yapılandırılmıştır. Nifi.properties dosyası, zookeeper'ı kurmak için bazı özellikler içerir.
S.No. | Mülkiyet adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | nifi.state.management.embedded.zookeeper. özellikleri | ./conf/zookeeper.properties | Zookeeper özellik dosyasının yolunu ve adını belirtmek için. |
2 | nifi.zookeeper.connect.string | boş | Hayvan bakıcısının bağlantı dizesini belirtmek için. |
3 | nifi.zookeeper.connect.timeout | 3 saniye | Zookeeper'ın NiFi ile bağlantı zaman aşımını belirlemek için. |
4 | nifi.zookeeper.session.timeout | 3 saniye | NiFi ile zookeeper'ın oturum zaman aşımını belirlemek için. |
5 | nifi.zookeeper.root.node | / nifi | Zookeeper için kök düğümü belirtmek için. |
6 | nifi.zookeeper.auth.type | boş | Zookeeper için kimlik doğrulama türünü belirtmek için. |
HTTPS'yi etkinleştir
NiFi'yi HTTPS üzerinden kullanmak için, yöneticilerin anahtar deposu ve güven deposu oluşturması ve nifi.properties dosyasında bazı özellikleri ayarlaması gerekir. TLS araç takımı, apache NiFi'de HTTPS'yi etkinleştirmek için gerekli tüm anahtarları oluşturmak için kullanılabilir.
S.No. | Mülkiyet adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | nifi.web.https.port | boş | Https port numarasını belirtmek için. |
2 | nifi.web.https.network.interface.default | boş | NiFi'de https için varsayılan arayüz. |
3 | nifi.security.keystore | boş | Anahtar deposunun yolunu ve dosya adını belirtmek için. |
4 | nifi.security.keystoreType | boş | JKS gibi anahtar deposu türünü belirtmek için. |
5 | nifi.security.keystorePasswd | boş | Anahtar deposu şifresini belirlemek için. |
6 | nifi.security.truststore | boş | Truststore'un yolunu ve dosya adını belirtmek için. |
7 | nifi.security.truststoreType | boş | JKS gibi güven deposu türünü belirtmek için. |
8 | nifi.security.truststorePasswd | boş | Truststore şifresini belirlemek için. |
Yönetim için diğer özellikler
Yöneticiler tarafından NiFi'yi yönetmek ve hizmet sürekliliği için kullanılan başka özellikler de vardır.
S.No. | Mülkiyet adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | nifi.flowcontroller.graceful.shutdown.period | 10 saniye | NiFi akış kontrolörünü nazikçe kapatma zamanını belirlemek için. |
2 | nifi.administrative.yield.duration | 30 saniye | NiFi için idari getiri süresini belirtmek için. |
3 | nifi.authorizer.configuration.file | ./conf/authorizers.xml | Yetkilendirici yapılandırma dosyasının yolunu ve dosya adını belirtmek için. |
4 | nifi.login.identity.provider.configuration.file | ./conf/login-identity-providers.xml | Oturum açma kimliği sağlayıcısı yapılandırma dosyasının yolunu ve dosya adını belirtmek için. |
Apache NiFi, geliştiricilerin her tür protokol veya veri kaynağı için veri akışları oluşturmasına yardımcı olmak için çok sayıda bileşen sunar. Bir geliştirici, akış oluşturmak için bileşenleri menü çubuğundan tuvale sürükler ve fareyi tıklayıp bir bileşenden diğerine sürükleyerek bunları birbirine bağlar.
Genel olarak, bir NiFi'nin akışın başlangıcında, verileri kaynak sistemden alan getfile gibi bir dinleyici bileşeni vardır. Diğer ucunda putfile gibi bir verici bileşen ve arada veriyi işleyen bileşenler vardır.
Örneğin, bir dizinden boş bir dosya alan ve bu dosyaya bir miktar metin ekleyip başka bir dizine koyan bir akış oluşturalım.
Başlamak için, işlemci simgesini NiFi tuvaline sürükleyin ve listeden GetFile işlemcisini seçin.
Gibi bir giriş dizini oluşturun c:\inputdir.
İşlemciye sağ tıklayın ve yapılandırmayı seçin ve özellikler sekmesinde ekleyin Input Directory (c:\inputdir) ve uygula'yı tıklayın ve tuvale geri dönün.
İşlemci simgesini tuvale sürükleyin ve listeden ReplaceText işlemcisini seçin.
İşlemciye sağ tıklayın ve yapılandırmayı seçin. İçindeproperties sekmesi gibi bir metin ekleyin “Hello tutorialspoint.com” Değiştirme Değeri metin kutusunda ve uygula'yı tıklayın.
Ayarlar sekmesine gidin, sağ taraftaki hata onay kutusunu işaretleyin ve ardından tuvale geri dönün.
Başarı ilişkisinde GetFIle işlemcisini ReplaceText'e bağlayın.
İşlemci simgesini tuvale sürükleyin ve listeden PutFile işlemcisini seçin.
Gibi bir çıktı dizini oluşturun c:\outputdir.
İşlemciye sağ tıklayın ve yapılandırmayı seçin. Özellikler sekmesinde şunu ekleyin:Directory (c:\outputdir) ve uygula'yı tıklayın ve tuvale geri dönün.
Ayarlar sekmesine gidin ve sağ taraftaki başarısızlık ve başarı onay kutusunu işaretleyin ve ardından tuvale geri dönün.
Başarı ilişkisi için ReplaceText işlemcisini PutFile'a bağlayın.
Şimdi akışı başlatın ve giriş dizinine boş bir dosya ekleyin ve göreceksiniz ki, çıktı dizinine taşınacak ve metin dosyaya eklenecektir.
Yukarıdaki adımları izleyerek, geliştiriciler kuruluşları veya müşterileri için uygun akış oluşturmak için herhangi bir işlemciyi ve diğer NiFi bileşenlerini seçebilirler.
Apache NiFi, NiFi akışlarının yeniden kullanılmasını ve dağıtılmasını kolaylaştıran Şablonlar konseptini sunar. Akışlar, diğer geliştiriciler tarafından veya diğer NiFi kümelerinde kullanılabilir. Ayrıca NiFi geliştiricilerinin çalışmalarını GitHub gibi depolarda paylaşmalarına yardımcı olur.
Şablon Oluşturun
Akış için 15. Bölüm “Apache NiFi - Akış Oluşturma” bölümünde oluşturduğumuz bir şablon oluşturalım.
Shift tuşunu kullanarak akışın tüm bileşenlerini seçin ve ardından NiFi tuvalinin sol tarafındaki şablon oluştur simgesine tıklayın. Yukarıdaki resimde gösterildiği gibi bir araç kutusu da görebilirsiniz. Simgeye tıklayıncreate templateyukarıdaki resimde olduğu gibi mavi ile işaretlenmiştir. Şablonun adını girin. Bir geliştirici, isteğe bağlı bir açıklama da ekleyebilir.
Şablonu İndir
Ardından, aşağıdaki resimde gösterildiği gibi NiFi UI'nin sağ üst köşesinde bulunan menüdeki NiFi şablonları seçeneğine gidin.
Şimdi indirmek istediğiniz şablonun indirme simgesine (listede sağ tarafta bulunur) tıklayın. Şablon adına sahip bir XML dosyası indirilecektir.
Şablon Yükle
NiFi'de bir şablon kullanmak için, geliştiricinin xml dosyasını UI kullanarak NiFi'ye yüklemesi gerekir. Şablon Oluştur simgesinin yanında bir Şablon Yükle simgesi (aşağıdaki resimde mavi ile işaretlenmiştir) buna tıklayın ve xml'ye göz atın.
Şablon Ekle
NiFi kullanıcı arayüzünün üst araç çubuğunda, şablon simgesi etiket simgesinin önündedir. Simge, aşağıdaki resimde gösterildiği gibi mavi ile işaretlenmiştir.
Şablon simgesini sürükleyin ve açılır listeden şablonu seçin ve ekle'yi tıklayın. Şablonu NiFi tuvaline ekleyecektir.
NiFi, geliştiricilerin değişiklik yapmasına ve başka herhangi bir araçtan veya özel olarak geliştirilmiş uygulamalardan NiFi hakkında bilgi almasına yardımcı olan çok sayıda API sunar. Bu eğiticide, bazı örnekleri açıklamak için google chrome'daki postman uygulamasını kullanacağız.
Google Chrome'unuza postacı eklemek için, aşağıda belirtilen URL'ye gidin ve Chrome'a ekle düğmesini tıklayın. Şimdi Google Chrome'unuza eklenen yeni bir uygulama göreceksiniz.
chrome web mağazası
NiFi rest API'nin güncel sürümü 1.8.0'dır ve belgeler aşağıda belirtilen URL'de mevcuttur.
https://nifi.apache.org/docs/nifi-docs/rest-api/index.html
Aşağıda en çok kullanılan NiFi dinlenme API Modülleri verilmiştir -
http: // <nifi url>: <nifi bağlantı noktası> / nifi-api / <api-path>
HTTPS'nin etkinleştirilmesi durumunda https: // <nifi url>: <nifi port> / nifi-api / <api-path>
S.No. | API modülü Adı | api yolu | Açıklama |
---|---|---|---|
1 | Giriş | /Giriş | Kullanıcının kimliğini doğrulamak ve NiFi'den erişim belirteci almak için. |
2 | Kontrolör | / controller | Kümeyi yönetmek ve raporlama görevi oluşturmak için. |
3 | Kontrolör Hizmetleri | / controller-services | Denetleyici hizmetlerini yönetmek ve denetleyici hizmet referanslarını güncellemek için kullanılır. |
4 | Raporlama Görevleri | / raporlama-görevleri | Raporlama görevlerini yönetmek için. |
5 | Akış | / akış | Veri akışı meta verilerini ve bileşen durumunu ve sorgu geçmişini almak için |
6 | İşlem Grupları | / işlem grupları | Bir şablon yüklemek ve somutlaştırmak ve bileşenler oluşturmak için. |
7 | İşlemciler | / işlemciler | Bir işlemci oluşturmak ve planlamak ve özelliklerini ayarlamak için. |
8 | Bağlantılar | / bağlantılar | Bir bağlantı oluşturmak için kuyruk önceliğini ayarlayın ve bağlantı hedefini güncelleyin |
9 | FlowFile Sıraları | / flowfile-queues | Sıra içeriğini görüntülemek için akış dosyası içeriğini indirin ve boş kuyruğu. |
10 | Uzak İşlem Grupları | / uzaktan işlem grupları | Uzak bir grup oluşturmak ve iletimi etkinleştirmek için. |
11 | Kaynak | / provenance | Köken sorgulamak ve olay kökenini aramak için. |
Şimdi bir örnek ele alalım ve çalışan NiFi örneğiyle ilgili ayrıntıları almak için postacıya geçelim.
İstek
GET http://localhost:8080/nifi-api/flow/about
Tepki
{
"about": {
"title": "NiFi",
"version": "1.7.1",
"uri": "http://localhost:8080/nifi-api/",
"contentViewerUrl": "../nifi-content-viewer/",
"timezone": "SGT",
"buildTag": "nifi-1.7.1-RC1",
"buildTimestamp": "07/12/2018 12:54:43 SGT"
}
}
Apache NiFi, akışta alınan verilerde gerçekleşen olaylar hakkındaki her bilgiyi günlüğe kaydeder ve saklar. Veri kaynağı deposu bu bilgiyi depolar ve bu olay bilgisini aramak için kullanıcı arayüzü sağlar. Veri kaynağına tam NiFi seviyesi ve işlemci seviyesi için de erişilebilir.
Aşağıdaki tabloda, NiFi Veri Kaynağı olay listesindeki farklı alanlar aşağıdaki alanlara sahiptir:
S.No. | Alan adı | Açıklama |
---|---|---|
1 | Tarih / Saat | Olayın tarihi ve saati. |
2 | Tür | "OLUŞTUR" gibi Etkinlik türü. |
3 | FlowFileUuid | Olayın gerçekleştirildiği akış dosyasının UUID'si. |
4 | Boyut | Akış dosyasının boyutu. |
5 | Bileşen Adı | Etkinliği gerçekleştiren bileşenin adı. |
6 | Bileşen Tipi | Bileşenin türü. |
7 | Köken göster | Son sütun, aşağıdaki resimde gösterildiği gibi akış dosyası kökenini görmek için kullanılan köken göster simgesine sahiptir. |
Olay hakkında daha fazla bilgi almak için, bir kullanıcı NiFi Veri Kaynağı Kullanıcı Arayüzünün ilk sütununda bulunan bilgi simgesine tıklayabilir.
NiFi Data Provenance deposunu yönetmek için kullanılan nifi.properties dosyasında bazı özellikler vardır.
S.No. | Mülkiyet adı | Varsayılan değer | Açıklama |
---|---|---|---|
1 | nifi.provenance.repository.directory.default | ./provenance_repository | NiFi veri kaynağının varsayılan yolunu belirlemek için. |
2 | nifi.provenance.repository.max.storage.time | 24 saat | NiFi veri kaynağının maksimum saklama süresini belirlemek için. |
3 | nifi.provenance.repository.max.storage.size | 1 GB | NiFi veri kaynağının maksimum depolanmasını belirlemek için. |
4 | nifi.provenance.repository.rollover.time | 30 saniye | NiFi veri kaynağının rollover süresini belirlemek için. |
5 | nifi.provenance.repository.rollover.size | 100 MB | NiFi veri kaynağının rollover boyutunu belirlemek için. |
6 | nifi.provenance.repository.indexed.fields | EventType, FlowFileUUID, Filename, ProcessorID, İlişki | NiFi veri kaynağını aramak ve indekslemek için kullanılan alanları belirtmek için. |
Apache NiFi'de, hatalar, bellek kullanımı, CPU kullanımı, Veri Akışı istatistikleri vb. Gibi sistemin farklı istatistiklerini izlemenin birden çok yolu vardır. Bu eğitimde en popüler olanları tartışacağız.
Dahili İzleme
Bu bölümde, Apache NiFi'de yerleşik izleme hakkında daha fazla bilgi edineceğiz.
Bülten Panosu
Bülten panosu, NiFi işlemcileri tarafından gerçek zamanlı olarak üretilen en son HATA ve UYARI'yı gösterir. Bülten tahtasına erişmek için, bir kullanıcının sağdaki açılır menüye gitmesi ve Bülten Tahtası seçeneğini seçmesi gerekecektir. Otomatik olarak yenilenir ve bir kullanıcı da devre dışı bırakabilir. Bir kullanıcı ayrıca hatayı çift tıklayarak gerçek işlemciye gidebilir. Bir kullanıcı ayrıca aşağıdakilerle çalışarak bültenleri filtreleyebilir -
- mesajla
- isimle
- id ile
- grup kimliğine göre
Veri kaynağı kullanıcı arayüzü
Herhangi bir işlemcide veya NiFi genelinde meydana gelen Olayları izlemek için, bir kullanıcı Veri kaynağına bülten panosuyla aynı menüden erişebilir. Bir kullanıcı ayrıca aşağıdaki alanlarla çalışarak veri kaynağı havuzundaki olayları filtreleyebilir:
- bileşen adına göre
- bileşen türüne göre
- türe göre
NiFi Özet Kullanıcı Arayüzü
Apache NiFi özetine, ilan panosuyla aynı menüden de erişilebilir. Bu kullanıcı arayüzü, söz konusu NiFi örneğinin veya kümesinin tüm bileşenleri hakkında bilgi içerir. Ada, türe veya URI'ye göre filtrelenebilirler. Farklı bileşen türleri için farklı sekmeler vardır. Aşağıdakiler, NiFi özet kullanıcı arayüzünde izlenebilen bileşenlerdir -
- Processors
- Giriş bağlantı noktaları
- Çıkış bağlantı noktaları
- Uzak süreç grupları
- Connections
- İşlem grupları
Bu kullanıcı arayüzünde, JVM istatistiklerini kontrol etmek için sağ alt tarafta sistem teşhisi adlı bir bağlantı vardır.
Raporlama Görevleri
Apache NiFi, Ambari, Grafana, vb. Gibi harici izleme sistemlerini desteklemek için birden fazla raporlama görevi sağlar. Bir geliştirici, özel bir raporlama görevi oluşturabilir veya NiFi'nin ölçümlerini harici izleme sistemlerine göndermek için dahili olanları yapılandırabilir. Aşağıdaki tablo, NiFi 1.7.1 tarafından sunulan raporlama görevlerini listelemektedir.
S.No. | Raporlama Görevi Adı | Açıklama |
---|---|---|
1 | AmbariReportingTask | NiFi için Ambari Metrics Service'i kurmak için. |
2 | ControllerStatusReportingTask | Bilgileri NiFi özet kullanıcı arayüzünden son 5 dakika için bildirmek için. |
3 | MonitorDiskUsage | Belirli bir dizinin disk kullanımını bildirmek ve uyarmak için. |
4 | MonitorMemory | JVM'nin Java Bellek havuzunda kullanılan Java Yığını miktarını izlemek için. |
5 | SiteToSite BültenRaporlamaTask | Site to Site protokolünü kullanarak bültenlerdeki hataları ve uyarıları bildirmek. |
6 | SiteToSiteProvenanceReportingTask | Siteden Siteye protokolünü kullanarak NiFi Veri Kaynağı olaylarını bildirmek için. |
NiFi API
Herhangi bir özel geliştirilmiş uygulamada NiFI istatistiklerini izlemek için kullanılabilen, API adlı bir sistem teşhisi vardır. Postacıda API'yi kontrol edelim.
İstek
http://localhost:8080/nifi-api/system-diagnostics
Tepki
{
"systemDiagnostics": {
"aggregateSnapshot": {
"totalNonHeap": "183.89 MB",
"totalNonHeapBytes": 192819200,
"usedNonHeap": "173.47 MB",
"usedNonHeapBytes": 181894560,
"freeNonHeap": "10.42 MB",
"freeNonHeapBytes": 10924640,
"maxNonHeap": "-1 bytes",
"maxNonHeapBytes": -1,
"totalHeap": "512 MB",
"totalHeapBytes": 536870912,
"usedHeap": "273.37 MB",
"usedHeapBytes": 286652264,
"freeHeap": "238.63 MB",
"freeHeapBytes": 250218648,
"maxHeap": "512 MB",
"maxHeapBytes": 536870912,
"heapUtilization": "53.0%",
"availableProcessors": 4,
"processorLoadAverage": -1,
"totalThreads": 71,
"daemonThreads": 31,
"uptime": "17:30:35.277",
"flowFileRepositoryStorageUsage": {
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
},
"contentRepositoryStorageUsage": [
{
"identifier": "default",
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
}
],
"provenanceRepositoryStorageUsage": [
{
"identifier": "default",
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
}
],
"garbageCollection": [
{
"name": "G1 Young Generation",
"collectionCount": 344,
"collectionTime": "00:00:06.239",
"collectionMillis": 6239
},
{
"name": "G1 Old Generation",
"collectionCount": 0,
"collectionTime": "00:00:00.000",
"collectionMillis": 0
}
],
"statsLastRefreshed": "09:30:20 SGT",
"versionInfo": {
"niFiVersion": "1.7.1",
"javaVendor": "Oracle Corporation",
"javaVersion": "1.8.0_151",
"osName": "Windows 7",
"osVersion": "6.1",
"osArchitecture": "amd64",
"buildTag": "nifi-1.7.1-RC1",
"buildTimestamp": "07/12/2018 12:54:43 SGT"
}
}
}
}
Apache NiFi'nin yükseltilmesine başlamadan önce, değişiklikler ve eklemeler hakkında bilgi edinmek için sürüm notlarını okuyun. Bir kullanıcının mevcut NiFi kurulumundaki bu eklemelerin ve değişikliklerin etkisini değerlendirmesi gerekir. Apache NiFi'nin yeni sürümleri için sürüm notlarını alma bağlantısı aşağıdadır.
https://cwiki.apache.org/confluence/display/NIFI/Release+Notes
Bir küme kurulumunda, bir kullanıcının bir kümedeki her Düğümün NiFi kurulumunu yükseltmesi gerekir. Apache NiFi'yi yükseltmek için aşağıda verilen adımları izleyin.
Mevcut NiFi veya lib veya başka bir klasörde bulunan tüm özel NAR'ları yedekleyin.
Apache NiFi'nin yeni sürümünü indirin. Aşağıda en son NiFi sürümünün kaynağını ve ikili dosyalarını indirme bağlantısı bulunmaktadır.
https://nifi.apache.org/download.html
Mevcut NiFi ile aynı kurulum dizininde yeni bir dizin oluşturun ve Apache NiFi'nin yeni sürümünü çıkartın.
NiFi'yi nazikçe durdurun. Önce tüm işlemcileri durdurun ve akışta bulunan tüm akış dosyalarının işlenmesine izin verin. Bir kez, artık akış dosyası yok, NiFi'yi durdurun.
Authorizers.xml yapılandırmasını mevcut NiFi kurulumundan yeni sürüme kopyalayın.
Yeni NiFi sürümünün bootstrap-notification-services.xml ve bootstrap.conf'undaki değerleri mevcut sürümden güncelleyin.
Logback.xml'deki özel günlük kaydını yeni NiFi kurulumuna ekleyin.
Oturum açma kimliği sağlayıcısını oturum açma kimliği sağlayıcıları.xml'de mevcut sürümden yapılandırın.
Mevcut sürümden yeni NiFi kurulumunun nifi.properties dosyasındaki tüm özellikleri güncelleyin.
İzin verilmeyen hataları önlemek için lütfen yeni sürümün grubu ve kullanıcısının mevcut sürümle aynı olduğundan emin olun.
Yapılandırmayı mevcut sürümün state-management.xml dosyasından yeni sürüme kopyalayın.
Aşağıdaki dizinlerin içeriğini mevcut NiFi kurulum sürümünden yeni sürümdeki aynı dizinlere kopyalayın.
./conf/flow.xml.gz
Ayrıca arşiv dizininden flow.xml.gz.
Kaynak ve içerik havuzları için nifi'deki değerleri değiştirin. özellikler dosyasını mevcut depolara aktarır.
durumu ./state/local'dan kopyala veya başka bir harici dizin belirtilmişse nifi.properties dosyasında değişiklik yap.
Gerçekleştirilen tüm değişiklikleri yeniden kontrol edin ve yeni NiFi sürümüne eklenen yeni değişiklikler üzerinde bir etkisi olup olmadığını kontrol edin. Herhangi bir etki varsa, çözümleri kontrol edin.
Tüm NiFi düğümlerini başlatın ve tüm akışların doğru çalışıp çalışmadığını ve depoların verileri depolayıp depolamadığını ve Ui'nin herhangi bir hatayla bunları geri aldığını doğrulayın.
Yeni hataları kontrol etmek için bültenleri bir süre izleyin.
Yeni sürüm düzgün çalışıyorsa, mevcut sürüm arşivlenebilir ve dizinlerden silinebilir.
Apache NiFi Remote Process Group veya RPG, akışta FlowFiles'ı Site-Site protokolünü kullanarak farklı NiFi örneklerine yönlendirmek için akış sağlar. 1.7.1 sürümünden itibaren NiFi dengeli ilişkiler sunmadığından RPG, NiFi veri akışında yük dengeleme için kullanılır.
Bir geliştirici, yukarıdaki resimde gösterildiği gibi simgeyi tuvale sürükleyerek RPG'yi NiFi kullanıcı arayüzünün üst araç çubuğundan ekleyebilir. Bir RPG'yi yapılandırmak için, Geliştirici aşağıdaki alanları eklemelidir -
S.No. | Alan adı | Açıklama |
---|---|---|
1 | URL'ler | Virgülle ayrılmış uzak hedef NiFi URL'lerini belirtmek için. |
2 | Taşıma Protokolü | Uzak NiFi örnekleri için aktarım protokolünü belirlemek için. RAW veya HTTP'dir. |
3 | Yerel Ağ Arayüzü | Veri göndermek / almak için yerel ağ arayüzünü belirlemek için. |
4 | HTTP Proxy Sunucusu Ana Bilgisayar Adı | RPG'de aktarım amacıyla proxy sunucusunun ana bilgisayar adını belirtmek için. |
5 | HTTP Proxy Sunucusu Bağlantı Noktası | RPG'de aktarım amacıyla proxy sunucusunun bağlantı noktasını belirtmek için. |
6 | HTTP Proxy Kullanıcısı | HTTP proxy için kullanıcı adını belirtmek için isteğe bağlı bir alandır. |
7 | HTTP Proxy Parolası | Yukarıdaki kullanıcı adı için şifre belirtmek için isteğe bağlı bir alandır. |
Bir geliştiricinin, işlemcileri kullanmadan önce başlattığımız gibi kullanmadan önce etkinleştirmesi gerekir.
Apache NiFi, işlemciler tarafından paylaşılabilen paylaşılan hizmetler sunar ve raporlama görevine denetleyici ayarları denir. Bunlar, aynı veritabanına erişen işlemciler tarafından kullanılabilen Veritabanı bağlantı havuzuna benzer.
Denetleyici ayarlarına erişmek için, aşağıdaki resimde gösterildiği gibi NiFi UI'nin sağ üst köşesindeki açılır menüyü kullanın.
Apache NiFi tarafından sunulan birçok denetleyici ayarı vardır, yaygın olarak kullanılan birini ve bunu NiFi'de nasıl kurduğumuzu tartışacağız.
DBCPConnectionPool
Denetleyici ayarları seçeneğine tıkladıktan sonra Nifi Ayarları sayfasına artı işaretini ekleyin. Ardından, denetleyici ayarları listesinden DBCPConnectionPool öğesini seçin. DBCPConnectionPool, aşağıdaki resimde gösterildiği gibi ana NiFi ayarları sayfasına eklenecektir.
Denetleyici hakkında aşağıdaki bilgileri içerir setting:Name
- Type
- Bundle
- State
- Scope
- Simgeyi yapılandırın ve silin
Yapılandırma simgesine tıklayın ve gerekli alanları doldurun. Alanlar aşağıdaki tabloda listelenmiştir -
S.No. | Alan adı | Varsayılan değer | açıklama |
---|---|---|---|
1 | Veritabanı Bağlantı URL'si | boş | Veritabanına bağlantı URL'sini belirtmek için. |
2 | Veritabanı Sürücüsü Sınıf Adı | boş | Mysql için com.mysql.jdbc.Driver gibi veritabanı için sürücü sınıfı adını belirtmek için. |
3 | Maksimum Bekleme Süresi | 500 milis | Veritabanına bir bağlantıdan verilerin bekleneceği süreyi belirtmek için. |
4 | Maksimum Toplam Bağlantı | 8 | Veritabanı bağlantı havuzunda ayrılan maksimum bağlantı sayısını belirtmek için. |
Bir kontrol cihazı ayarını durdurmak veya yapılandırmak için önce tüm bağlı NiFi bileşenleri durdurulmalıdır. NiFi, yapılandırmasını yönetmek için denetleyici ayarlarına kapsam da ekler. Bu nedenle, yalnızca aynı ayarları paylaşanlar etkilenmeyecek ve aynı denetleyici ayarlarını kullanacaktır.
Apache NiFi raporlama görevleri, arka planda çalışan ve NiFi örneğinin istatistiklerini gönderen veya kaydeden denetleyici hizmetlerine benzer. NiFi raporlama görevine, denetleyici ayarlarıyla aynı sayfadan ancak farklı bir sekmeden de erişilebilir.
Bir raporlama görevi eklemek için, geliştiricinin raporlama görevleri sayfasının sağ üst tarafında bulunan artı düğmesine tıklaması gerekir. Bu raporlama görevleri temel olarak bir NiFi örneğinin bültenlerde veya kaynakta bulunan faaliyetlerini izlemek için kullanılır. Esas olarak bu raporlama görevleri, NiFi istatistik verilerini başka bir düğüme veya harici sisteme taşımak için Siteden Siteye kullanır.
Şimdi daha fazla anlayış için yapılandırılmış bir raporlama görevi ekleyelim.
MonitorMemory
Bu raporlama görevi, bir bellek havuzu belirtilen yüzdeyi geçtiğinde bültenler oluşturmak için kullanılır. MonitorMemory raporlama görevini yapılandırmak için şu adımları izleyin -
Artı işaretini ekleyin ve listede MonitorMemory'yi arayın.
MonitorMemory'yi seçin ve EKLE'ye tıklayın.
Raporlama görevleri ana sayfasına eklendiğinde, yapılandır simgesine tıklayın.
Özellikler sekmesinde, izlemek istediğiniz hafıza havuzunu seçin.
Bültenlerin kullanıcıları uyarmasını istediğiniz yüzdeyi seçin.
Raporlama görevini başlatın.
Apache NiFi - Özel İşlemci
Apache NiFi, açık kaynaklı bir platformdur ve geliştiricilere kendi özel işlemcilerini NiFi kitaplığına ekleme seçenekleri sunar. Özel bir işlemci oluşturmak için aşağıdaki adımları izleyin.
Maven'in son sürümünü aşağıda verilen bağlantıdan indirin.
https://maven.apache.org/download.cgi
M2_HOME adlı bir ortam değişkeni ekleyin ve değeri maven kurulum dizini olarak ayarlayın.
Eclipse IDE'yi aşağıdaki bağlantıdan indirin.
https://www.eclipse.org/downloads/download.php
Komut istemini açın ve Maven Archetype komutunu çalıştırın.
> mvn archetype:generate
Arketip projelerinde nifi türünü arayın.
Org.apache.nifi: nifi-işlemci-paket-arketip projesi seçin.
Ardından sürüm listesinden en son sürümü, yani bu eğitim için 1.7.1'i seçin.
GroupId, artifactId, version, package ve artifactBaseName vb. Girin.
Daha sonra dizinler içeren bir maven projesi oluşturulacaktır.
nifi-<artifactBaseName>-processors
nifi-<artifactBaseName>-nar
Projeyi tutulmaya eklemek için nifi- <artifactBaseName> -processors dizininde aşağıdaki komutu çalıştırın.
mvn install eclipse:eclipse
Tutulmayı açın ve dosya menüsünden içe aktarmayı seçin.
Daha sonra “Existing Projects into workspace” i seçin ve nifi- <artifactBaseName> -processors dizininden projeyi eclipse'e ekleyin.
Kodunuzu, bir işlemcinin çalışması planlandığında çalışan genel void onTrigger (ProcessContext bağlamı, ProcessSession oturumu) işlevine ekleyin.
Ardından, aşağıda belirtilen komutu çalıştırarak kodu bir NAR dosyasına paketleyin.
mvn clean install
Nifi- adresinde bir NAR dosyası oluşturulacak
-nar / hedef dizin. NAR dosyasını Apache NiFi'nin lib klasörüne kopyalayın ve NiFi'yi yeniden başlatın.
NiFi'nin başarılı bir şekilde yeniden başlatılmasından sonra, yeni özel işlemci için işlemci listesini kontrol edin.
Herhangi bir hata için ./logs/nifi.log dosyasını kontrol edin.
Apache NiFi - Özel Denetleyiciler Hizmeti
Apache NiFi, açık kaynaklı bir platformdur ve geliştiricilere kendi özel denetleyici hizmetlerini Apache NiFi'ye ekleme seçenekleri sunar. Adımlar ve araçlar, özel bir işlemci oluşturmak için kullanılanlarla hemen hemen aynıdır.
Komut istemini açın ve Maven Archetype komutunu çalıştırın.
> mvn archetype:generate
Arketip projelerinde nifi türünü arayın.
Seçiniz org.apache.nifi:nifi-service-bundle-archetype proje.
Ardından sürüm listesinden en son sürümü seçin - bu eğitim için 1.7.1.
GroupId, artifactId, version, package ve artifactBaseName, vb. Girin.
Dizinleri olan bir maven projesi oluşturulacaktır.
nifi-<artifactBaseName>
nifi-<artifactBaseName>-nar
nifi-<artifactBaseName>-api
nifi-<artifactBaseName>-api-nar
Bu iki projeyi tutulmaya eklemek için nifi- <artifactBaseName> ve nifi- <artifactBaseName> -api dizinlerinde aşağıdaki komutu çalıştırın.
mvn install eclipse: tutulma
Tutulmayı açın ve dosya menüsünden içe aktarmayı seçin.
Daha sonra “Existing Projects into workspace” i seçin ve nifi- <artifactBaseName> ve nifi- <artifactBaseName> -api dizinlerinden projeyi eclipse'e ekleyin.
Kodunuzu kaynak dosyalara ekleyin.
Ardından, aşağıda belirtilen komutu çalıştırarak kodu bir NAR dosyasına paketleyin.
mvn temiz yükleme
Her nifi- <artifactBaseName> / target ve nifi- <artifactBaseName> -api / hedef dizininde iki NAR dosyası oluşturulacaktır.
Bu NAR dosyalarını Apache NiFi'nin lib klasörüne kopyalayın ve NiFi'yi yeniden başlatın.
NiFi'nin başarılı bir şekilde yeniden başlatılmasından sonra, yeni özel işlemci için işlemci listesini kontrol edin.
Herhangi bir hata için kontrol edin ./logs/nifi.log dosya.
Apache NiFi - Günlük Kaydı
Apache NiFi, günlük kaydını işlemek için geri kayıt kitaplığını kullanır. NiFi'nin conf dizininde, NiFi'de günlük kaydını yapılandırmak için kullanılan logback.xml dosyası vardır. Günlükler NiFi'nin günlükler klasöründe oluşturulur ve günlük dosyaları aşağıda açıklandığı gibidir.
nifi-app.log
Bu, apache NiFi uygulamasının NAR dosyalarının yüklenmesinden çalışma zamanı hatalarına veya NiFi bileşenlerinin karşılaştığı bültenlere kadar tüm etkinliklerini kaydeden nifi'nin ana günlük dosyasıdır. Aşağıda, içindeki varsayılan ekleyicilogback.xml Dosya için nifi-app.log dosya.
<appender name="APP_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/
nifi-app_%d{yyyy-MM-dd_HH}.%i.log
</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<immediateFlush>true</immediateFlush>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
Ekleyici adı APP_FILE ve sınıf RollingFileAppender'dır, bu da günlükçünün geri alma ilkesini kullandığı anlamına gelir. Varsayılan olarak, maksimum dosya boyutu 100 MB'dir ve gerekli boyuta değiştirilebilir. APP_FILE için maksimum saklama 30 günlük dosyasıdır ve kullanıcı gereksinimine göre değiştirilebilir.
nifi-user.log
Bu günlük, web güvenliği, web api yapılandırması, kullanıcı yetkilendirmesi vb. Gibi kullanıcı olaylarını içerir. Aşağıda, logback.xml dosyasındaki nifi-user.log için ek bulunmaktadır.
<appender name="USER_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/
nifi-user_%d.log
</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
Ekleyicinin adı USER_FILE. Devretme politikasını izler. USER_FILE için maksimum saklama süresi 30 günlük dosyasıdır. Aşağıda, nifi-user.log'da bulunan USER_FILE ekleyici için varsayılan günlük kaydediciler bulunmaktadır.
<logger name="org.apache.nifi.web.security" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.api.config" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
nifi-bootstrap.log
Bu günlük, önyükleme günlüklerini, apache NiFi'nin standart çıktısını (kodda çoğunlukla hata ayıklama için yazılan tüm system.out) ve standart hatayı (kodda yazılan tüm system.err) içerir. Aşağıda, logback.log'daki nifi-bootstrap.log için varsayılan ekleyici bulunmaktadır.
<appender name="BOOTSTRAP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap_%d.log
</fileNamePattern>
<maxHistory>5</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
nifi-bootstrap.log dosyası, ekleyicinin adı BOOTSTRAP_FILE'dir ve bu da geri alma politikasını takip eder. BOOTSTRAP_FILE ekleyici için maksimum saklama 5 günlük dosyasıdır. Aşağıda nifi-bootstrap.log dosyası için varsayılan günlük kaydediciler bulunmaktadır.
<logger name="org.apache.nifi.bootstrap" level="INFO" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.bootstrap.Command" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.StdOut" level="INFO" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.StdErr" level="ERROR" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>