- TransactionsSinceLastCheckpoint = getEditLog().getLastWrittenTxId() -
getFSImage().getStorage().getMostRecentCheckpointTxId(); - SecondaryNamenode上有checkpointThread,其主要的工作循环在void doWork()函数。
- 判断是否做Checkpoint的标准是:shouldCheckpointBasedOnCount() ||
now >= lastCheckpointTime + 1000 * checkpointConf.getPeriod()。
- shouldCheckpointBasedOnCount() = countUncheckpointedTxns() >= checkpointConf.getTxnCount(),其中checkpointTxnCount由配置参数dfs.namenode.checkpoint.txns决定,默认值为1000000
- uncheckpointedTxns = curTxId -checkpointImage.getStorage().getMostRecentCheckpointTxId()
- checkpointPeriod由配置参数dfs.namenode.checkpoint.period决定,默认值为3600
- maxRetriesOnMergeError由配置参数dfs.namenode.checkpoint.max-retries决定,默认值为3
- 如满足条件,调用doCheckpoint()进行检查点操作。
- 检查的周期是getCheckPeriod() = Math.min(checkpointCheckPeriod, checkpointPeriod)。
- checkpointPeriod是不考虑txns的checkpoint周期,由dfs.namenode.checkpoint.period决定,默认值为3600
- checkpointCheckPeriod是poll NN检查checkpointTxnCount的周期,由dfs.namenode.checkpoint.check.period指定,默认是60
HDFS中的TransactionsSinceLastCheckpoint
最新推荐文章于 2023-04-28 17:31:14 发布