[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) 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].
나는 용기 및 포트 매핑을 링크하려고 사람들에게 도움이 될거야 바랍니다.
from https://stackoverflow.com/questions/28582312/connection-is-not-being-established by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡 WordCount.java 종속성 문제 (0) | 2019.10.02 |
---|---|
[HADOOP] 어떻게 자바에서 원격 원사 클러스터에 캐스 케이 딩 작업을 제출할 수 있습니까? (0) | 2019.10.02 |
[HADOOP] 자바 1.8과 로컬 Mac에서 하둡을 실행 (0) | 2019.10.01 |
[HADOOP] 하둡은 파이썬 스트리밍 : 행 번호를 추적 유지 (0) | 2019.10.01 |
[HADOOP] 자바 클라이언트에서 실행 LoadIncrementalHFiles (0) | 2019.10.01 |