0
点赞
收藏
分享

微信扫一扫

SecondaryNameNode原理和配置解说

一.SecondaryNameNode的作用:

      用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。换句话说其实SecondaryNameNode是namenode的冷备份,而namenode的HA高可用才是namenode的热备份。区别是SecondaryNameNode中存储的元数据不是实时的,滞后于namenode主节点.

SecondaryNameNode原理和配置解说_hadoop

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]

<property>

 <name>dfs.namenode.checkpoint.period</name>

 <value>3600</value>

</property>

(2)一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。

<property>

 <name>dfs.namenode.checkpoint.txns</name>

 <value>1000000</value>

<description>操作动作次数</description>

</property>

<property>

 <name>dfs.namenode.checkpoint.check.period</name>

 <value>60</value>

<description> 1分钟检查一次操作次数</description>

</property>

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 中的

<property>

 <name>dfs.namenode.checkpoint.period</name>

 <value>120</value>

</property>

<property>

 <name>dfs.namenode.name.dir</name>

 <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>

</property>

( 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


举报

相关推荐

0 条评论