2015-02-18 3 views
0

У меня есть два беговых контейнера для дымохода и хаоса. Пусть это будет hadoop2 и flume2. Я создал эти два контейнера из двух изображений: hadoop_alone и flume_alone.Соединение не установлено

docker run -d -p 10.236.173.XX:8020:8020 -p 10.236.173.XX:50030:50030 -p 10.236.173.XX:50060:50060 -p 10.236.173.XX:50070:50070 -p 10.236.173.XX:50075:50075 -p 10.236.173.XX:50090:50090 -p 10.236.173.XX:50105:50105 --name hadoopservices hadoop_alone 

Я попал в контейнер для хранения и проверил открытые порты. Таким образом, все порты отображаются правильно.

docker run -d --name flumeservices -p 0.0.0.0:5140:5140 -p 0.0.0.0:44444:44444 --link hadoopservices:hadoopservices flume_alone 

я в лотковой емкости и проверены на env и etc/hosts записей. Существует запись для hadoopservices и переменные env создаются автоматически.

Мои core-site.xml

fs.defaultFS 
hdfs://0.0.0.0:8020 

Я изменил его так будет принимать услуги на 8020 из всех контейнеров.

Мой источник и тонуть в flume.conf

a2.sources.r1.type = netcat 
a2.sources.r1.bind = localhost 
a2.sources.r1.port = 5140 

a2.sinks.k1.type = hdfs 
a2.sinks.k1.hdfs.fileType = DataStream 
a2.sinks.k1.hdfs.writeFormat = Text 
a2.sinks.k1.hdfs.path = hdfs://hadoopservices:8020/user/root/syslog/%y-%m-%d/%H%M/%S 
a2.sinks.k1.hdfs.filePrefix = events 
a2.sinks.k1.hdfs.roundUnit = minute 
a2.sinks.k1.hdfs.useLocalTimeStamp = true 

Я перезагрузил Hadoop NameNode после изменения core-site.xml.

Я стараюсь писать в HDFS с лотком с помощью

/usr/bin/flume-ng agent --conf-file /etc/flume-ng/conf/flume.conf --name a2 -Dflume.root.logger=INFO,console 

Это говорит

INFO hdfs.DFSClient: Exception in createBlockOutputStream 

java.net.ConnectException: Соединение отклонено

Так что я нашел что-то проблема с подключением установленных между этими двумя участниками. Я получаю в Hadoop контейнер и проверены на порт соединения

netstat -tna 


tcp  0  0 127.0.0.1:52521   127.0.0.1:8020   TIME_WAIT 
tcp  0  0 127.0.0.1:8020   127.0.0.1:52516   ESTABLISHED 
tcp  0  0 127.0.0.1:52516   127.0.0.1:8020   ESTABLISHED 

Но я ожидаю, что это будет

tcp  0  0 172.17.1.XX:54342  172.17.1.XX:8020  TIME_WAIT 
tcp  0  0 172.17.1.XX:54332  172.17.1.XX:8020  ESTABLISHED 
tcp  0  0 172.17.1.XX:8020  172.17.1.XX:54332  ESTABLISHED 

Где 172.17.1.XX является IP моего Hadoop контейнера.

Я нашел причину. Это причина?

Какую конфигурацию необходимо изменить? И или мое заявление о запуске? Что нужно изменить, чтобы установить соединение между этими двумя контейнерами докеров, чтобы я мог писать в hdfs из лотка.

Если вам нужна дополнительная информация, я отредактирую ее дальше.

Пожалуйста, расскажите мне несколько идей.

ответ

0

Если кто-либо сталкивается с такой же проблемой, выполните следующие действия.

1) Check whether 0.0.0.0:8020 is updated in core-site.xml 

2) If you update it inside running container, **I suggest you all to restart ALL the services NOT ONLY namenode**. [better do as part of Dockerfile] 

3) Check for `env` and `etc/hosts` contents in flume container 

4) And hostname in `etc/hosts` must be matched with the `hdfs path` parameter in flume.conf 

5) Get into hadoop container and do `netstat -tna` and you must see connection established to <hadoop_container_ip>:8020. Not to your localhost[127.0.0.1]. 

Я надеюсь, что это будет полезно для людей, которые пытаются связать контейнеры и картографирование портов.

Смежные вопросы