用SecondaryNamenode手动恢复NameNode的元数据

1.SecondaryNameNode目录结构

Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

在/opt/module/hadoop-2.8.4/data/dfs/namesecondary/current这个目录中查看SecondaryNameNode目录结构。

edits_0000000000000000001-0000000000000000002

fsimage_0000000000000000002

fsimage_0000000000000000002.md5

VERSION

 

 

Secondary

SecondaryNamenode的namesecondary/current目录和主namenode的current目录的布局相同。

好处:在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。

方法一:将SecondaryNameNode中数据拷贝到namenode存储数据的目录;

方法二:使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode中数据拷贝到namenode目录中。

1)案例实操(一):

模拟namenode故障,并采用方法一,恢复namenode数据

1kill -9 namenode进程

2)删除namenode存储的数据(/opt/module/hadoop-2.8.4/data/dfs/name

rm -rf /opt/module/hadoop-2.8.4/data/dfs/name/*

             

              注:此时hadoop-daemon.sh stop namenode关闭NN,

              然后hadoop-daemon.sh start namenode重启NN,发现50070页面启动不了

3)拷贝SecondaryNameNode中数据到原namenode存储数据目录

         cp -r /opt/module/hadoop-2.8.4/data/dfs/namesecondary/* /opt/module/hadoop-2.8.4/data/dfs/name/

用SecondaryNamenode手动恢复NameNode的元数据_第1张图片

4)重新启动namenode

sbin/hadoop-daemon.sh start namenode

2)案例实操(二):

模拟namenode故障,并采用方法二,恢复namenode数据

0)修改hdfs-site.xml中的配置,value的单位是秒,默认3600,即1小时,仅配置一台即可

  dfs.namenode.checkpoint.period

  120

 

  dfs.namenode.name.dir

  /opt/module/hadoop-2.8.4/data/dfs/name

1kill -9 namenode进程

2)删除namenode存储的数据(/opt/module/hadoop-2.8.4/data/dfs/name

rm -rf /opt/module/hadoop-2.8.4/data/dfs/name/*

3如果SecondaryNameNode不和Namenode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到Namenode存储数据的平级目录。

[itstar@bigdata111 dfs]$ pwd

/opt/module/hadoop-2.8.4/data/dfs

[itstar@bigdata111 dfs]$ ls

data  name  namesecondary

4)导入检查点数据(等待一会ctrl+c结束掉)

bin/hdfs namenode -importCheckpoint

5)启动namenode

sbin/hadoop-daemon.sh start namenode

6)如果提示文件锁了,可以删除in_use.lock

rm -rf /opt/module/hadoop-2.8.4/data/dfs/namesecondary/in_use.lock

你可能感兴趣的:(#,HDFS)