目前发现一个原因是 因为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:
将dfs.data.dir:
改为:
这样再开始启动startall就行了。
5.总结:
以后在hadoop format过程中 要注意不要频繁地reformat namnode的ID信息。format过程中选择N就是了。