在前面我们介绍了元数据信息都是存储在fsimage和edits文件里面的,那么secondarynameNode是如何管理触发Fsimage与Edits⽂件的修改的。过程如下:
1. secnonaryNN通知NameNode切换editlog。 2. secondaryNN从NameNode中获得FSImage和editlog(通过http⽅式)。 3. secondaryNN将FSImage载⼊内存,然后开始合并editlog,合并之后成为新的fsimage。 4. secondaryNN将新的fsimage发回给NameNode。 5. NameNode⽤新的fsimage替换旧的fsimage。
关于fsimage和edits的合并配置相关的参数有如下几个:
1、控制多长时间进行一次合并
<property> <name>dfs.namenode.checkpoint.period</name> <value>3600</value> </property>
这里默认是1个小时进行一次合并,也就是到了1个小时,这个edits文件就会和fsimage进行合并,形成一个新的fsimage文件。
2、控制hdfs写入文件的操作数达到多少次进行合并
<property> <name>dfs.namenode.checkpoint.txns</name> <value>10000</value> </property>
这里的意思是hdfs操作达到了10000此就会触发一个edits文件和fsimages进行合并
3、每隔多长时间检查一次hdfs的操作次数
<property> <name>dfs.namenode.checkpoint.check.period</name> <value>60</value> </property>
这里相当于每一分钟检查一次hdfs操作次数,然后再根据上诉2的配置进行数据合并。
还没有评论,来说两句吧...