복붙노트

[HADOOP] ConnectException이는 : 하둡의 맵리 듀스를 실행하면 연결이 거부 됨

HADOOP

ConnectException이는 : 하둡의 맵리 듀스를 실행하면 연결이 거부 됨

1 네임 노드가 + 3 개 데이타 노드 : 나는 다중 기계 모드 (2.6.0) 하둡을 설정합니다. 내가 명령을 사용했을 때 start-all.sh, 그들은 (네임 노드는 데이터 노드, 자원 관리자, 노드 매니저) 확인했다. I이었다 노호 각 노드에서 JPS 명령과 결과를 확인 :

네임 노드 :

DataNode에서 :

/user/hadoop/data/sample.txt : 그리고 나는 또한에 HDFS에 샘플 텍스트 파일을 업로드했습니다. 그 순간에 전혀 오류가 없습니다.

하지만 하둡 예를의 항아리와 맵리 듀스를 실행하려고 할 때 :

이 오류가 :

15/04/08 03:31:26 INFO mapreduce.Job: Job job_1428478232474_0001 running    in uber mode : false
15/04/08 03:31:26 INFO mapreduce.Job:  map 0% reduce 0%
15/04/08 03:31:26 INFO mapreduce.Job: Job job_1428478232474_0001 failed with     state FAILED due to: Application application_1428478232474_0001 failed 2 times due to Error launching appattempt_1428478232474_0001_000002. Got exception: java.net.ConnectException: Call From hadoop/127.0.0.1 to localhost:53245 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:731)
at org.apache.hadoop.ipc.Client.call(Client.java:1472)
at org.apache.hadoop.ipc.Client.call(Client.java:1399)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
at com.sun.proxy.$Proxy31.startContainers(Unknown Source)
at org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.startContainers(ContainerManagementProtocolPBClientImpl.java:96)
at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:119)
at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:254)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:530)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:494)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:607)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:705)
at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:368)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1521)
at org.apache.hadoop.ipc.Client.call(Client.java:1438)
    ... 9 more Failing the application.
15/04/08 03:31:26 INFO mapreduce.Job: Counters: 0

네임 노드가 프롬프트 password.I없이 데이타 노드와 그 반대에 ssh를 수 있는지 구성, 정보도 IP6을 dissabled 및 수정을 / etc / hosts 파일 :

네임 노드와 데이타 노드가 확실히 일을하지만, 맵리 듀스를 실행할 수없는 이유를 모르겠어요. 여기에 거의 stucked 해요, 당신이 날 이유를 찾을 수 있습니다?

편집하다 : 여기에 HDFS-site.xml 파일 (네임 노드)에서 Config :

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///usr/local/hadoop/hadoop_stores/hdfs/namenode</value>
    <description>NameNode directory for namespace and transaction logs storage.</description>
</property>
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.datanode.use.datanode.hostname</name>
    <value>false</value>
</property>
<property>
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
    <value>false</value>
</property>
<property>
     <name>dfs.namenode.http-address</name>
     <value>hadoop-nn:50070</value>
     <description>Your NameNode hostname for http access.</description>
</property>
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop-nn:50090</value>
     <description>Your Secondary NameNode hostname for http access.</description>
</property>

데이타 노드에서 :

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///usr/local/hadoop/hadoop_stores/hdfs/data/datanode</value>
    <description>DataNode directory</description>
</property>

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.datanode.use.datanode.hostname</name>
    <value>false</value>
</property>
<property>
     <name>dfs.namenode.http-address</name>
     <value>hadoop-nn:50070</value>
     <description>Your NameNode hostname for http access.</description>
</property>
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop-nn:50090</value>
     <description>Your Secondary NameNode hostname for http access.</description>

다음 명령 결과입니다 : 하둡 때 fs -ls / 사용자 / 하둡 / 데이터

하둡 -ls FS / 사용자 / 하둡 / 출력

해결법

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

    1.찾을 솔루션! 볼이 포스트 얀은 로컬 호스트 데이터 노드 번호 / 이름을 나타낸다

    찾을 솔루션! 볼이 포스트 얀은 로컬 호스트 데이터 노드 번호 / 이름을 나타낸다

    Call From localhost.localdomain/127.0.0.1 to localhost.localdomain:56148 failed on connection exception: java.net.ConnectException: Connection refused;
    

    마스터와 슬레이브 모두의 / etc / 호스트 이름에 localhost.localdomain의 호스트 이름을 가지고 있었다. 나는 SLAVE1과 slave2하는 노예의 호스트 이름을 변경했습니다. 즉했다. 당신의 시간 동안 당신에게 모두 감사드립니다.

    @kate 네임 노드에 있는지 등 / 호스트 이름을 확인하고 데이타 노드는 localhost로 설정되어 있지 않습니다. 그냥보고 터미널에서 ~ # 호스트 이름을 입력합니다. 동일한 명령으로 새로운 호스트 이름을 설정할 수 있습니다.

    내 마스터와 노동자 또는 노예 '/ etc / hosts 파일은 this-처럼 보인다

    127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
    #127.0.1.1    localhost
    192.168.111.72  master
    192.168.111.65  worker1
    192.168.111.66  worker2
    

    worker1에의 호스트 이름

    hduser@worker1:/mnt/hdfs/datanode$ cat /etc/hostname 
    worker1
    

    및 worker2에

    hduser@worker2:/usr/local/hadoop/logs$ cat /etc/hostname 
    worker2
    

    또한, 아마 당신은 루프백 인터페이스 "하둡"호스트 이름을 갖고 싶어하지 않습니다. 즉

    127.0.0.1 localhost hadoop 
    

    https://wiki.apache.org/hadoop/ConnectionRefused이 지점 (1)을 확인합니다.

    감사합니다.

  2. ==============================

    2.방화벽 문제 :

    방화벽 문제 :

    이 오류는 방화벽 문제로 인해 수 있습니다. 터미널에서이 작업을 수행합니다 :

    sudo apt-get install iptables-persistent
    sudo iptables -L
    sudo iptables-save > /usr/iptables-backup/iptables.v4.rules
    

    (이것은 뭔가 잘못되면 방화벽을 복원하는 데 사용되기 때문에) 파일을 계속하기 전에 생성되어 있는지 확인하세요.

    이제, 플러시 먼저, iptable 규칙 (즉 정지 방화벽) :

    sudo iptables -F
    

    지금 시도

    sudo iptables -L
    

    이 명령은 규칙을 반환해야합니다. 이제 작업을 줄일 /지도를 실행 해보십시오.

    참고 : 이전 상태로의 iptables을 복원하려면, 터미널이를 입력 :

    sudo는 /usr/iptables-backup/iptables.v4.rules

  3. from https://stackoverflow.com/questions/29508847/connectexception-connection-refused-when-run-mapreduce-in-hadoop by cc-by-sa and MIT license