NiFi用戶文檔分析(3)

NiFi用戶文檔分析(3)

連接組件

將處理器和其他組件添加到畫布並進行配置後,下一步是將它們彼此連接,以便NiFi知道在處理完每個FlowFile後如何處理。這是通過在每個組件之間創建連接來實現的。當用戶將鼠標懸停在組件的中心上時,會出現一個新的連接圖標( 連接泡泡 ):
用戶將連接氣泡從一個組件拖動到另一個組件,直到第二個組件突出顯示。當用戶釋放鼠標時,會出現“創建連接”對話框。該對話框包含兩個選項卡:“詳細信息”和“設置”。它們將在下面詳細討論。請注意,可以繪製連接,以便它在同一處理器上循環。如果DFM希望處理器在失敗關係時嘗試重新處理FlowFiles,這將非常有用。要創建這種類型的循環連接,只需將連接氣泡拖離,然後再返回到同一處理器,直到它突出顯示。然後釋放鼠標,出現相同的“創建連接”對話框。

細節標籤

“創建連接”對話框的“詳細信息”選項卡提供有關源和目標組件的信息,包括組件名稱,組件類型和組件所在的進程組:在這裏插入圖片描述此外,此選項卡還提供了選擇此Connection中應包含哪些關係的功能。必須至少選擇一個關係。如果只有一個關係可用,則會自動選擇它。
【注】:如果使用相同的關係添加多個Connections,則路由到該關係的任何FlowFile將自動“克隆”,並且將向每個Connections發送一個副本。

設置

“設置”選項卡提供配置連接名稱,FlowFile到期,背壓閾值,負載平衡策略和優先級的功能:

在這裏插入圖片描述連接名稱是可選的。如果未指定,則爲Connection顯示的名稱將是Connection的活動關係的名稱。

FlowFile到期

FlowFile到期是一個概念,通過該概念可以自動從流中刪除無法及時處理的數據。例如,當預計數據量超過可以發送到遠程站點的卷時,這很有用。在這種情況下,到期可以與優先級排序器一起使用,以確保首先處理最高優先級數據,然後可以丟棄在特定時間段(例如,一小時)內無法處理的任何內容。到期時間基於數據進入NiFi實例的時間。換句話說,如果給定連接上的文件到期時間設置爲“1小時”,並且已經在NiFi實例中一小時的文件到達該連接,則該文件將過期。默認值爲0 sec表示數據永不過期。當設置了“0秒”以外的文件到期時,連接標籤上會出現一個小時鐘圖標,因此在查看畫布上的流時,DFM可以一目瞭然地看到它。在這裏插入圖片描述

背壓

NiFi爲背壓提供兩種配置元素。這些閾值表示在不再計劃運行作爲Connection源的組件之前,應允許在隊列中存在多少數據。這允許系統避免數據溢出。提供的第一個選項是“背壓對象閾值”。這是在應用背壓之前可以在隊列中的FlowFiles的數量。第二個配置選項是“背壓數據大小閾值”。這指定了在應用反壓之前應排隊的最大數據量(大小)。通過輸入數字後跟數據大小(B對於字節,KB對於千字節,MB對於兆字節,GB對於千兆字節或TB對於太字節)來配置此值。

【注】:默認情況下,添加的每個新連接都將具有默認的背壓對象閾值10,000 objects和背壓數據大小閾值1 GB。可以通過修改nifi.properties文件中的相應屬性來更改這些默認值。

啓用背壓時,連接標籤上會出現小進度條,因此在查看畫布上的流時,DFM可以一目瞭然地看到它。進度條根據隊列百分比更改顏色:綠色(0-60%),黃色(61-85%)和紅色(86-100%)。在這裏插入圖片描述將鼠標懸停在條形圖上會顯示確切的百分比。在這裏插入圖片描述隊列完全填滿後,Connection將以紅色突出顯示。在這裏插入圖片描述

負載均衡

負載平衡策略

爲了在羣集中的節點之間分配流中的數據,NiFi提供以下負載平衡策略:

  • 不負載平衡:不要在羣集中的節點之間平衡FlowFile。這是默認值。

  • 按屬性劃分:根據用戶指定的FlowFile屬性的值確定將給定FlowFile發送到哪個節點。具有相同Attribute值的所有FlowFile將發送到集羣中的同一節點。如果目標節點與羣集斷開連接或無法通信,則數據不會故障轉移到另一個節點。數據將排隊,等待節點再次可用。此外,如果節點加入或離開集羣需要重新平衡數據,則應用一致性散列以避免必須重新分發所有數據。

  • 循環:FlowFiles將以循環方式分發到集羣中的節點。如果節點與羣集斷開連接或無法與節點通信,則排隊等待該節點的數據將自動重新分發到另一個節點。

  • 單個節點:所有FlowFiles將發送到羣集中的單個節點。它們被髮送到哪個節點是不可配置的。如果節點與羣集斷開連接或無法與節點通信,則排隊等待該節點的數據將保持排隊,直到該節點再次可用。
    【注】:1.除UI設置外,還有與負載平衡相關的羣集節點屬性,還必須在nifi.properties中進行配置。
    2.NiFi會在重新啓動時持久保存羣集中的節點。這可以防止在所有節點都已連接之前重新分配數據。如果羣集已關閉且不打算重新啓動節點,則用戶有責任通過UI中的“羣集”對話框從羣集中刪除該節點

負載平衡壓縮

選擇負載平衡策略後,用戶可以配置在羣集中的節點之間傳輸時是否應壓縮數據。
在這裏插入圖片描述可以使用以下壓縮選項:

  • 不壓縮:FlowFiles不會被壓縮。這是默認值。

  • 僅壓縮屬性:將壓縮FlowFile屬性,但不會壓縮FlowFile屬性。

  • 壓縮屬性和內容:將壓縮FlowFile屬性和內容。

負載平衡指示器

爲連接實施負載平衡策略後,連接在這裏插入圖片描述上將顯示負載平衡指示符():在這裏插入圖片描述將鼠標懸停在該圖標上將顯示連接的負載平衡策略和壓縮配置。此狀態下的圖標還表示連接中的所有數據都已在羣集中分佈。
在這裏插入圖片描述
當在羣集中的節點之間主動傳輸數據時,負載平衡指示器將更改方向和顏色:在這裏插入圖片描述

羣集連接摘要

要查看在羣集節點之間分配數據的位置,請從“全局菜單”中選擇“摘要”。然後選擇“連接”選項卡和源的“查看連接詳細信息”圖標:
在這裏插入圖片描述
這將打開“羣集連接摘要”對話框,該對話框顯示羣集中每個節點上的數據:在這裏插入圖片描述

優先級

選項卡的右側提供了對隊列中數據進行優先級排序的功能,以便首先處理更高優先級的數據。優先級可以從頂部(‘可用的優先級排序器’)​​拖動到底部(‘選擇的優先級排序器’)​​。可以選擇多個優先級排序器。位於“所選優先級”列表頂部的優先級排序是最高優先級。如果兩個FlowFiles根據此優先級排序器具有相同的值,則第二個優先級排序器將確定首先處理哪個FlowFile,依此類推。如果不再需要優先級排序器,則可以將其從“選定的優先級排序器”列表拖動到“可用的優先級排序器”列表。

可以使用以下優先順序:

  • FirstInFirstOutPrioritizer:給定兩個FlowFiles,首先處理首先到達連接的FlowFiles。

  • NewestFlowFileFirstPrioritizer:給定兩個FlowFiles,將首先處理數據流中最新的FlowFiles。

  • OldestFlowFileFirstPrioritizer:給定兩個FlowFiles,將首先處理數據流中最舊的FlowFiles。‘這是在沒有選擇優先級的情況下使用的默認方案’。

  • PriorityAttributePrioritizer:給定兩個FlowFiles,將提取名爲“priority”的屬性。將首先處理具有最低優先級值的那個。

請注意,應使用UpdateAttribute處理器在FlowFiles到達具有此優先級設置的連接之前將“priority”屬性添加到FlowFiles。

如果只有一個具有該屬性,它將首先出現。

“priority”屬性的值可以是字母數字,其中“a”將出現在“z”之前,“1”出現在“9”之前

如果“priority”屬性無法解析爲long,則將使用unicode字符串排序。例如:“99”和“100”將被排序,因此帶有“99”的流文件首先出現,但“A-99”和“A-100”將排序,因此帶有“A-100”的流文件首先出現。

更改配置和上下文菜單選項

在兩個組件之間建立連接之後,可以更改連接的配置,並且可以將連接移動到新目的地; 但是,必須先停止連接任一側的處理器,然後才能進行配置或目標更改。在這裏插入圖片描述要更改連接的配置或以其他方式與連接交互,請右鍵單擊連接以打開連接上下文菜單。
在這裏插入圖片描述
可以使用以下選項:
配置:此選項允許用戶更改連接的配置。

查看狀態歷史記錄:此選項打開連接統計信息隨時間的圖形表示。

列表隊列:此選項列出可能正在等待處理的FlowFiles隊列。

轉到源:如果畫布上連接的源組件和目標組件之間有很長的距離,則此選項很有用。通過單擊此選項,畫布視圖將跳轉到連接源。

轉到目標:與“轉到源”選項類似,此選項將視圖更改爲畫布上的目標組件,如果兩個連接的組件之間存在較長距離,則此選項可能很有用。

帶到前面:如果其他東西(例如另一個連接)與其重疊,則此選項將連接帶到畫布的前面。

空隊列:此選項允許DFM清除可能正在等待處理的FlowFiles隊列。當DFM不關心從隊列中刪除數據時,此選項在測試期間特別有用。選擇此選項後,用戶必須確認是否要刪除隊列中的數據。

刪除:此選項允許DFM刪除兩個組件之間的連接。請注意,必須先停止連接兩側的組件,並且連接必須爲空才能刪除。

彎曲連接

要向現有連接添加彎曲點(或彎頭),只需雙擊要彎曲點所在位置的連接即可。然後,您可以使用鼠標抓住彎曲點並拖動它,以便以所需的方式彎曲連接。您可以根據需要添加任意數量的彎曲點。您還可以使用鼠標將連接上的標籤拖動並移動到任何現有折彎點。要刪除折彎點,只需再次雙擊即可。
在這裏插入圖片描述

處理器驗證

在嘗試啓動處理器之前,確保處理器的配置有效非常重要。狀態指示器顯示在處理器的左上角。如果處理器無效,指示器將顯示黃色警告指示器,並帶有感嘆號,表示存在問題:
在這裏插入圖片描述
在這種情況下,使用鼠標懸停在指示器圖標上將提供工具提示,顯示處理器的所有驗證錯誤。一旦解決了所有驗證錯誤,狀態指示器將變爲Stop圖標,表示處理器有效並準備啓動但當前未運行:
在這裏插入圖片描述

站點到站點

當從一個NiFi實例向另一個實例發送數據時,可以使用許多不同的協議。但是,首選協議是NiFi站點到站點協議。站點到站點可以輕鬆安全高效地將數據傳輸到一個NiFi實例中的節點或從一個NiFi實例中的節點或數據生成應用程序傳輸到另一個NiFi實例或其他消費應用程序中的節點。

使用站點到站點提供以下好處:
易於配置

輸入遠程NiFi實例的URL後,將自動發現可用端口(端點)並在下拉列表中提供

安全

站點到站點可選地使用證書來加密數據並提供身份驗證和授權。可以將每個端口配置爲僅允許特定用戶,並且只有那些用戶才能看到該端口甚至存在。有關配置證書的信息,請參閱 “ 系統管理員指南”的“ 安全配置”部分 。

可擴展

隨着遠程羣集中的節點發生更改,將自動檢測這些更改,並在羣集中的所有節點上擴展數據。

高效

站點到站點允許立即發送批量的FlowFiles,以避免建立連接和在對等點之間進行多次往返請求的開銷。

可靠

校驗和由發送方和接收方自動生成,並在數據傳輸後進行比較,以確保沒有發生損壞。如果校驗和不匹配,則只會取消交易並再次嘗試。

自動加載平衡

當節點聯機或退出遠程羣集,或節點的負載變得更重或更輕時,將自動調整定向到該節點的數據量。

FlowFiles維護屬性

當通過此協議傳輸FlowFile時,所有FlowFile的屬性都會隨之自動傳輸。這在許多情況下是非常有利的,因爲由一個NiFi實例確定的所有上下文和豐富隨數據傳播,使得數據易於路由並且允許用戶容易地檢查數據。

適應性強

隨着新技術和新想法的出現,處理站點到站點通信的協議能夠隨之改變。當與遠程NiFi實例建立連接時,執行握手以協商將使用哪種協議和協議版本。這允許添加新功能,同時仍保持與所有舊實例的向後兼容性。此外,如果在協議中發現漏洞或缺陷,它允許更新版本的NiFi禁止通過受損版本的協議進行通信。

配置站點到站點客戶端NiFi實例

遠程進程組:爲了通過站點到站點與遠程NiFi實例進行通信,只需將遠程進程組拖到畫布上,然後輸入遠程NiFi實例的URL。URL與用於轉到該實例的用戶界面的URL相同。此時,您可以使用與將處理器連接到處理器或本地進程組的連接相同的方式將連接拖到遠程進程組或從遠程進程組拖出連接。拖動連接時,您將有機會選擇要連接的端口。請注意,遠程進程組最多可能需要一分鐘才能確定哪些端口可用。

如果從遠程進程組開始拖動連接,則顯示的端口將是遠程組的輸出端口,因爲這表示您將從遠程實例中提取數據。如果連接在遠程進程組上結束,則顯示的端口將是遠程組的輸入端口,因爲這意味着您將數據推送到遠程實例。
傳輸協議:在遠程進程組創建或配置對話框中,您可以選擇用於站點到站點通信的傳輸協議,如下圖所示:
在這裏插入圖片描述
默認情況下,它設置爲RAW,它使用專用端口使用原始套接字通信。如果遠程NiFi實例位於僅允許通過HTTP(S)協議進行訪問或僅可從特定HTTP代理服務器訪問的受限網絡中,則HTTP傳輸協議特別有用。對於通過HTTP代理服務器進行訪問,支持BASIC和DIGEST身份驗證。

本地網絡接口:在某些情況下,可能需要優先選擇一個網絡接口而不是另一個網絡接口。例如,如果存在有線接口和無線接口,則有線接口可能是優選的。可以通過指定要在此框中使用的網絡接口的名稱來配置。如果輸入的值無效,則遠程進程組將無效,並且在解決此問題之前不會與其他NiFi實例通信。

配置站點到站點服務器NiFi實例

檢索站點到站點詳細信息:如果您的NiFi正在安全運行,爲了讓另一個NiFi實例從您的實例中檢索信息,需要將其添加到Global Access“檢索站點到站點詳細信息”策略。這將允許另一個實例查詢您的實例以獲取詳細信息,例如名稱,描述,可用對等體(羣集時的節點),統計信息,OS端口信息以及可用的輸入和輸出端口。在安全實例中使用輸入和輸出端口需要額外的策略配置,如下所述。

輸入端口:爲了允許另一個NiFi實例將數據推送到本地實例,您只需將輸入端口拖到畫布的根進程組即可。輸入端口名稱後,它將添加到您的流程中。您現在可以右鍵單擊“輸入端口”並選擇“配置”,以便調整用於端口的名稱和併發任務數。

如果將站點到站點配置爲安全運行,則需要管理端口的“通過站點到站點接收數據”組件訪問策略。只有已添加到策略的用戶才能與端口通信。

輸出端口:與輸入端口類似,DataFlow Manager可以選擇將輸出端口添加到根進程組。輸出端口允許授權的NiFi實例遠程連接到您的實例並從輸出端口提取數據。配置輸出端口和管理端口的訪問策略將再次允許DFM控制允許的併發任務數,以及授權哪些用戶從正在配置的實例中提取數據。

除了NiFi的其他實例之外,一些其他應用程序可以使用站點到站點客戶端來將數據推送到NiFi實例或從NiFi實例接收數據。例如,NiFi提供Apache Storm spout和Apache Spark Receiver,它們能夠從NiFi的根組輸出端口提取數據。

示例數據流

本節介紹了構建數據流所需的步驟。現在,把它們放在一起。以下示例數據流僅包含兩個處理器:GenerateFlowFile和LogAttribute。這些處理器通常用於測試,但它們也可用於構建快速流程以用於演示目的,並查看NiFi的運行情況。
將GenerateFlowFile和LogAttribute處理器拖到畫布並連接它們(使用上面提供的指南)後,按如下所示進行配置:

生成FlowFile

在“調度”選項卡上,將“運行計劃”設置爲:5秒。請注意,GenerateFlowFile處理器可以非常快速地創建許多FlowFiles; 這就是爲什麼設置運行計劃很重要,這樣這個流程就不會讓NiFi運行的系統不堪重負。

在“屬性”選項卡上,將“文件大小”設置爲:10 KB

日誌屬性

在“設置”選項卡上的“自動終止關係”下,選中“成功”旁邊的複選框。這將在此處理器成功處理後終止FlowFiles。

同樣在“設置”選項卡上,將“公告”級別設置爲“信息”。這樣,當數據流運行時,此處理器將顯示公告圖標(請參閱處理器剖析),用戶可以使用鼠標將鼠標懸停在其上以查看處理器正在記錄的屬性。
數據流應如下所示:
在這裏插入圖片描述

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