NIFI 状态管理State Management

状态管理

NiFi为Processors, Reporting Tasks, Controller Services以及框架本身提供了一种持久化状态的机制。 这允许一个处理器,例如,在NiFi重新启动之后,从它离开的地方恢复。 此外,它允许处理器存储一些信息,以便处理器可以从集群中的所有不同节点访问该信息。 这允许一个节点获取另一个节点离开的位置,或者在集群中的所有节点之间进行协调。

Configuring State Providers

当组件决定存储或恢复状态时,它通过提供一个“Scope”来实现-本地节点(Node-local)或集群范围( Cluster-wide)。 然后根据此Scope以及配置的State Providers来确定用于存储和检索此状态的机制。 nifi.properties文件包含三个与这些State Providers相关的属性配置。

nifi.state.management.configuration.file 指定用于配置local 或Cluster-wide的State Providers的外部XML文件。 这个XML文件可能包含多个提供者的配置

nifi.state.management.provider.local 指定在xml文件中配置的local  State Provider 的名称

nifi.state.management.provider.cluster 指定在xml文件中配置的cluster-wide State Provider 的名称

该XML文件由一个顶级的stateManagement元素组成,该元素具有一个或多个local-provider以及零个或多个cluster-provider元素。 每一个这些元素中的都包含一个id元素,用于指定nifi.properties文件中可以引用的标识符,以及一个class元素,该元素指定用于实例化State Provider的完全限定类名。 最后,这些元素中的每一个都可以有零个或多个property元素。 每个property元素都有一个属性,名称是State Provider支持的属性的名称。property元素的文本内容是属性的值。

一旦在state-management.xml文件(或nifi.state.management.configuration.file配置了的任何文件)中配置了这些State Provider,这些State Provider可能会被其id引用。

默认情况下,本地状态提供程序配置为WriteAheadLocalStateProvider,将数据保存到$ NIFI_HOME/state/local目录。 默认的集群状态提供程序被配置为ZooKeeperStateProvider。 默认的基于ZooKeeper的提供者在使用之前必须配置它的nifi.zookeeper.connect.string属性。

向ZooKeeper添加数据时,有两个访问控制选项:Open和CreatorOnly。 如果“Access Control”属性设置为“Open”,则允许任何人登录到ZooKeeper,并具有查看,更改,删除或管理数据的完全权限。 如果指定了CreatorOnly,则仅允许创建数据的用户读取,更改,删除或管理数据。 为了使用CreatorOnly选项,NiFi必须提供某种形式的认证。 有关如何配置身份验证的更多信息,请参见下面的ZooKeeper访问控制部分。

如果将NiFi配置为以独立模式运行,则不需要在state-management.xml文件中配置集群提供程序元素,实际上即使配置了也会被忽略。 但是,本地提供者元素必须始终存在。 此外,如果NiFi在集群中运行,则每个节点还必须具有集群提供程序元素并进行正确配置。 否则,NiFi将无法启动。

尽管这些提供程序需要配置的属性并不多,但是它们被外化为一个单独的state-management.xml文件,而不是通过nifi.properties文件进行配置,因为不同的实现可能需要不同的属性, 更容易维护和理解基于XML的文件中的配置,而不是将提供者的属性和所有其他NiFi框架特定的属性混合在一起。

应该注意的是,如果处理器和其他组件使用 Cluster-wide保存状态,如果实例是独立实例(不在集群中)或与集群断开连接,将使用本地状态提供程序。 这也意味着,如果将独立实例迁移到群集,则该状态将不再可用,因为组件将开始使用群集状态提供程序而不是本地状态提供程序。

其他配置

nifi.state.management.embedded.zookeeper.start 指定NiFi的这个实例是否应该启动嵌入式ZooKeeper服务器。 这与ZooKeeperStateProvider结合使用。

nifi.state.management.embedded.zookeeper.properties 指定一个属性文件,其中包含启动的嵌入式ZooKeeper服务器的配置(如果nifi.state.management.embedded.zookeeper.start属性设置为true)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,040评论 6 342
  • NiFi采用了Zero-Master聚类模式。集群中的每个节点都对数据执行相同的任务,但是每个节点都使用不同的数据...
    我的小南瓜阅读 7,172评论 0 3
  • 早饭:没吃。 午饭:一笼小茭瓜包子,紫菜汤。 晚饭:一根25g无淀粉火腿肠,一些葡萄,两个橘子。 支出:打车53元...
    守夜人雪诺阅读 968评论 0 0
  • 文/洪生鹏 1 一早公司就来了一批人来面试,一下子来了这么多人倒是少见,以往要是有面试也就一两位。因为面试的是技术...
    洪生鹏阅读 11,230评论 59 42