Namenode 故障后,可以采用如下两种方法恢复数据。
方法一:将 SecondaryNameNode 中数据拷贝到 namenode 存储数据的目录;
方法 二: 使用 -importCheckpoint 选项 启动 namenode 守 护 进 程 , 从 而 将SecondaryNameNode 中数据拷贝到 namenode 目录中。
------------------------------------------------------------------------------------
采用方法一:
1、删除namenode存储的数据(/home/hadoop/hadoop_tmp/dfs/name/*)
rm -rf /home/hadoop/hadoop_tmp/dfs/name/*
2、把secondarynamenode中的数据拷到原namenode存储数据目录
scp -r hadoop@hadoop102:/home/hadoop/hadoop_tmp/dfs/namesecondary/* /home/hadoop/hadoop_tmp/dfs/name/*
3、重新启动namenode (在启动之前可以删除目录下的锁文件)
hadoop-daemon.sh start namenode
----------------------------------------------------------------------------------------
采用方法二:
1、修改hdfs-site.xml文件:
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>120</value>
</property> <property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop_tmp/dfs/name</value>
</property>
2、删除namenode存储的数据(/home/hadoop/hadoop_tmp/dfs/name/*)
rm -rf /home/hadoop/hadoop_tmp/dfs/name/*
3、将secondarybamenode 存储数据的目录拷贝到 namenode 存储数据的平级目录,并删除锁文件in_use.lock文件
scp -r hadoop@hadoop102:/home/hadoop/hadoop_tmp/dfs/namesecondary/* /home/hadoop/hadoop_tmp/dfs/name/*
rm -rf in_use.lock
4、导入检查点数据
hdfs namenode -importCheckpoint
5、启动namenode
hadoop-daemon.sh start namenode