복붙노트

[HADOOP] 연결이 설정되지 않는

HADOOP

연결이 설정되지 않는

나는 수로와 하둡을위한 두 개의 실행 컨테이너를 가지고있다. 이 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 등 / 호스트 항목을 확인. hadoopservices 및 ENV 변수가 자동으로 생성됩니다에 대한 항목이 있습니다.

내 코어를 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

나는 코어를 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 : 연결이 거부 됨

그래서 내가 뭔가이 두 contianers 사이에 설정된 연결의 문제입니다 발견했다. 나는 하둡 용기에 들어갈 및 포트 연결 확인

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입니다.

나는 원인을 발견했다. 그것은 이유인가?

어떤 구성을 수정해야? 그리고 나 내 문을 실행? 어떻게 내가 할 수로에서 HDFS에 쓸 수 있도록이 두 고정 표시기 컨테이너 사이의 연결을 설정하도록 변경해야합니다.

당신이 더 많은 정보가 필요하면, 내가 '더 편집을하겠다.

나에게 몇 가지 아이디어를 알려주세요.

해결법

  1. ==============================

    1.사람이 같은 문제에 직면하는 경우, 다음 단계를 수행하십시오.

    사람이 같은 문제에 직면하는 경우, 다음 단계를 수행하십시오.

     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].
    

    나는 용기 및 포트 매핑을 링크하려고 사람들에게 도움이 될거야 바랍니다.

  2. from https://stackoverflow.com/questions/28582312/connection-is-not-being-established by cc-by-sa and MIT license