NiFi-面向流程的大數據處理框架

轉載:https://my.oschina.net/u/2306127/blog/491176

任何一個大數據分析的軟件,都需要一個強大的數據拉取組件、數據倉儲系統、數據處理引擎、任務調度引擎和流程設計界面。Hadoop和Spark的重點是在數據的存儲和任務調度,R的重點是數據分析引擎。數據拉取組件和流程則是NiFi的主要強項。

 

一、NiFi是什麼?

Apache NiFi 是一個易於使用、功能強大而且可靠的數據拉取、數據處理和分發系統。Apache NiFi 是爲數據流設計。它支持高度可配置的指示圖的數據路由、轉換和系統中介邏輯,支持從多種數據源動態拉取數據。NiFi原來是NSA的一個項目,現在開源出來,由Apache基金會進行管理。

 

NiFi flow

NiFi是基於Java的,使用Maven支持包的構建管理。 NiFi基於Web方式工作,後臺在服務器上進行調度。可以爲數據處理定義一個流程,然後進行處理,後臺具有數據處理引擎、任務調度等組件

 

二、NiFi的安裝

首先需要安裝maven和java的最新版,在Ubuntu上的OpenJDK會遇到遇到一些問題,因此建議從Oracle的官網http://java.com去下載,而且要SDK而不是jre。解壓後到/etc/profile文件中設置JAVA_HOME的路徑,以便讓其它的程序能訪問到。然後安裝maven,ubuntu15.04的maven版本也都太久了,到http://maven.apache.org/去下載一個最新的版本,然後設置MAVEN_HOME的路徑,並加到PATH環境變量中。設置完了後,看起來是這個樣子:

export JAVA_HOME=/home/supermap/jdk1.8.0_51
export MAVEN_HOME=/home/supermap/GIScript/apache-maven-3.3.3
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

現在,到http://nifi.apache.org/去下載NiFi的安裝程序。由於NiFi採用maven進行包管理,因此編譯過程中會自動下載大量的支持庫,需要保持網絡暢通。如果中間出錯,一般是網絡連接中斷引起的,重新運行編譯即可。

 

三、NiFi的使用

運行(爲了讓環境變量有效,最好重啓一下系統):

mvn clean install

或者:mvn install -Dmaven.test.skip=true

如果使用代理:

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

然後,等待...等結束後,進/home/supermap/GIScript/nifi-0.2.1/nifi-assembly/target,找到nifi-XXX-bin.zip這個文件,拷貝到自己的運行目錄,解壓,進去,執行:

./bin/nifi.sh start

然後,通過瀏覽器訪問地址:http://localhost:8080/nifi/,正常情況下,就能看到NiFi的主界面了。

停止服務使用:./bin/nifi.sh stop

目前的版本已經到1.1.X了,功能已經相當強大,但是目前的中文文檔和教程都還很少,主要通過閱讀源代碼來理解程序的邏輯。英文還可以的,看這裏:

 

 

官網:http://nifi.apache.org/docs.html

什麼是Apache NiFi?

簡而言之,NiFi旨在自動執行系統之間的數據流。雖然“數據流”一詞在多種情況下使用,但我們在這裏使用它來表示系統之間的自動化和託管信息流。自從企業擁有多個系統以來,就一直存在這個問題空間,其中一些系統創建了數據,而某些系統使用了數據。出現的問題和解決方案已被廣泛討論和闡明。在企業集成模式 [eip]中找到了一種全面且易於使用的形式。

數據流的一些高級挑戰包括:

系統故障

網絡故障,磁盤故障,軟件崩潰,人爲失誤。

數據訪問超出了消耗能力

有時,給定的數據源可能會超過處理或交付鏈的某些部分-只需一個弱鏈接即可解決問題。

邊界條件僅是建議

您將始終獲得太大,太小,太快,太慢,損壞,錯誤或格式錯誤的數據。

一天是什麼噪音,第二天成爲信號

組織的優先級快速變化。啓用新流程和更改現有流程必須很快。

系統以不同的速度發展

給定系統使用的協議和格式可以隨時更改,並且通常與周圍的系統無關。存在數據流來連接本質上是大規模分佈的組件系統,這些組件是鬆散的或根本不是一起工作的。

合規性與安全性

法律,法規和政策會發生變化。企業對企業協議會發生變化。系統到系統以及系統到用戶的交互必須是安全的,可信任的,負責的。

生產中不斷改進

通常不可能接近實驗室中的複製生產環境。

多年來,數據流一直是架構中的那些必不可少的弊端之一。現在,儘管有許多活躍且迅速發展的運動使數據流變得更加有趣,並且對給定企業的成功也至關重要。這些包括:面向服務的體系結構[soa],API [api] [api2]的興起,物聯網[iot]和大數據[bigdata]。此外,合規性,隱私性和安全性所必需的嚴格程度也在不斷提高。即使所有這些新概念都應運而生,數據流的模式和需求仍然大致相同。那麼主要的區別是複雜性的範圍,適應所必需的變化率以及在規模上邊緣情況變得普遍。NiFi旨在幫助解決這些現代數據流挑戰。

 

NiFi架構

NiFi架構圖

 

NiFi還可以在集羣中運行。

NiFi羣集架構圖

從NiFi 1.0版本開始,採用了零主羣集的範例。NiFi羣集中的每個節點都對數據執行相同的任務,但是每個節點都對不同的數據集進行操作。Apache ZooKeeper選擇一個節點作爲集羣協調器,並且故障轉移由ZooKeeper自動處理。所有羣集節點均向羣集協調器報告心跳和狀態信息。羣集協調器負責斷開和連接節點。此外,每個羣集都有一個主節點,該節點也由ZooKeeper選擇。作爲DataFlow管理器,您可以通過任何節點的用戶界面(UI)與NiFi羣集進行交互。您所做的任何更改都將複製到羣集中的所有節點,從而允許多個入口點。

 

 

 

 

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