Apache nifi 如何迁移NiFi处理器&x27;s簇状态

Apache nifi 如何迁移NiFi处理器&x27;s簇状态,apache-nifi,Apache Nifi,我遇到的一个例子是:在我们的工作流中,所有开发人员都对开发环境进行更改,并通过将其导出为XML模板来提交修改后的处理器组PG。其他人删除了一个旧的PG,并从测试(prod)环境的模板中安装了一个新的PG 我试图保存此PG的全状态处理器的状态,以便在“野蛮重新安装”后恢复它。这一步很容易通过一个漂亮的NiFi REST API完成: /nifi-api/processors/{id}/state Gets the state for a processor 然后我需要把它放回去。假设已经完成

我遇到的一个例子是:在我们的工作流中,所有开发人员都对开发环境进行更改,并通过将其导出为XML模板来提交修改后的处理器组
PG
。其他人删除了一个旧的
PG
,并从测试(prod)环境的模板中安装了一个新的
PG

我试图保存此
PG
的全状态处理器的状态,以便在“野蛮重新安装”后恢复它。这一步很容易通过一个漂亮的NiFi REST API完成:

/nifi-api/processors/{id}/state   Gets the state for a processor
然后我需要把它放回去。假设已经完成了查找相应的Pocessors GUI的工作-好的,GUI是新的,但这“似乎”不是问题。我不能把国家放回去:

我发现(特别是通过调查
TestAbstractListProcessor.java
发现),如果我有一个处理器GUID,并将一个文件
conf/state/
放入特殊格式的内容中,比如:
param={json params}
,那么在第一个(并且只有第一个)处理器运行之后,
将其状态从该文件迁移(然后将其删除)。我发现的第二个选项是直接将集群状态(我只关心集群状态完整的处理器)放入Zookeeper路径
/nifi/components/

但有一个问题——在更改处理器属性后,这根本不起作用。因此我甚至无法创建处理器,修改(初始设置)其状态,提供
conf/state/
(或设置
/nifi/components/
)并首次运行看到发生了一些属性更改,放弃已读取的状态

在NiFi处理器组升级的情况下,如何正确迁移NiFi处理器的CLUSTE状态?出于某些原因(我还不了解),NiFi REST API只允许
get
clear
处理器状态,但不允许
设置它:

/nifi-api/processors/{id}/state/clear-requests   Clears the state for a processor
But there is no set-state API

强烈建议使用nifi-registry。是的,如果使用nifi-registry,则无需删除PG进行升级,这意味着您不会丢失状态。