dfs.namenode.checkpoint.period
--两次检查点创建之间的固定时间间隔,默认3600,即1小时。所以去ann snn 看到的fsimage 相隔1个小时。 dfs.namenode.checkpoint.txns
--standby namenode 检查的事务数量。若检查事务数达到这个值,也触发一次checkpoint,1,000,000。 以上两个参数都是触发snn checkpoint 的条件 dfs.namenode.checkpoint.check.period
--standby namenode检查是否满足建立checkpoint的条件的检查周期。默认60,即每1min检查一次。 dfs.namenode.num.checkpoints.retained
--在namenode上保存的fsimage的数目,超出的会被删除。默认保存2个。 dfs.namenode.num.checkpoints.retained
--最多能保存的edits文件个数,默认为1,000,000. 为防止standby namenode宕机导致edits文件堆积的情况,设置的限制。 dfs.ha.tail-edits.period
--standby namenode每隔多长时间去检测新的Edits文件。只检测完成了的Edits, 不检测inprogress的文件。default:60s

StandbyCheckpointer 的doWork()

 SNN查看是否满足创建checkpoint 的条件:

1) 距离上次checkpoint的时间间隔 >= ${dfs.namenode.checkpoint.period}(

2) Edits中的事务条数达到${dfs.namenode.checkpoint.txns}限制

这两个条件任何一个被满足了,就触发一次checkpoint 创建。

也可以手动checkpoint :

1. hdfs dfsadmin -safemode enter
>Safe mode is ON in dev01/192.168.254.43:8020
>Safe mode is ON in dev02/192.168.254.44:8020 2. hdfs dfsadmin -saveNamespace
> Save namespace successful for dev01/192.168.254.43:8020
> Save namespace successful for dev02/192.168.254.44:8020 3. hdfs dfsadmin -safemode leave
>Safe mode is OFF in dev01/192.168.254.43:8020
>Safe mode is OFF in dev02/192.168.254.44:8020
首先,checkpoint 之前要先进入安全模式。进入安全模式后,执行saveNamespace命令,他会把a-nn的fsimage 与 大于fsimage txid的editlog(包括finalized 与 in_progress的)合并成新的fsimage并落盘,然后新生成一个editlog。

checkpoint before:

hdfs standby namenode checkpoint 的一些参数-LMLPHP

checkpoint after:

hdfs standby namenode checkpoint 的一些参数-LMLPHP


参考:http://blog.cloudera.com/blog/2014/03/a-guide-to-checkpointing-in-hadoop/

05-11 21:51