2017-05-08 151 views
2

我正在評估Apache NiFi用於項目。我有NiFi v1.1.2的四個實例運行於雲上Ubuntu 14系統。其中三個實例充當遠程進程組(R1,R2 & R3),其餘實例(M1)用於管理RPG之間的流。 M1生成一個FlowFile,通過由三個RPG組成的管道傳遞FlowFile,並在最後記錄FlowFile。每個RPG只需將R{id}附加到FlowFile中的10 ProcessedBy屬性中,因此可以輕鬆看到處理數據的順序。Apache NiFi通過遠程進程組的不規則數據流

我遇到的問題是訂單沒有按預期100%的時間。我使用2個流水線(P1 & P2),它們分別以R1->R2->R3R2->R1->R3的順序遍歷RPG。 我所看到的是〜的FlowFile在P1不受R2處理,而在P2實際上調轉方向,由R2因此流程順序變爲兩次處理時間的50%R2->R1->R2->R3

編輯:

這是我流的M1NiFi Flow

+0

你能分享一個流的圖像嗎?你如何分隔P1與P2的流量?您是否查看了樣本流文件中的出處事件以查看其路徑? – James

+0

@詹姆斯分隔'P1'&'P2'的流量我要麼跑一個,要麼跑另一個。我正在查看數據來源事件,但實際上並沒有提供任何關於原因的信息。我可以看到FlowFile在管道中移動的路徑,但我看不到導致錯誤流動的原因。 –

回答

2

的圖像,我不相信遠程過程組表現有一種「功能的語義」你期待的。奇怪的flowfile流量模式正在發生,因爲來自流程左側的流程文件正在從右側(和相反)的RPG輸出中出現,但這對於RPG輸出端口來說是正確的行爲。

從一個輸入端口向遠程流發送流文件並不能保證它將通過同一RPG圖節點上的輸出端口「返回」。遠程輸出端口的多個監聽器將分別接收輸出的一部分。將RPG輸入與其輸出進行可視化連接是典型的,推薦的,並且可以說是組織流程的最明顯的方式。但這不是必需的。

您可以在遠程NiFis上創建不同的命名端口,爲您提供更多的遠程輸入/輸出選項。

我僅使用兩個NiFi進行了樣本流程,其中node1.nifi發送到node2.nifi上的遠程進程組並從遠程進程組接收數據。 我組織了流程以強調RPG輸入和輸出端口之間的潛在斷開關係。

NiFi Remote Process Groups

三個RPG圖形節點的所有引用在node2.nifi同一RPG,但輸入和輸出分離。產量在兩個地點收到,導致分配略有不平等。

+0

謝謝@詹姆斯我沒有意識到輸入/輸出以這種方式工作,我看到的結果現在完全合理。 –

+0

我試圖實現的是讓RPG可以在不修改的情況下重複使用,即它可以同時在許多管道中使用,並且每次都會將處理後的數據返回到發送管道。是否有一個「最佳實踐」方法來實現這一目標? –

+0

一個選項是在服務器上使用InvokeHttp的HTTP服務和HandleHttpRequest ... HandleHttpResponse。這將提供最適合的呼叫和響應模式。 – James