2017-04-14 81 views
0

根據NiFi's homepage,它「支持數據路由,轉換和系統中介邏輯的強大且可擴展的有向圖」。使用NiFi調度Hadoop批處理

我在過去幾個月一直在玩NiFi,不禁想知道爲什麼不用它來調度批處理過程。

比方說,我有一個用例,其中數據流入Hadoop,由一系列Hive \ MapReduce作業處理,然後導出到某個外部NoSql數據庫供某些系統使用。

使用NiFi爲了將數據攝入和流入Hadoop是NiFi的一個用例。
但是,使用Nifi來安排Hadoop上的作業(「Oozie-like」)是一種用例,我沒有遇到過其他人的實現,並且由於它似乎完全可以實現,所以我試圖瞭解它是否存在是不這樣做的理由。

在NiFi上完成所有工作的好處是可以在一個地方從源代碼到目的地直觀地呈現整個數據過程。在流量複雜的情況下,對維護非常重要。

換句話說 - 我的問題是:是否有理由不使用NiFi作爲批處理的調度程序\協調程序?如果是這樣 - 在這種用例中可能會出現什麼問題?


PS - 我讀過這樣的:「Is Nifi having batch processing?」 - 但我的問題的目的是「在NiFi批量處理」不同的感覺比一個在附加問題提出

回答

0

你是正確的您將會在流程畫布上顯示時間表觸發器,但是NiFi並不是作爲調度器/協調器設計的。 Here is a comparison of some scheduler options

使用NiFi來控制調度感覺就像是一個「錘子」解決方案來尋找問題。這將減少以編程方式定義這些時間表的難易程度,或者減少從外部工具與它們交互的時間。理論上,您可以定義計劃格式,從文件,數據源,端點等將它們讀入NiFi,並使用ExecuteStreamCommand,ExecuteScriptInvokeHTTP處理器啓動批處理過程。這感覺就像引入了不必要的中間步驟。如果整合&可視化是您的目標,您可以讓監控流程部分從它們的本機格式(Oozie,XML等)中提取這些調度定義,並將它們顯示在NiFi中,而無需讓NiFi負責定義和執行調度。

+0

感謝您的回答。我會盡力澄清我的問題:我知道NiFi的優勢(以及爲獲得數據而通過NiFi流動的數據),並打算在相關時使用它們。但是,在許多使用情況下,我想運行批處理流程,並想知道我會錯過什麼,如果我這樣做,我會在哪裏失敗。 – giladovich