无法使用Flink-nifi连接器从Nifi输出端口读取数据

时间:2018-10-25 16:38:27

标签: java docker apache-flink apache-nifi

我在虚拟机上的docker中有一个Nifi实例,其公开端口为:8080和10000。 在瘦实例上,我创建了一个简单的管道,其输出端口名为“ flink”,我想使用flink-nifi连接器读取此数据:

/home/bhavdipb/AndroidStudioProjects/apps/testNDK/app/src/main/jni/hello-jni.c', needed by

在这种情况下,我得到了错误: SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder() .url("http://vm-address:8080/nifi") .portName("flink") .requestBatchCount(100) .buildConfig(); DataStream<NiFiDataPacket> nifi = environment.addSource(new NiFiSource(clientConfig)); nifi.map(new MapFunction<NiFiDataPacket, JsonNode>() { @Override public JsonNode map(NiFiDataPacket value) throws Exception { return DataConverter.byte2Json(value.getContent()); } }).print(); 如果我在配置中添加localAddress:

Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: java.net.UnknownHostException

我收到此错误: SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder() .url("http://vm-address:8080/nifi") .localAddress(InetAddress.getByName("vm-address")) .portName("flink") .requestBatchCount(100) .buildConfig();

我从Windows上的本地PC运行此代码,并且flink在独立模式下启动。 另外,我尝试直接在虚拟机上运行此程序,但出现了相同的错误。


日志中有很多重试:

  

execchain.RetryExec:捕获了I / O异常(java.net.BindException)   在处理请求时   / vm-address-> {}-> http://vm-address:8080:无法分配请求   地址:JVM_Bind

1 个答案:

答案 0 :(得分:1)

最后,解决了! 问题出在我的docker配置中。首先,我像这样运行nifi: docker run --name nifi -p 8008:8080 -p 10000:10000 -d apache/nifi:1.7.1 默认情况下,网络为bridge。在这种情况下,我的容器具有一些随机的主机名,我不直接与容器通信,而是通过docker进行通信。 当我选择network = host时: docker run --name nifi --network host -d apache/nifi:1.7.1一切顺利。 可能我可以用另一种方式解决它(也许是明确地解析容器的主机名),但这是最简单的方法