我启动了一个apache/nifi容器,构建并配置了一个流。
我想以某种方式将这个流保存在某个地方,这样它就可以加载到运行Nifi的新docker镜像中。
这样,“用户”只需执行“docker run...”将启动nifi的一个实例,加载并启动流。
我不清楚是什么文件(nar、xml等)需要对用户要运行的映像可用。
发布于 2020-09-22 02:49:59
如果您没有自定义内容,可以保存/conf目录中的flow.xml.gz以保存流。
如果还希望保存内容流文件或当前流文件,则还应保存flowfile repository和content repository
如果您有海关处理程序,则应将nar保存在lib目录中。
在启动nifi之前,所有内容都应该存在于nifi目录中。
发布于 2021-01-03 09:57:14
您可以使用nifi-toolkit将流和进程组部署到Apache实例,而不必依赖于NiFi。
https://nifi.apache.org/docs/nifi-docs/html/toolkit-guide.html
此设置要求您具备:
下面是一个基于空的Apache NiFi实例和Nifi-Registry的工作示例(假设您的Apache NiFi-Registry容器的主机名是nifi-registry,它的端口是默认的18080)。在Apache NiFi 1.12.1上测试。
首先,您需要通过Apache Registry为您的流生成JSON文件。
/opt/nifi/nifi-toolkit-current/bin/cli.sh nifi create-reg-client -rcn registry -rcu http://nifi-registry:18080
创建将包含您的流的流程组。右键单击它,然后单击“版本”和“启动版本控制”。这将在NiFi注册表中保存您的流。在GUI中处理您的流程,当您准备好时,右键单击您的进程组并提交您最后的更改。现在,您需要从注册表导出流的JSON。
/opt/nifi/nifi-toolkit-current/bin/cli.sh registry export-flow-version -u http://nifi-registry:18080 -f <flowid> -fv <flowversion> > <json_file>
既然您的JSON流已经准备好了,您就可以将其部署到一个新的环境中了。
/opt/nifi/nifi-toolkit-current/bin/cli.sh registry create-bucket -u http://nifi-registry:18080 -bn <bucketname>
/opt/nifi/nifi-toolkit-current/bin/cli.sh registry create-flow -u http://nifi-registry:18080 -b <bucketid> -fn <flowname>
Apache导入您的流(必须先前已从
/opt/nifi/nifi-toolkit-current/bin/cli.sh registry import-flow-version -u http://nifi-registry:18080 -f <flowid> -i <json_file>
/opt/nifi/nifi-toolkit-current/bin/cli.sh nifi pg-import -b <bucketid> -f <flowid> -fv <flowversion>
/opt/nifi/nifi-toolkit-current/bin/cli.sh nifi pg-enable-services -pgid <processgroupid>
/opt/nifi/nifi-toolkit-current/bin/cli.sh nifi pg-start -pgid <processgroupid>
请记住,在执行这些命令之前,Apache NiFi应该已经启动并运行。如果您计划将这些指令嵌入到Dockerfile中,则应该实现一些等待服务启动的逻辑。
您还可以看看NiFi工具包的这个Python包装器:
https://github.com/Chaffelson/nipyapi
最后,Apache NiFi还提供了一些REST API,它们可能会对您有所帮助:
https://stackoverflow.com/questions/63997535
复制相似问题