ETL工具-nifi乾貨系列 第十六講 nifi Process Group實戰教程,一文輕鬆搞定

1、目前nifi系列已經更新了10多篇教程了,跟着教程走的同學應該已經對nifi有了初步的解,但是我相信同學們應該有一個疑問:nifi設計好的數據流列表在哪裏?如何同時運行多個數據流?如啓停單個數據流?

帶着這些疑問,今天的主角nifi Process Group正式登場,先給大家看個圖。

2、Process Group(處理組)

1)當數據流變得複雜時,以更高級、更抽象的層次來思考數據流往往是有益的。也就是說通過處理組將一個或多個流程封裝起來,屏蔽其複雜性。

2)NiFi允許將多個組件,如處理器(Processors),組合成一個處理組(Process Group)。處理組中可以是一些列的處理器,也可以是處理組。

3)NiFi用戶界面使得數據流管理者(DFM)能夠輕鬆將多個處理組連接成一個邏輯數據流。用戶能夠將多個處理組連成一個邏輯數據流。但是處理組之間進行連接需要用到Input Port和Out Port,後續會進行講解。

4)同時也允許DFM進入處理組以查看和操作處理組內的組件。操作人員可以很方便的進入(雙擊處理組)和退出處理組(點擊麪包屑導航)。

 3、處理組配置,空白畫布默認爲根處理組,我把根處理組的名字修改爲myNiflFlow。myNiflFlow處理組包含處理組【用戶信息同步】和【交易訂單同步】兩個處理組。

當然這裏的分組不一定合適,有可能是按照系統分的,如myNiflFlow處理組包含處理組【申請系統】、【審覈系統】、【信貸系統等】,自己可以根據業務場景進行分組。

1)鼠標點擊空白處,點擊▶️運行按鈕可以啓動多個處理組流程。

2)鼠標點擊空白處,點擊⏸️暫停按鈕可以停止多個處理組流程。

3)選中某個處理組,可以單獨啓動或者暫停該處理組,而不影響其他處理組。

4)啓用,禁用等按鈕操作也可以進行類似批量或者單個處理組操作。

 5)Process Group Name:自定義處理組名稱

6)Process Group Parameter Context:它用於爲流程中的組件提供參數。從這個下拉菜單中,用戶可以選擇應該綁定到此流程組的參數上下文,並可選擇創建一個新的參數上下文以綁定到該流程組。後續參數和參數上下文設置單獨講解,這裏先做了解。

7) Process Group FlowFile Concurrency:

FlowFile Concurrency 用於控制數據如何進入流程組。有三種可用選項:

1. 無限制(默認值)

2. 單個節點每次一個流文件

3. 單個節點每次一個批次

當FlowFile併發性設置爲“無限制”時,流程組中的輸入端口將盡可能快地攝取數據,前提是背壓不會阻止它們這樣做。

當FlowFile併發性配置爲“單個節點每次一個流文件”時,輸入端口將只允許一個流文件通過。一旦該流文件進入流程組,直到所有流文件離開流程組(通過從系統中移除/自動終止,或通過輸出端口退出)之前,將不會再帶入任何其他流文件。這通常會導致性能較慢,因爲它減少了NiFi用於處理數據的並行性。然而,用戶可能希望使用這種方法的原因有幾個。一個常見的用例是每個傳入的FlowFile包含對其他幾個數據項的引用,比如目錄中的文件列表。用戶可能希望在允許任何其他數據進入流程組之前處理整個列表。

當FlowFile併發性配置爲“單個節點每次一個批次”時,輸入端口的行爲方式與“單個節點每次一個流文件”模式類似,但是當攝取一個流文件時,輸入端口將繼續攝取所有數據,直到所有饋送輸入端口的隊列已被清空。在那時,它們將不會將任何更多的數據帶入流程組,直到所有數據已完成處理並離開流程組。

8)Process Group Outbound Policy:出站策略控制了數據從流程組中流出的方式。有兩個可用選項:

1. 當可用時流式傳輸(默認值)
2. 批量輸出

當出站策略配置爲“當可用時流式傳輸”時,到達輸出端口的數據將立即從流程組中轉移出去,假設沒有施加任何背壓。

當出站策略配置爲“批量輸出”時,輸出端口將不會將數據從流程組中傳輸出去,直到所有數據都在輸出端口排隊(即,在所有數據完成處理之前,沒有數據離開流程組)。無論數據是否全部排隊到同一個輸出端口,還是一些數據排隊到輸出端口A,而另一些數據排隊到輸出端口B,這些條件在流文件處理完成方面都被視爲相同。

將出站策略設置爲“批量輸出”,並結合使用“單個節點每次一個流文件”的FlowFile併發性,允許用戶輕鬆攝取單個流文件(該流文件本身可能代表一批數據),然後等待直到該流文件的所有處理完成後再繼續數據流的下一步(即流程組之外的下一個組件)。此外,在使用此模式時,從流程組傳輸出的每個流文件都將被賦予一系列屬性,屬性名稱爲“batch.output.<Port Name>”,每個流程組中的輸出端口都有一個。該值將等於被路由到該輸出端口的流文件數量。例如,考慮一個情況,其中一個單個流文件被拆分爲5個流文件:兩個流文件送到輸出端口A,一個送到輸出端口B,兩個送到輸出端口C,而沒有流文件送到輸出端口D。在這種情況下,每個流文件將具有屬性 batch.output.A = 2, batch.output.B = 1, batch.output.C = 2, batch.output.D = 0。

當與“無限制”的FlowFile併發性結合使用時,“批量輸出”出站策略不提供任何好處。因此,如果FlowFile併發性設置爲“無限制”,則會忽略出站策略。

 9)Process Group Comments:自定義註解
 10)Default FlowFile Expiration 、Default FlowFile Expiration, Default Back Pressure Object Threshold,
最後三個元素是默認流文件過期、默認背壓對象閾值和默認背壓數據大小閾值。這些設置配置了創建新連接時的默認值。每個連接表示一個隊列,每個隊列都有流文件過期、背壓對象計數和背壓數據大小的設置。在此指定的設置將影響流程組中創建的所有新連接的默認值;它不會影響現有連接。在配置的流程組內創建的子流程組將繼承默認設置。再次強調,現有的流程組不會受到影響。如果沒有使用這些選項進行覆蓋,根流程組將從nifi.properties獲取其默認背壓設置,並具有默認的流文件過期時間爲“0秒”(即不過期)。
 11)Log File Suffix:爲處理組指定日誌文件後綴,不填寫,默認日誌文件爲nifi-app.log。

 

 

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