我正在尝试了解NiFi数据流机制。我读到Nifi有流文件,其中包含内容和元数据(流文件属性)。
所以我想了解我是否在边缘节点上放置了1 TB的数据,并希望将其传递给Nifi处理器,它是否会将所有内容加载到内存中以供处理器使用?
答案 0 :(得分:5)
FlowFiles(此处称为FF)类似于HTTP数据,因为它们在您突出显示时由内容和属性(元数据)组成。但是,在NiFi框架内处理这些元素的方式是元数据驻留在内存中(每个连接最多配置限制),FF的内容部分实际上是指向磁盘上内容的指针。也就是说,一旦内容被收到NiFi,它就不再存在于任何时间点的内存中,利用pass by reference方法允许NiFi处理任意大的文件。存储在内存中的唯一内容是FF的元数据,可配置为限制每个连接的数量。
当处理器需要进行更改时,这会采用copy on write方法进行修改。
通常,处理器使用流式方法向/从内容存储库读取/写入数据。为此,所包含的处理器避免将FF的全部内容存储在存储器中,因为它可能被证明是禁止的。对于任意大的文件,简单的路由和数据移动应该没有问题;避免堆内存上的压力过大。在查看对这些文件进行转换/修改时,答案是通常没问题,但这取决于数据类型的具体情况。