MiNiFi作爲NiFi的子項目

 

原理

MiNiFi作爲NiFi的子項目,是對NiFi數據流管理核心原則的擴展,聚焦於如何從數據產生的源頭收集數據;MiNiFi解決了數據在產生源頭和消費者之間相互傳遞和管理的困難,可以作爲數字信號的“第一或最後一英里”,通過實現邊緣設備智能(edge intelligence)來調整數據流的雙向通信。MiNiFi設計的具體目標包括:

- 更小的體積和更低的資源消耗

- 集中管理Agents

- 可以生成數據世系(Data Provenance)

- 可以和NiFi集成

因爲數據採集的初段是分佈式且通常涉及大量的終端設備(例如物聯網),MiNiFi具備NiFi的除了前端頁面和部分管理命令行之外的所有核心能力,可以創建和部署數據流,使大量設備的統一管理成爲可能。

- MiNiFi的配置由聲明式的配置文件(YAML)驅動,可以通過主流的自動化管理工具輔助進行配置下發來管理大量的MiNiFi實例

- MiNiFi Agents通過點對點協議(例如HTTP/HTTPs)來將收集的數據傳送到中央的NiFi集羣中

- MiNiFi聚焦於對NiFi的精簡,所以NiFi並沒有包含NiFi支持的全部Processor,Java Agents可以通過添加NiFi既有的NAR包來擴展processor種類,滿足用戶在設計和部署自己的數據流時對數據源的多樣化需求

- MiNiFi與NiFi之間可以實現雙向通信(Bi-directional Communication),雙向通信使得處理流程的動態更新能通過數據流的重新設計和重新部署來實現,並且將從數據中獲得的洞察轉化爲可以應用的新的數據流設計


 

下載與部署

MiNiFi要能夠被部署到邊緣(edge)設備上,則其安裝包必須比NiFi小很多(NiFi的安裝包超過900MB!)。MiNiFi的安裝包小於60MB,具體大小取決於不同的版本,MiNiFi提供了Java和C++兩個版本:

- Java版本爲可以運行大部分的NiFi processors,但是體積也更大(約59MB)同時需要消耗額外的系統資源(默認24MB的max JVM heapsize);如果用戶希望最大程度的集成NiFi在處理數據上的能力,Java 版本是最好的選擇;(本文中我們以Java Agent爲例進行測試)

- C++版本更加輕量化(只需要大約3MB),消耗更少的系統資源(大約5MB的內存),但是隻具備NiFi processors的有限的子集;如果用戶只是獲取數據然後把數據傳給下游系統(例如中央的NiFi集羣)處理並且比較在乎系統資源的佔用,那麼C++版本比較合適。

用戶可以從MiNiFi項目主頁下載MiNiFi的安裝包,每個版本的MiNiFi安裝包都包括以下三個部分:

- MiNiFi:即MiNiFi安裝包,包含了MiNiFi的所有核心功能,部署和執行用戶設計的數據流

- MiNiFi Toolki Binaries :一個用來將NiFi的數據流模版轉化爲MiNiFi的配置文件的工具包

- MiNiFi Command and Control Server Binaries:即MiNiFi C2,用於輔助用戶管理和控制MiNiFi實例中的數據流

MiNiFi,MiNiFi Toolket和MiNiFi C2都供了tar.gz,zip和源碼包三種不同的形式,用戶可以根據自己的需要進行選擇。部署MiNiFi需要預先在服務器或者設備上安裝系統級別的依賴,其中Java版本預裝JVM,C++版本則需要leveldb,libxml等依賴庫,具體如下:



 


作者:小白_18M
鏈接:https://www.jianshu.com/p/45eba4ef8b62
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章