Secondary NameNode 用来监控 HDFS 状态的辅助后台程序,每隔一段时间获取 HDFS元数据的快照。
在 /home/hadoop/hadoop_home/dfs/namesecondary/current 这个目录中查看 SecondaryNameNode 目录结构。
注:也可能是/home/hadoop/hadoop_home/tmp/dfs/namesecondary/current
SecondaryNameNode 的 namesecondary/current 目录和主 namenode 的 current 目录的布局相同。
好处:在主 namenode 发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。
方法一:将 SecondaryNameNode 中数据拷贝到 namenode 存储数据的目录;
方法二:使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode用作新的主 namenode。
1)案例实操(一):
模拟 namenode 故障,并采用方法一,恢复 namenode 数据
(1)kill -9 namenode 进程
(2)删除 namenode 存储的数据(/home/hadoop/hadoop_home/dfs/name)
rm -rf /home/hadoop/hadoop_home/dfs/name/*
(3)拷贝 SecondaryNameNode 中数据到原 namenode 存储数据目录
cp -R /home/hadoop/hadoop_home/tmp/dfs/namesecondary/* /home/hadoop/hadoop_home/dfs/name/
(4)重新启动 namenode
sbin/hadoop-daemon.sh start namenode
2)案例实操(二):
模拟 namenode 故障,并采用方法二,恢复 namenode 数据
(0)修改 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_home/dfs/name</value>
</property>
(1)kill -9 namenode 进程
(2)删除 namenode 存储的数据(/home/hadoop/hadoop_home/dfs/name)
rm -rf /home/hadoop/hadoop_home/dfs/name/*
( 3 )如果 SecondaryNameNode 不 和 Namenode 在 一 个 主 机 节点上,需要将 SecondaryNameNode 存储数据的目录拷贝到 Namenode 存储数据的平级目录。
[hadoop@master:~/hadoop_home/dfs]$ pwd
/home/hadoop/hadoop_home/dfs
[hadoop@master:~/hadoop_home/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 /home/hadoop/hadoop_home/dfs/namesecondary/in_use.lock