我尝试使用我正在使用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)
有人可以解释一下吗?
答案 0 :(得分:2)
如果间歇性地看到错误Version Mismatch (Expected: 28, Received: 26738 )
且版本非常高Received
,则原因可能是不使用hadoop rpc协议的应用程序已连接到日期节点端口。
我们看到这个错误,例如当某人使用网络浏览器访问datanode网址时(打算访问网络界面时)。
错误配置可能会产生类似的效果。
答案 1 :(得分:1)
问题(对我而言)是dfs.namenode.name.dir
文件中属性dfs.datanode.data.dir
和hdfs-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进行确认。