2017-01-12 10 views
2

Использование записей в блоге на Apache и Hortonworks Мне удалось переправить из NiFi в Spark, когда оба находятся на одной машине. Теперь я пытаюсь передать из NiFi один экземпляр EC2 в кластер EMR в той же подсети и группе безопасности, и у меня возникают проблемы. Специфическая ошибка сообщается на машине ОГО СердечникаNiFi Streaming to Spark на EMR

Failed to receive data from NiFi 
java.net.ConnectException: Connection refused 
    at sun.nio.ch.Net.connect0(Native Method) 
    at sun.nio.ch.Net.connect(Net.java:454) 
    at sun.nio.ch.Net.connect(Net.java:446) 
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) 
    at java.nio.channels.SocketChannel.open(SocketChannel.java:189) 
    at org.apache.nifi.remote.client.socket.EndpointConnectionPool.establishSiteToSiteConnection(EndpointConnectionPool.java:708) 
    at org.apache.nifi.remote.client.socket.EndpointConnectionPool.establishSiteToSiteConnection(EndpointConnectionPool.java:682) 
    at org.apache.nifi.remote.client.socket.EndpointConnectionPool.getEndpointConnection(EndpointConnectionPool.java:300) 
    at org.apache.nifi.remote.client.socket.SocketClient.createTransaction(SocketClient.java:129) 
    at org.apache.nifi.spark.NiFiReceiver$ReceiveRunnable.run(NiFiReceiver.java:149) 

Использование netstat на основной машине, я вижу в нем есть открытое соединение TCP к коробке Nifi на порт сайта к площадке (в моем случае 8090). На NiFi-машине в файле nifi-app.log я вижу журналы из «Работы по работе с сайтом-участником» о моем основном подключении к машине (и ничего о каких-либо ошибках). Таким образом, первоначальное соединение кажется успешным, но немного после этого.

Когда я запускал свой код искры локально, я был на экземпляре NiFi EC2, поэтому я знаю, что в целом он работает. Я просто нахожу что-то, возможно, связанную с безопасностью, когда клиент является кластером EMR.

В качестве работы я могу отправить файл на S3, а затем запустить Spark-шаг из NiFi (используя скрипт Python), но я бы скорее потоком данных (и использование Kafka не является вариантом). Кто-нибудь еще получил поток от NiFi до EMR?

Это сообщение похоже: Getting data from Nifi to spark streaming Разница заключается в том, что у меня отключена безопасность, и я использую http, а не https (и я получаю соединение отказано, а не 401).

Edit:

nifi.properties:

# Site to Site properties 
nifi.remote.input.host= 
nifi.remote.input.secure=false 
nifi.remote.input.socket.host= 
nifi.remote.input.socket.port=8090 
nifi.remote.input.http.enabled=true 
nifi.remote.input.http.transaction.ttl=30 sec 
+0

Итак, чтобы подтвердить, в nifi.properties вы установили nifi.remote.input.socket.port на 8090? и вы установили значение для nifi.remote.input.host? –

+0

Да и нет. Я отредактировал сообщение с сайтом в разделе сайта файла свойств. – Zik

+3

Возможно, вы захотите попробовать установить nifi.remote.input.host на имя хоста экземпляра EC2 (был ли NiFi запущен), который был бы разрешен EMR. Клиент сайта-сайта в коде искрообразования будет использовать URL-адрес API-интерфейса NiFi REST, чтобы спросить NiFi, где подключиться к сайту-сайту, а NiFi собирается вернуть хост и порт с сайта свойства объекта. –

ответ

3

Bryan Bende было решение в указанном выше комментарии: когда я установил nifi.remote.input.host на IP-адрес текущей машины потокового начал работать.