前提说明:研究的hadoop版本1.0.3
checkpoint的触发条件:
- 默认1小时进行一次merge;
- edits的文件大小超过大致64M
以上两个条件,满足任意一个即可,每隔5分钟进行一次条件检查。
checkpoit流程:
- 在SNN(secondary namenode)服务器上检查fs.checkpoint.dir fs.checkpoint.edits.dir配置的文件路径,如果不存在则创建
- 在SNN服务器上修改current文件夹名称为: lastcheckpoint.tmp,并且重新创建一个空的current文件夹
- 通过http请求调用NN(namenode)检查edits.new文件是否已经存在,如果已经存在则检查所有的存放edits文件的文件夹中是否均包含edits.new文件,如果有一个不包含则抛出:Inconsistent existence of edits.new异常,如果均包含,则会输出warn级别的日志,提示:Cannot roll edit log,edits.new files already exists in all healthy directories:并且return。如果不存在则停止edits文件的写入,创建一个临时的edits文件:edit.new,在merge过程中产生的edit log均