无法写入本地HDFS datanode

时间:2014-04-07 13:29:51

标签: java hadoop

我尝试使用我正在使用Hadoop 2.3.0发布版和hadoop-client 2.3.0 hadoop-hdfs 2.3.0库的java程序将文件写入本地HDFS设置。

在HDFS日志中,它显示以下错误:

2014-04-07 18:40:44,479 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: prabhathp:50010:DataXceiver error processing unknown operation  src: /127.0.0.1:38572 dest: /127.0.0.1:50010
java.io.IOException: Version Mismatch (Expected: 28, Received: 26738 )
at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.readOp(Receiver.java:54)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:198)
at java.lang.Thread.run(Thread.java:744)

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

如果间歇性地看到错误Version Mismatch (Expected: 28, Received: 26738 )且版本非常高Received,则原因可能是不使用hadoop rpc协议的应用程序已连接到日期节点端口。

我们看到这个错误,例如当某人使用网络浏览器访问datanode网址时(打算访问网络界面时)。

错误配置可能会产生类似的效果。

答案 1 :(得分:1)

问题(对我而言)是dfs.namenode.name.dir文件中属性dfs.datanode.data.dirhdfs-site.xml的错误配置;它们必须是URI而不仅仅是路径。

<property>
  <name>dfs.namenode.name.dir</name>
  <value>/dfs/nn</value>  # wrong, change to 'file:///dfs/nn'
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/dfs/dn</value>  # wrong, change to 'file:///dfs/dn'
</property>

答案 2 :(得分:0)

java.io.IOException:Version Mismatch(预期:28,收到:26738)

Verison不匹配错误表明你是usng错误的hadoop jar。确保data.dir或name.dir具有正确的VERSION文件,并且您使用的是正确的hadoop版本。

运行hadoop verison进行确认。