尼菲 | FlowFile 内存依赖

NiFi | FlowFile Memory dependency

我正在尝试了解 NiFi 数据流机制。我读到 Nifi 有包含内容和元数据的流文件(流文件属性)。

所以我想了解如果我在边缘节点上放置了 1 TB 的数据并想将其传递给 Nifi 处理器,它是否会将所有内容加载到内存中以供处理器使用?

FlowFiles(此处简称为FF)类似于HTTP 数据,因为它们由您突出显示的内容和属性(元数据)组成。然而,这些在 NiFi 框架内处理的方式是元数据驻留在内存中(最多为每个连接的配置限制),FF 的内容部分实际上是指向磁盘上内容的指针。也就是说,一旦内容被接收到 NiFi 中,它就不再在任何时间点保存在内存中,利用 pass by reference 方法允许 NiFi 处理任意大的文件。唯一存储在内存中的是 FF 的元数据,它可以配置为限制每个连接的数量。

当处理器需要进行更改时,这会使用 copy on write 方法进行修改。

一般来说,处理器对 reading/writing 数据 to/from 内容存储库使用流式处理方法。为此,包含的处理器避免将 FF 的全部内容存储在内存中,因为这可能会令人望而却步。任意大文件的简单路由和数据移动应该没有问题;避免堆内存压力过大。当查看对此类文件执行 transformations/modifications 时,答案是通常没问题,但这取决于数据类型的具体情况。