У меня есть экземпляр Nifi в докере на виртуальной машине с открытыми портами: 8080 и 10000. На тонком экземпляре я создал простой конвейер с выходным портом с именем "flink", и я хочу прочитать эти данные, используя соединитель flink-nifi:
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();
В этом случае я получил ошибку: Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: java.net.UnknownHostException
Если я добавлю localAddress в конфигурации:
SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder()
.url("http://vm-address:8080/nifi")
.localAddress(InetAddress.getByName("vm-address"))
.portName("flink")
.requestBatchCount(100)
.buildConfig();
Я получил эту ошибку: Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: java.net.BindException: Cannot assign requested address: JVM_Bind
IЗапустите этот код с локального компьютера в Windows, и Flink будет запущен в автономном режиме.Кроме того, я попытался запустить это непосредственно на виртуальной машине, но я получил ту же ошибку.
В журналах много попыток:
execchain.RetryExec: исключение ввода-вывода (java.net.BindException), возникшее при обработке запроса к / vm-адрес -> {} -> http://vm - адрес: 8080 : невозможно назначить запрошенный адрес: JVM_Bind