hadoop协议消息标记的线路类型无效

时间:2015-08-06 07:28:02

标签: hadoop network-connection

我在Ubuntu 12.04上使用8个核心的两个节点设置hadoop 2.6集群。 sbin/start-dfs.shsbin/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.zz是Master-R5-Node的IP地址

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

尽管经过了长达一周的努力,我还是无法解决问题。

感谢。

1 个答案:

答案 0 :(得分:6)

导致我遇到问题的原因有很多。但我终于使用一些以下内容来修复它。

  
      
  1. 确保您拥有/hadoophdfs temporary文件所需的权限。 (你必须弄清楚你的特殊情况在哪里)
  2.   
  3. fs.defaultFS中的$HADOOP_CONF_DIR/core-site.xml删除端口号。它应该是这样的:
  4.   
`<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
  2.   
 <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>

瞧!你现在应该开始运行了!