SecondaryNameNode原理和配置解说

一.SecondaryNameNode的作用: 
       用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。换句话说其实SecondaryNameNode是namenode的冷备份,而namenode的HA高可用才是namenode的热备份。区别是SecondaryNameNode中存储的元数据不是实时的,滞后于namenode主节点.
      SecondaryNameNode原理和配置解说_第1张图片
Secondary NameNode 工作:
        1 Secondary NameNode 询问 namenode 是否需要 checkpoint 。直接带回 namenode 是否检查结果。
        2 Secondary NameNode 请求执行 checkpoint
        3 namenode 滚动正在写的 edits 日志
        4 )将滚动前的编辑日志和镜像文件拷贝到 Secondary NameNode
        5 Secondary NameNode 加载编辑日志和镜像文件到内存,并合并。
        6 )生成新的镜像文件 fsimage.chkpoint
        7 )拷贝 fsimage.chkpoint namenode
        8 namenode fsimage.chkpoint 重新命名成 fsimage
1.checkpoint的附带作用
       namenode和secondary namenode的工作目录存储结构完全相同,所以,当namenode故障退出需要重新恢复时,可以从secondary namenode的工作目录中将fsimage拷贝到namenode的工作目录,以恢复namenode的元数据 
chkpoint检查时间参数设置
(1)通常情况下,SecondaryNameNode每隔一小时执行一次。
       [hdfs-default.xml]
  dfs.namenode.checkpoint.period
  3600
(2)一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。
  dfs.namenode.checkpoint.txns
  1000000
操作动作次数
  dfs.namenode.checkpoint.check.period
  60
1分钟检查一次操作次数
2. 镜像文件和编辑日志文件
namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件
fsimage_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION
(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。
(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
(3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
(4)每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimage和edits文件进行了合并。
3.SecondaryNameNode目录结构
/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/current 这个目录中查看 SecondaryNameNode 目录结构。

edits_0000000000000000001-0000000000000000002
fsimage_0000000000000000002
fsimage_0000000000000000002.md5
VERSION
此外: 辅助namenode的检查点目录(dfs.namenode.checkpoint.dir)的布局和主namenode的检查点目录的布局完全相同。这种设计的好处:在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。
方法一:将 SecondaryNameNode 中数据拷贝到 namenode 存储数据的目录;
方法二:使用 -importCheckpoint 选项启动 namenode 守护进程,从而将 SecondaryNameNode 用作新的主 namenode
1 )案例实操(一):
模拟 namenode 故障,并采用方法一,恢复 namenode 数据
1 kill -9 namenode 进程   或者 kill -9 2855
2 )删除 namenode 存储的数据( /opt/module/hadoop-2.7.2/data/tmp/dfs/name
rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
3 )拷贝 SecondaryNameNode 中数据到原 namenode 存储数据目录
          cp r /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/*    /opt/module/hadoop-2.7.2/data/tmp/dfs/name/
4 )重新启动 namenode
sbin/hadoop-daemon.sh start namenode
2 )案例实操(二)
模拟 namenode 故障,并采用方法二,恢复 namenode 数据
0 )修改 hdfs-site.xml 中的
  dfs.namenode.checkpoint.period
  120
  dfs.namenode.name.dir
  /opt/module/hadoop-2.7.2/data/tmp/dfs/name
1 kill -9 namenode 进程
2 )删除 namenode 存储的数据( /opt/module/hadoop-2.7.2/data/tmp/dfs/name
rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
3 )导入检查点数据(等待一会 ctrl+c 结束掉)
bin/hdfs namenode -importCheckpoint
4 )启动 namenode
sbin/hadoop-daemon.sh start namenode
5 如果提示文件锁了,可以删除 in_use.lock
              rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/in_use.lock

你可能感兴趣的:(hadoop,namenode冷备份,辅助namenode,hadoop开发相关,Hadoop从入门到高薪指南)