【问题标题】:Mapreduce returns error when accessing to datanode on master machineMapreduce在访问master机器上的datanode时返回错误
【发布时间】:2014-08-01 23:31:21
【问题描述】:

我建立了一个包含三台机器的 Hadoop 2.4.0 集群。一台主机部署了名称节点、资源管理器、数据节点和节点管理器。其他两台工作机器部署了数据节点和节点管理器。当我运行 Hive 查询时,工作失败并且错误是

2014-06-11 13:40:13,364 WARN [main] org.apache.hadoop.mapred.YarnChild:运行子异常:java.net.ConnectException:从 master/127.0.0.1 调用 主:43607 连接异常失败:java.net.ConnectException:连接>拒绝;更多详情见:http://wiki.apache.org/hadoop/ConnectionRefused 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:5>7) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImp>l.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:783) 在 org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:730) 在 org.apache.hadoop.ipc.Client.call(Client.java:1414) 在 org.apache.hadoop.ipc.Client.call(Client.java:1363) 在 org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:231) 在 com.sun.proxy.$Proxy9.getTask(未知来源) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:136) 引起:java.net.ConnectException:连接被拒绝 在 sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 在 sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) 在 org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) 在 org.apache.hadoop.net.NetUtils.connect(NetUtils.java:529) 在 org.apache.hadoop.net.NetUtils.connect(NetUtils.java:493) 在 org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:604) 在 org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:699) 在 org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:367) 在 org.apache.hadoop.ipc.Client.getConnection(Client.java:1462) 在 org.apache.hadoop.ipc.Client.call(Client.java:1381) ... 4 更多

如果我禁用主机上的数据节点,一切正常。我想知道是否允许在主机上部署datanode。提前感谢您的热心帮助。

顺便说一句,我在三台机器上的 /etc/hosts 是一样的:

127.0.0.1 本地主机

10.1.154.231 主控

10.1.153.220 slave1

10.1.153.133 slave2

【问题讨论】:

    标签: hadoop mapreduce hive


    【解决方案1】:

    请在您的主服务器上设置无密码 ssh 到自己

    你可以通过

    来实现
      cat ~/id_rsa.pub >> ~/.ssh/authorized_keys2 
    

    确保权限正确

       chmod 0600 ~/.ssh/authorized_keys2
    

    【讨论】:

    • 感谢您的回复。我可以“ssh localhost”或“ssh master”无密码。主服务器也可以对所有从服务器进行无密码的 ssh,所有从服务器也可以对主服务器进行无密码的 ssh。我的 .ssh 文件中有 authorized_keys 而不是 authorized_keys2 。授权密钥的权限为 0640。我仍然有错误
    • 完美。我确定我在这个问题上找不到这个提示。我的问题解决了。
    【解决方案2】:

    在这种情况下,您可以通过检查 yourhadoopfolder/logs/hadoop-[hadoop-user]-namenode-master.log 中的日志来检查名称节点是否在 master 上正确启动

    这往往是之前的hdfs没有格式化造成的。运行

    hadoop namenode -format
    

    当然,您需要再次将数据放入集群。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      相关资源
      最近更新 更多