且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

惭入佳境之布置双节点DATANODE及错误解决

更新时间:2022-03-15 03:39:58

先流一下口水~~~~

传说中YAHOO用于HADOOP的机房:

惭入佳境之布置双节点DATANODE及错误解决

推荐安装指南:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/

其布置多节点的思路是:

先将第一个布置好的SINGLE节点方案弄好。

然后,将第一个节点的东东复制到另一个节点。

再将第二个节点降成DATANODE节点,而第一个节点为NAMENODE节点。

这样,就很好的实现了节点扩展。

惭入佳境之布置双节点DATANODE及错误解决

惭入佳境之布置双节点DATANODE及错误解决

但。。。。其实,在会产生一个小小的问题,我没有弄明白:

那是否需要重新FORMAT整个HDFS系统,还是说整个HADOOP方案在节点增加之后,啥都不用动?

因为我试着按指南重新格式化了HDFS,结果,所有的DATANODE无法正常启动了。

出错信息为:

2013-04-11 05:46:48,849 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /app/hadoop/tmp/dfs/data: namenode namespaceID = 966713409; datanode namespaceID = 1353306250

at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)

at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)

at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:399)

at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:309)

at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1651)

at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1590)

at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)

at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)

at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)

明显的,是因为格式化了HDFS两次所致。在作第一个节点时namespaceIDs并没有消失,然后,又重新弄了一次。

解决方案是将两节点的app/hadoop/tmp/下的文件全DEL之后,重新格式化一次。就OK了。

~~~~~~~~~~~

网上说的,http://***.com/questions/3425688/why-does-the-hadoop-incompatible-namespaceids-issue-happen

Namenode generates new namespaceID every time you format HDFS. I think this is possibly to differentiate current version and previous version. You can always rollback to previous version if something is not proper which may not be possible if namespaceID is not unique for every formatted instance.

NamespaceID also connects namenode and datanodes. Datanodes bind themselves to namenode through namespaceID

每次FORMAT都会产生一个新的NAMESPACEID。

看来。。。。在第一次格式化之后,以后的节点可以直接使用?