NameNode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。
接收用户的操作请求文件包括:
①fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
②edits:操作日志文件。
③fstime:保存最近一次checkpoint的时间以上这些文件是保存在linux的文件系统中.
NameNode的工作特点:1、客户端上传文件,NN首先往edits.log文件中记录数据操作日志。2、客户端开始上传文件,完成后返回成功信息给NN,NN就在内存中写入这次上传操作的新产生的数据信息。3、每当edits.log写满时需要将这段时间的新的原数据写到fsimage文件中去。Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。Secondary namenode就是用来合并fsimage和edits文件来更新NameNode的metedata的。
secondary namenode的工作流程:1.secondary通知namenode切换edits文件2.secondary从namenode获得fsimage和edits(通过http)3.secondary将fsimage载入内存,然后开始合并edits4.secondary将新的fsimage发回给namenode5.namenode用新的fsimage替换旧的fsimage
触发checkpoint条件:l、fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。2、fs.checkpoint.size??? 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M。