2016-09-10 67 views
1

我想了解NiFi數據流機制。我讀過Nifi有保存內容和元數據(流文件屬性)的流文件。NiFi | FlowFile內存依賴

所以我想了解,如果我有1 TB的數據放在邊緣節點上,並且想將它傳遞給Nifi處理器,是否會將所有內容都加載到內存中供處理器使用?

回答

3

FlowFiles(以下簡稱FF)類似於HTTP數據,因爲它們在突出顯示時由內容和屬性(元數據)組成。然而,這些在NiFi框架內處理的方式是元數據駐留在內存中(每個連接的配置限制最多),而FF的內容部分實際上是指向磁盤上內容的指針。一旦內容被接收到NiFi中,它就不會再在任何時間保存在內存中,而是利用pass by reference方法允許NiFi處理任意大的文件。存儲在內存中的唯一東西是FF的元數據,它可以配置爲限制每個連接的數量。

當處理器需要進行更改時,這會對copy on write方法進行修改。

一般而言,處理器使用流式方法來讀取/寫入數據到內容存儲庫或從內容存儲庫寫入數據。爲此,所包含的處理器避免將FF內容的全部內容存儲在內存中,因爲它可能證明是禁止的。對於任意大的文件,簡單的路由和數據移動應該不成問題;避免堆內存過大的壓力。當考慮對這些文件進行轉換/修改時,答案是它通常沒問題,但它取決於數據類型的細節。

+0

我還建議查看添加了NiFi 0.7.0的「NiFi in Depth」文檔(仍然與1.0.0保持同步) Available here:https://nifi.apache.org/ docs/nifi-docs/html/nifi-in-depth.html – JDP10101

+0

非常感謝apiri。關於我的用例,我還有幾個問題。我會爲此發佈另一個問題。 – Shashi

+0

http://stackoverflow.com/questions/39436806/nifi-flow-file-movement-withing-processor – Shashi