在集群的运行过程中,可能会出现NameNode宕机的情况,在这里我贴出来一个有效的办法来解决NameNode的方法。
- 在主节点上面jps查看NameNode进程,然后 kill -9 NameNode进程号
2.删除主节点上NameNode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name,这一步根据自己的目录来进行修改)
- 找到SecondaryNameNode部署的那台机器(这里我的是部署在了hadoop104上面,所以就在这个机器上面进行操作),拷贝SecondaryNameNode中数据到原NameNode存储数据目录。
执行:scp -r /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* root@hadoop102/:/opt/module/hadoop-2.7.2/data/tmp/dfs/name(相应的目录根据自己的来调整)
- 重新启动NameNode,cd 到/opt/module/hadoop-2.7.2/sbin目录
执行hadoop-daemon.sh start namenode 就可以了,这时候就可以看到了之前的文件还在。
注:从SecondaryNameNode复制过来的数据其实不是完全完整的,因为它缺少了当前最新的一个编辑日志,也即是edits这个文件。