hadoop伪分布式下 无法启动datanode的原因及could only be replicated to > 0 nodes, instead of 1的错误

目前发现一个原因是 因为datanode无法启动从而导致在hadoop上 put数据 出现 could only be replicated to > 0 nodes, instead of 1的错误。

输入jps发现唯独只有datanode进程没有起来。所以我们要想办法把datanode启动起来。

1.环境描述:

ubuntu11.10

伪分布是hadoop

jdk1.7

2.问题描述:

在hadoop上put数据时 出现could only be replicated to > 0 nodes, instead of 1的 错误提示。

jps命令 没有没看到datanode的进程启动。

3.问题原因:

是由于多次format namenode节点导致  namdenode 的 namespaceID 与  datanode的namespaceID 不一致,从而导致namenode和 datanode的断连。

(因为在多次format中  有 reformat namenode的提示,多次format中不用已知都选Y 去format namenode的 namespaceID ,这样很容易造成ID不一致的情况)

4.问题解决:

hadoop format 初始化后  先不急着startall, 打开hdfs-site.xml ,找到dfs.name.dir和dfs.data.dir的路径。

将因format更新的 dfs.name.dir/current/VERSION中的namespaceID  更新到 dfs.data.dir/current/VERSION中的namespaceID中去(改的是dfs.data.dir中的ID)

如下:

dfs.name.dir:

#Wed Feb 26 12:33:11 CST 2014
namespaceID=125032091
cTime=0
storageType=NAME_NODE
layoutVersion=-32

将dfs.data.dir:

#Wed Feb 26 12:28:05 CST 2014
namespaceID=7685963
storageID=DS-1033031888-127.0.1.1-50010-1393227629778
cTime=0
storageType=DATA_NODE
layoutVersion=-32

改为:

#Wed Feb 26 12:28:05 CST 2014
namespaceID=125032091
storageID=DS-1033031888-127.0.1.1-50010-1393227629778
cTime=0
storageType=DATA_NODE
layoutVersion=-32

这样再开始启动startall就行了。


5.总结:

以后在hadoop format过程中 要注意不要频繁地reformat  namnode的ID信息。format过程中选择N就是了。




你可能感兴趣的:(datanode无法启动,put数据出错)