Apache nifi apache nifi无状态-无法设置控制器服务的parm(DBCPConnectionPool 1.10.0)

Apache nifi apache nifi无状态-无法设置控制器服务的parm(DBCPConnectionPool 1.10.0),apache-nifi,Apache Nifi,我将按照以下步骤创建一个在mysql数据库中执行sql的简单进程组。我已将db控制器服务的必要参数放入参数上下文中 它在nifi画布上运行良好。然后我将其添加到注册表并准备一个json parm文件:stateless-simpledb.json { "registryUrl": "http://localhost:18080", "bucketId": "cac8f127-e328-45c1-a4cb-0e03dc837ceb", "flowId": "cc2753f2-78

我将按照以下步骤创建一个在mysql数据库中执行sql的简单进程组。我已将db控制器服务的必要参数放入参数上下文中

它在nifi画布上运行良好。然后我将其添加到注册表并准备一个json parm文件:stateless-simpledb.json

{
  "registryUrl": "http://localhost:18080",
  "bucketId": "cac8f127-e328-45c1-a4cb-0e03dc837ceb",
  "flowId": "cc2753f2-78f3-4449-a2fd-343dfeaafe15",
  "flowVersion": "3",
  "parameters": {
    "lastIngestId" : "20000",
   "mysql-jdbc-driver-name" : "com.mysql.jdbc.Driver",
   "db-user" : "root",
   "db-password" : "password",
   "db-con-url" : "jdbc:mysql://localhost:3306/mms",
   "jdbc-jar-path" : "/program/jdbc/mysql-connector-java.jar"

  }
}
并运行一次性命令:

/program/nifi/bin/nifi.sh stateless RunFromRegistry Once --file /app/poc/nifi-stateless/conf/stateless-simpledb.json
它会引发错误:

       === FlowFileRepository Type ===
        org.apache.nifi.controller.repository.RocksDBFlowFileRepository
                org.apache.nifi:nifi-framework-nar:1.10.0 || /program/nifi-1.10.0/work/stateless-nars/nifi-framework-nar-1.10.0.nar-unpacked
        org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
                org.apache.nifi:nifi-framework-nar:1.10.0 || /program/nifi-1.10.0/work/stateless-nars/nifi-framework-nar-1.10.0.nar-unpacked
        org.apache.nifi.controller.repository.VolatileFlowFileRepository
                org.apache.nifi:nifi-framework-nar:1.10.0 || /program/nifi-1.10.0/work/stateless-nars/nifi-framework-nar-1.10.0.nar-unpacked
        === End FlowFileRepository types ===
23:32:32.626 [main] INFO org.apache.nifi.stateless.bootstrap.ExtensionDiscovery - Successfully discovered extensions in 4411 milliseconds
23:32:32.633 [main] DEBUG org.apache.nifi.stateless.core.ComponentFactory - Setting context class loader to org.apache.nifi.nar.InstanceClassLoader@50fa5938 (parent = org.apache.nifi.nar.NarClassLoader[/program/nifi-1.10.0/work/stateless-nars/nifi-dbcp-service-nar-1.10.0.nar-unpacked]) to create org.apache.nifi.dbcp.DBCPConnectionPool
23:32:32.647 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input #{jdbc-jar-path} found 1 Parameter references: [org.apache.nifi.parameter.StandardParameterReference@2d3eecda]
23:32:32.650 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input /program/jdbc/mysql-connector-java.jar found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input 500 millis found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input 8 found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input 0 found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input 8 found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input -1 found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input -1 found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input 30 mins found 0 Parameter references: []
23:32:32.651 [main] DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser - For input -1 found 0 Parameter references: []
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.nifi.bootstrap.RunStatelessNiFi.main(RunStatelessNiFi.java:69)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.nifi.StatelessNiFi.main(StatelessNiFi.java:103)
        ... 5 more
Caused by: java.lang.RuntimeException: Failed to enable Controller Service {id=691ecc97-ff46-3a5e-8aad-37dc568bc247, name=MYSQL-MMS-stateless-test, type=class org.apache.nifi.dbcp.DBCPConnectionPool} because validation failed: ['Database Connection URL' is invalid because Database Connection URL is required, 'Database Driver Class Name' is invalid because Database Driver Class Name is required]
        at org.apache.nifi.stateless.core.StatelessControllerServiceLookup.enableControllerServices(StatelessControllerServiceLookup.java:133)
        at org.apache.nifi.stateless.core.StatelessFlow.<init>(StatelessFlow.java:153)
        at org.apache.nifi.stateless.core.StatelessFlow.createAndEnqueueFromJSON(StatelessFlow.java:469)
        at org.apache.nifi.stateless.runtimes.Program.runLocal(Program.java:133)
        at org.apache.nifi.stateless.runtimes.Program.launch(Program.java:67)
        ... 10 more
==FlowFileRepository类型===
org.apache.nifi.controller.repository.RocksDBFlowFileRepository
org.apache.nifi:nifi-framework-nar:1.10.0 | | |/program/nifi-1.10.0/work/stateless-nars/nifi-framework-nar-1.10.0.nar-unpacketed
org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
org.apache.nifi:nifi-framework-nar:1.10.0 | | |/program/nifi-1.10.0/work/stateless-nars/nifi-framework-nar-1.10.0.nar-unpacketed
org.apache.nifi.controller.repository.VolatileFlowFileRepository
org.apache.nifi:nifi-framework-nar:1.10.0 | | |/program/nifi-1.10.0/work/stateless-nars/nifi-framework-nar-1.10.0.nar-unpacketed
==结束流文件存储库类型===
23:32:32.626[main]INFO org.apache.nifi.stateless.bootstrap.ExtensionDiscovery-在4411毫秒内成功发现扩展
23:32:32.633[main]DEBUG org.apache.nifi.stateless.core.ComponentFactory-将上下文类加载器设置为org.apache.nifi.nar。InstanceClassLoader@50fa5938(parent=org.apache.nifi.nar.NarClassLoader[/program/nifi-1.10.0/work/stateless-nars/nifi-dbcp-service-nar-1.10.0.nar unpacketed])创建org.apache.nifi.dbcp.DBCPConnectionPool
23:32:32.647[main]DEBUG org.apache.nifi.parameter.expressionlanguageawarepareterparser-对于输入#{jdbc jar path},找到1个参数引用:[org.apache.nifi.parameter]。StandardParameterReference@2d3eecda]
23:32:32.650[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入/program/jdbc/mysql-connector-java.jar,找到了0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入500毫秒,找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入8,找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入0,找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入8,找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入-1找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入-1找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入30分钟,找到0个参数引用:[]
23:32:32.651[main]DEBUG org.apache.nifi.parameter.ExpressionLanguageAwareParameterParser-对于输入-1找到0个参数引用:[]
线程“main”java.lang.reflect.InvocationTargetException中出现异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.nifi.bootstrap.RunStatelessNiFi.main(RunStatelessNiFi.java:69)
原因:java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.nifi.statelessonifi.main(StatelessNiFi.java:103)
... 还有5个
原因:java.lang.RuntimeException:未能启用控制器服务{id=691ecc97-ff46-3a5e-8aad-37dc568bc247,name=MYSQL MMS无状态测试,type=class org.apache.nifi.dbcp.DBCPConnectionPool},因为验证失败:[“数据库连接URL”无效,因为需要数据库连接URL;“数据库驱动程序类名”无效,因为需要数据库驱动程序类名]
位于org.apache.nifi.stateless.core.StatelessControllerServiceLookup.enableControllerServices(StatelessControllerServiceLookup.java:133)
位于org.apache.nifi.stateless.core.StatelessFlow(StatelessFlow.java:153)
位于org.apache.nifi.stateless.core.StatelessFlow.createAndeQueueFromJSON(StatelessFlow.java:469)
位于org.apache.nifi.stateless.runtimes.Program.runLocal(Program.java:133)
位于org.apache.nifi.stateless.runtimes.Program.launch(Program.java:67)
…还有10个
apache nifi无状态函数似乎无法设置控制器服务,即使它在“进程组”范围内


有人有什么建议吗?

如评论中所述,这似乎是控制器服务验证的已知问题

这可以通过使用Nifi 1.12及以上版本来避免,因为它在以下jira中得到了修复:


虽然我不能完全确定这一点,但也有可能这只是表明您的控制器服务配置不正确。这值得仔细检查。

我对StandardSSLContextService也有类似的问题。看起来没有对服务执行参数。您找到解决方案了吗?看起来像这将在1.12中得到修正