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:
checkpoint after:
參考:http://blog.cloudera.com/blog/2014/03/a-guide-to-checkpointing-in-hadoop/