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:
[html] view plain copy
- #Wed Feb 26 12:33:11 CST 2014
- namespaceID=125032091
- cTime=0
- storageType=NAME_NODE
- layoutVersion=-32
将dfs.data.dir:
[html] view plain copy
- #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
改为:
[html] view plain copy
- #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就是了。
还没有评论,来说两句吧...