3

我在 Ubuntu 12.04 上使用两个节点(每个节点有 8 个内核)设置了 hadoop 2.6 集群。sbin/start-dfs.sh并且sbin/start-yarn.sh都成功了。我可以jps在主节点上看到以下内容。

22437 DataNode
22988 ResourceManager
24668 Jps
22748 SecondaryNameNode
23244 NodeManager

jps从节点上的结果是

19693 DataNode
19966 NodeManager

然后我运行 PI 示例。

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 30 100

这给了我错误日志

java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "Master-R5-Node/xxx.ww.y.zz"; destination host is: "Master-R5-Node":54310; 
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:772)
    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.$Proxy9.getFileInfo(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:752)

问题似乎与 HDFS 文件系统有关,因为尝试该命令bin/hdfs dfs -mkdir /user失败并出现类似异常。

java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "Master-R5-Node/xxx.ww.y.zz"; destination host is: "Master-R5-Node":54310;

xxx.ww.y.zzMaster-R5-Node 的 IP 地址在哪里

我已经检查并遵循了关于 Apache 和本网站的ConnectionRefused的所有建议。

尽管进行了一周的努力,但我无法修复它。

谢谢。

4

1 回答 1

6

导致我面临问题的原因有很多。但我最终使用以下一些东西来修复

  1. 确保您对/hadoophdfs temporary文件具有所需的权限。(你必须弄清楚你的特殊情况在哪里)
  2. fs.defaultFS从in 中删除端口号$HADOOP_CONF_DIR/core-site.xml。它应该如下所示:
`<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://my.master.ip.address/</value>
<description>NameNode URI</description>
</property>
</configuration>`
  1. 将以下两个属性添加到 `$HADOOP_CONF_DIR/hdfs-site.xml
 <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>

瞧!您现在应该启动并运行!

于 2015-08-12T09:54:45.423 回答