来源库 Provenance Repository
来源库包含有关数据来源的信息。 接下来的四个部分是Provenance Repository属性。
nifi.provenance.repository.implementation
Provenance Repository实现。缺省值是org.apache.nifi.provenance.PersistentProvenanceRepository。另外还有两个存储库。要将起源事件存储在内存中而不是磁盘上(在这种情况下,所有事件将在重新启动时丢失,并且事件将以先入先出的顺序逐出),请将此属性设置为org.apache.nifi.provenance .VolatileProvenanceRepository。这在Java堆中留下了可配置数量的Provenance事件,因此可以保留的事件数量非常有限。
从Apache NiFi 1.2.0开始,可以使用第三个和第四个选项:org.apache.nifi.provenance.WriteAheadProvenanceRepository和org.apache.nifi.provenance.EncryptedWriteAheadProvenanceRepository。这个实现是为了替换PersistentProvenanceRepository而创建的。 PersistentProvenanceRepository最初编写的目的是在生成Provenance事件时提供持久性,并提供循序遍历这些事件的能力。之后,希望能够压缩数据以便可以存储更多的数据。再之后,添加了索引和查询数据的能力。需求随着时间的变化,该存储库不断变化,并没有任何重大的重新设计。当在nifi中处理大量小的FlowFiles时,PersistentProvenanceRepository可能很快成为瓶颈。然后有了WriteAheadProvenanceRepository提供与PersistentProvenanceRepository相同的功能,同时提供更好的性能,更改为WriteAheadProvenanceRepository很简单,因为这两个存储库支持大部分相同的属性。
注意,但是,以下警告:WriteAheadProvenanceRepository将使用由PersistentProvenanceRepository存储的Provenance数据。但是,PersistentProvenanceRepository可能无法读取由WriteAheadProvenanceRepository写入的数据。因此,一旦Provenance Repository更改为使用WriteAheadProvenanceRepository,就不能将其更改回PersistentProvenanceRepository,而不删除Provenance Repository中的数据。因此,建议用户在更改实现之前,确保其版本是稳定的,以防出现任何问题导致用户需要回滚到不支持WriteAheadProvenanceRepository的NiFi的先前版本。正是由于这个原因,此时默认仍然设置为PersistentProvenanceRepository。
Persistent Provenance Repository Properties
当nifi.provenance.repository.implementation为org.apache.nifi.provenance.PersistentProvenanceRepository时支持的属性
Property | Description |
---|---|
nifi.provenance.repository .directory.default* |
Provenance Repository的位置。 默认值是./provenance_repository。注意:可以使用nifi.provenance.repository.directory指定多个出处。 前缀具有唯一的后缀和单独的路径作为值。例如,为了提供另外两个位置作为源出处库的一部分,用户还可以用下列关键字指定其他属性:nifi.provenance.repository .directory.provenance1=/repos/provenance1nifi.provenance.repository.directory.provenance2=/repos/provenance2提供三个总位置,包括nifi.provenance.repository.directory.default。 |
nifi.provenance.repository .max.storage.time |
保留数据来源信息的最长时间。 默认值是24小时。 |
nifi.provenance.repository .max.storage.size |
一次存储的最大数据来源信息。 默认值是1 GB。 |
nifi.provenance.repository .rollover.time |
在滚动最新的数据起源信息之前要等待的时间,以便在用户界面中可用。 默认值是30秒。 |
nifi.provenance.repository .rollover.size |
一次滚动的信息量。 默认值是100 MB。 |
nifi.provenance.repository .query.threads |
用于Provenance Repository查询的线程数量。 默认值是2。 |
nifi.provenance.repository .index.threads |
用于索引Provenance事件的线程数量,以便它们可以搜索。 默认值为2.对于在很多FlowFiles上运行的流,Provenance事件的索引可能成为瓶颈。 如果是这样的话,会出现一个公告,指出“The rate of the dataflow is exceeding the provenance recording rate. Slowing down flow to accommodate”。 如果发生这种情况,增加此属性的值可能会增加Provenance Repository能够处理这些记录的速率,从而提高整体吞吐量。 |
nifi.provenance.repository .compress.on.rollover |
指示是否在滚动时压缩出处信息。 默认值是true。 |
nifi.provenance.repository .always.sync |
如果设置为true,则对存储库的任何更改都将同步到磁盘,这意味着NiFi将要求操作系统不要缓存信息。 这代价是非常昂贵的,NiFi性能会显著降低。 但是,如果为false,如果突然断电或操作系统崩溃,则可能会有数据丢失的可能性。 默认值是false。 |
nifi.provenance.repository .journal.count |
应该用来序列化Provenance事件数据的日志文件的数量。 增加此值将允许更多的任务同时更新存储库,但会导致日后更加昂贵的日志文件合并。 理想情况下,这个值应该等于预期同时更新存储库的线程数量,但是在很多环境中16这个值往往很好。 默认值是16。 |
nifi.provenance.repository .indexed.fields |
这是应该索引并可搜索的字段的逗号分隔列表。 未编入索引的字段将不可搜索。 有效的字段是:EventType, FlowFileUUID, Filename, TransitURI, ProcessorID, AlternateIdentifierURI, Relationship, Details。 默认值是:EventType,FlowFileUUID,Filename,ProcessorID。 |
nifi.provenance.repository .indexed.attributes |
这是FlowFile属性的逗号分隔列表,应该对这些属性进行索引并进行搜索。 这是默认的空白。 但是需要考虑的一些很好的例子是文件名,uuid和mime.type以及任何自定义的属性可能都是对你有价值的。 |
nifi.provenance.repository .index.shard.size |
在搜索Provenance Repository时,分片大小的较大值将导致更多的Java堆使用,但应提供更好的性能。 默认值是500 MB。 |
nifi.provenance.repository .max.attribute.length |
指示从存储库检索Provenance事件时FlowFile属性可以达到的最大长度。 如果任何属性的长度超过此值,则在检索事件时将被截断。 默认值是65536。 |