secondaryNamenode对namenode当中的fsimage和edits进行合并时,每次都会先将namenode的fsimage与edits文件拷贝一份过来,所以fsimage与edits文件在secondarNamendoe当中也会保存有一份,如果namenode的fsimage与edits文件损坏,那么我们可以将secondaryNamenode当中的fsimage与edits拷贝过去给namenode继续使用,只不过有可能会丢失一部分数据。 这里涉及到几个配置选项:
namenode保存fsimage的配置路径:
代码语言:javascript复制<property>
<name>dfs.namenode.name.dir</name>
<value>file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas</value>
</property>
namenode保存edits文件的配置路径:
代码语言:javascript复制<property>
<name>dfs.namenode.edits.dir</name>
<value>file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/dfs/nn/edits</value>
</property>
secondaryNamenode保存fsimage文件的配置路径:
代码语言:javascript复制<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/dfs/snn/name</value>
</property>
secondaryNamenode保存edits文件的配置路径:
代码语言:javascript复制<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/dfs/nn/snn/edits</value>
</property>
故障恢复步骤
1.删除namenode的fsimage与edits文件
namenode所在机器执行以下命令,删除fsimage与edits文件
rm -rf /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas/*
rm -rf /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits/*
2.拷贝secondaryNamenode的fsimage与edits文件
将secondaryNameNode所在机器的fsimage与edits文件拷贝到namenode所在的fsimage与edits文件夹下面去。 由于小菌的secondaryNameNode与namenode安装在同一台机器,都在node01上面,node01执行以下命令进行拷贝。
拷贝fsimage
cp -r /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name/* /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas/拷贝edits
cp -r /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits/* /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
3.启动集群
/export/servers/hadoop-2.6.0-cdh5.14.0/sbin
./start-all.sh
4.浏览器页面正常访问
http://xxxx:50070/explorer.html#/【xxxx为namenode所在节点的ip】 发现一切正常,说明故障恢复成功!
本次的分享就到这里了,小伙伴们有什么疑惑或好的建议可以积极在评论区留言,小菌后续还会推出HDFS系列的其他内容,希望大家持续关注小菌ヾ(๑╹◡╹)ノ"!