了解NiFi内容存储库归档怎样工作

2020-11-26 11:34:04 浏览数 (1)

什么是内容存储库存档?

nifi.properties文件中有三个属性涉及 NiFi 内容存储库中内容的存档。

这些值的默认 NiFi 值如下所示:

代码语言:txt复制
nifi.content.repository.archive.max.retention.period=12 hours
nifi.content.repository.archive.max.usage.percentage=50%
nifi.content.repository.archive.enabled=true

内容存档的目的是使用户能够通过 数据源(provenance) UI 查看和/或重播 不再位于数据流中的内容。如果与特定来数据源事件关联的内容在内容存档中不再存在,则数据源将仅向用户报告该内容无效。

内容仓库存档位于已配置的内容存储库目录中。当存档"内容声明(content claim)"时,该声明将移动到同一磁盘分区的存档子目录中。这样,存档操作不会影响 NiFi 的内容存储库性能。

配置的max retention period会告诉NiFi从内容存档目录清除存档的“内容声明”之前,应保留多长时间。

配置的 max usage percentage 会告诉NiFi它应该在什么时候开始清除已归档的内容声明,以使整体磁盘使用率保持在或低于所配置的值。

以上两个属性是使用or策略强制执行的。 无论哪个最大值出现,都会触发清除已归档的内容声明。

什么是内容声明?

在整篇文章中,我都提到了“内容声明”。 了解内容声明将有助于您了解磁盘使用情况。 NiFi将内容存储在声明中的内容存储库中。 单个声明可以包含1到多个FlowFiles的内容。 在nifi.properties文件中可以找到控制内容声明构建方式的属性。 默认配置值如下所示:

代码语言:txt复制
nifi.content.claim.max.appendable.size=10 MB

内容声明的目的是最有效地利用磁盘存储。 处理许多非常小的文件时尤其如此。

配置的max appendable size 会告诉NiFi NiFi在开始新声明之前应在什么时候停止将附加内容附加到现有内容声明中。 这并不意味着NiFi提取的所有内容都必须小于10 MB。 这也不意味着每个内容声明的大小至少为10 MB。

那么,何时将“内容声明”移至存档?

非激活态的流文件将执行存档.这意味着报告的数据流中所有FlowFiles的累积大小可能永远不会与内容存储库中的实际磁盘使用情况匹配。

在 NiFi 调优时,必须始终考虑预期的数据。 如果只处理很小的数据或非常大的数据,则使用默认值。 如果您要处理的数据范围从非常小到非常大,则可能需要max appendable sizemax flow file设置。 这样可以减少将FlowFile放入单个声明中的数量。 反过来,这减少了单个数据在内容存储库中保持大量数据仍处于活动状态的可能性。

0 人点赞