【问题标题】:Migrate Dataflow NIFI迁移数据流 NIFI
【发布时间】:2017-01-04 16:03:26
【问题描述】:

我在独立版本中使用 NIFI,现在我已经安装了带有 HDF 的集群 NIFI 版本,我想将我的 DataFlow 从我的独立版本迁移到集群版本。

最好的方法是什么?

【问题讨论】:

  • 您使用的是哪个版本的 NiFi?
  • @JDP10101 NiFi 1.1.0

标签: apache-nifi


【解决方案1】:

假设您的独立 NiFi 中有活动数据,您会:

  • 停止所有源处理器并让您的流程流出,直到任何队列中都没有活动数据。
  • 停止 HDF 集群
  • 停止独立实例并将 conf/flow.xml.gz 从独立实例复制到 HDF 集群的每个节点,位于 /var/lib/nifi/conf/
  • 启动您的 HDF 集群

如果您不关心独立 NiFi 中发生的任何事情,请跳过第一步。

更新:

另一个考虑因素是处理敏感属性(即处理器中的密码字段)......

在 nifi.properties 中,属性 nifi.sensitive.props.key 用于加密 flow.xml.gz 中的敏感属性。您不必为此属性填写值,如果您将其留空,则代码中有默认密码。

HDF 的 Ambari 安装会强制您为 nifi.sensitive.props.key 设置一个值,因此除非您在两个实例上设置相同的值,否则 HDF 集群将尝试解密 flow.xml 中的值.gz 使用与加密时不同的密钥。

nifi-toolkit(可以从 NiFi 主页下载)提供了一个工具,可以将 flow.xml.gz 的敏感属性键迁移到新值。

这是一个例子......

假设 nifi-1 是原始 NiFi 实例,并且 nifi-1 的敏感属性键设置为“password1”。

然后您将该 flow.xml.gz 复制到 nifi-2 并且 nifi-2 的敏感属性键是“password2”。

运行此命令将使用原始敏感属性密钥从 nifi-1 读取 flow.xml.gz,并用新密码加密敏感属性写出新版本的 in nifi-2:

./nifi-toolkit-1.2.0-SNAPSHOT/bin/encrypt-config.sh -f /path/to/nifi-1/conf/flow.xml.gz -g /path/to/nifi-2/conf/flow.xml.gz -s password2 -n /path/to/nifi-1/conf/nifi.properties -o /path/to/nifi-2/conf/nifi.properties -x
  • -f是源flow.xml.gz(nifi-1)
  • -g 是目标 flow.xml.gz (nifi-2)
  • -s 是新的敏感属性键 (nifi-2)
  • -n是源nifi.properties(nifi-1)
  • -o 是目标 nifi.properties (nifi-2)
  • -x 告诉它只处理敏感属性

【讨论】:

  • 再次启动我的 HDF 集群后出现此错误:javax.crypto.BadPaddingException: pad block损坏
  • 在您的原始流程中,您是否有任何具有敏感属性(即密码字段)的处理器?
  • 是的,我有一些带有敏感字段的invokehttp
  • 好的,在您的原始实例上,您是否在 nifi.properties 中为 nifi.sensitive.props.key 设置了一个值?如果是这样,您能否确保在新集群上设置相同的值。
  • 查看我对答案所做的更新,包括如何迁移敏感属性值的密码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多