nifi-大資料基礎02——基本使用介紹
1、主頁面概況
介面主體是一個畫布的面板系統,最上面的是公共導航欄,左側的Navigate沒什麼用,就是一個全域性視角的檢視,下面的Operate是一個元件控制面板,可以進行單個元件的控制,也可以選中一片元件進行統一的啟動和停止等操作。
2、面板介紹
導航欄中的這個選單,我們可以理解為處理器(Processor)商城,用滑鼠單擊拖出到畫布上,便會出現處理器(Processor)選單
導航欄中這個選單,我叫它為組,什麼叫組呢,當你拉了很多處理器(Processor),形成了一個完整的流程的時候,我們可以單獨把這塊劃分成一個整體了,這時候就要用組把它包裹起來。
有了組以後,組和組之間可能也需要聯通、通訊,這時候就可以用入口和出口,把它們放在組內
這個元件需要配合 Operate 中的 上傳使用,主要是用來遷移模板的,這塊後續會專門抽章節講一下
這一元件就是個漏斗,主要作用就是把四散的資料可以彙集在一起。
3、Nifi的工作方式
Nifi其實就是一個數據接入、處理、清洗、分發的系統,它的工作方式就是將資料看作水管中的水,它是順著某個流程管道流動,在這中間,可以在任意節點處堵截這個“水流”,並對它進行改造,然後放回管道繼續向下流去。
Processor:這裡的節點,其實就是Nifi的Processor,你叫它處理器也可以,叫他元件也好,它就是一個黑盒小模組,不同的模組有不同的功能
Relationship:節點和節點直接的通道,在Nifi裡叫Relationship,我把它稱之為管道,就像水管一樣,它本身的意義就是充當水管,把上節點處理完的水傳下去。
基本流程就是 : 選則一個處理器——>配置該元件至可執行狀態——>關聯下一元件建立管道
4、選擇處理器
通過“元件商城” 圖示進行處理器的選擇, 處理器是最常用的元件,因為它負責資料的流入,流出,路由和操作。
這裡可以通過處理器的包、處理器的屬性、處理器的名稱等維度進行元件的篩選、選擇。選中後,雙擊則可拖拉至畫布中。
5、元件狀態
-
狀態:顯示處理器的當前狀態。以下指標是可能的:
-
名稱:這是處理器的使用者定義名稱。預設情況下元件的名稱與它的Type相同。在示例中,此值為"ExecuteGroovyScript",是一個專門用於執行Groovy指令碼的元件。
-
任務:此處理器當前正在執行的任務數。此數字受處理器配置對話方塊的計劃選項卡中的併發任務設定的約束。在這裡,我們可以看到處理器當前正在執行一項任務。如果NiFi例項是叢集的,則此值表示當前正在叢集中的所有節點上執行的任務數。
- 實時日誌:這裡是用於監控當前處理器狀態的,當處理器內部出現問題,一般會在此處顯示錯誤日誌
- 資料流入流出看板:這裡主要是展示處理資料過程中資料的流入流出情況,Nifi預設是5分鐘更新一次頁面上的看板情況,當然使用者也可以在畫布空白處,滑鼠右鍵選擇重新整理,以達到實時檢視的效果。
-
-
In:處理器從其傳入處理器的佇列中提取的資料量。此值表示為count size,其中count是從佇列中提取的FlowFiles的數量,size是這些FlowFiles內容的總大小
-
Read/Write:處理器從磁碟讀取並寫入磁碟的FlowFile內容的總大小。這提供了有關此處理器所需的I/O效能的有用資訊。某些處理器可能只讀取資料而不寫入任何內容,而某些處理器不會讀取資料但只會寫入資料。其他可能既不會讀取也不會寫入資料,而某些處理器會讀取和寫入資料。
-
Out:處理器已傳輸到其出站連線的資料量。這不包括處理器自行刪除的FlowFiles,也不包括路由到自動終止的連線的FlowFiles。與上面的"In"指標一樣,此值表示為count size,其中count是已轉移到出站Connections的FlowFiles的數量,size是這些FlowFiles內容的總大小。
-
Tasks/Time:此處理器在過去5分鐘內被觸發執行的次數,以及執行這些任務所花費的時間。時間格式為hour:minute:second。請注意,所花費的時間可能超過五分鐘,因為許多工可以並行執行。例如,如果處理器計劃執行60個併發任務,並且每個任務都需要一秒鐘才能完成,則所有60個任務可能會在一秒鐘內完成。但是,在這種情況下,我們會看到時間指標顯示它需要60秒,而不是1秒。
-
6、元件
SETTINGS(通用配置)
基本的Name這裡就不說了,就是使用者自定義的名稱,Id、Type、Bundle這三個是這個處理器元件所屬的程式碼包等基本資訊,這裡也不過多介紹,Enable這個選項,就是控制組件由啟用到禁用 狀態的切換。
最右邊包含自動終止關係(Automatically Terminate Relationships)部分。此處列出了處理器定義的每個關係及其描述。為了使處理器被視為有效且能夠執行,處理器定義的每個關係必須連線到下游元件或自動終止。我們可以通過選中它,例如圖中選中Failure一樣,來表示我們棄用這個輸出,也就是不需要它指向下一個元件,這樣這個處理器就變成只有一個對外輸出資料的Relationship了。
接下來是兩個用於配置Penalty Duration和Yield Duration的對話方塊。在處理一條資料(FlowFile)的正常過程中,可能發生事件,該事件指示處理器此時不能處理資料但是資料可以在稍後進行處理。在發生這種情況時,處理器可以選擇Penalize FlowFile。這將阻止FlowFile在一段時間內被處理。例如,如果處理器要將資料推送到遠端服務,但遠端服務已經有一個與處理器指定的檔名同名的檔案,則處理器可能會懲罰FlowFile。Penalty Duration允許DFM指定FlowFile應該受到多長時間的懲罰。預設值為30 seconds。(簡單理解為推後一段時間再處理),類似的處理器可以確定存在某種情況,處理器沒法進行處理資料。例如,如果處理器要將資料推送到遠端服務並且該服務沒有響應。這樣的話處理器應該Yield,這將阻止處理器執行一段時間。通過設定Yield Duration來指定該時間段。預設值為1 second。
最下方Bulletin Level可以簡單的理解為元件的日誌輸出等級的選擇,有選擇地進行日誌等級輸出
SCHEDULING(處理器排程)
這一標籤頁,代表的就是如何驅動處理器,或者說處理器的運作方式:
第一個配置選項是排程策略(Scheduling Strategy)。排程有三種可能的選項:
- Timer driven:這是預設模式。處理器將定期執行。即多久執行一次,執行處理器的時間間隔由Run Schedule選項定義(當Run Schedule為0時,則代表瞬時執行)。
- Event driven:選擇此模式時,將由一個事件觸發處理器執行,當FlowFiles進入連線此處理器的Connections時,將產生這個事件。此模式目前被認為是實驗性的,並非所有處理器都支援。選擇此模式時,Run Schedule選項不可配置。此外,只有此模式下Concurrent Tasks選項可以設定為0。這種情況,執行緒數僅受管理員配置的事件驅動執行緒池的大小限制。
- CRON驅動:這是定時執行模式,即通過cron表示式,進行定時執行的控制。
下面的配置就是執行緒的分配(Concurrent Tasks):這可以控制處理器將使用的執行緒數。換句話說,它控制此處理器應同時處理多少個FlowFiles。增加此值通常會使處理器在相同的時間內處理更多資料。但是,它是通過使用其他處理器無法使用的系統資源來實現此目的。這基本上提供了處理器的相對權重 - 應該將多少系統資源分配給此處理器而不是其他處理器。該欄位適用於大多數處理器。但是,某些型別的處理器只能使用單個任務進行排程。
關於Execution,執行設定用於確定處理器將被排程執行的節點。選擇"All Nodes"將導致在叢集中的每個節點上排程此處理器。選擇"Primary Node"將導致此處理器僅在主節點上進行排程。一般單節點的情況下,我們都使用Primary Node
"Run Duration"選項卡的右側包含一個用於選擇執行持續時間的滑塊。這可以控制處理器每次觸發時應安排執行的時間。在滑塊的左側,標記為"Lower latency(較低延遲)",而右側標記為"Higher throughput(較高吞吐量)"。處理器完成執行後,必須更新儲存庫才能將FlowFiles傳輸到下一個Connection。更新儲存庫的成本很高,因此在更新儲存庫之前可以立即完成的工作量越多,處理器可以處理的工作量就越多(吞吐量越高)。這意味著在上一批資料處理更新此儲存庫之前,Processor是無法開始處理接下來的FlowFiles。結果是,延遲時間會更長(從開始到結束處理FlowFile所需的時間會更長)。因此,滑塊提供了一個頻譜,DFM可以從中選擇支援較低延遲或較高吞吐量。
COMMENTS(備註區)
為使用者提供一個區域,以包含適用於此元件的任何註釋。
PROPERITIES(屬性區)
這一標籤頁差別較大,一般不同的元件所需要的配置各不相同,具體可以參考http://nifi.apache.org/