如何保证namenode快速检索呢??元数据信息保存在哪里能够快速检索呢??如何保证元数据的持久安全呢??
将所有的元数据信息保存在了FSImage文件当中,那么FSImage随着时间推移,必然越来越膨胀,FSImage的操作变得越来越难,为了解决元数据信息的增删改,hadoop当中还引入了元数据操作日志edits文件,edits文件记录了客户端操作元数据的信息,随着时间的推移,edits信息也会越来越大,为了解决edits文件膨胀的问题,hadoop当中引入了secondaryNamenode来专门做fsimage与edits文件的合并
1、namenode工作机制
1、第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
2、客户端对元数据进行增删改的请求
3、namenode记录操作日志,更新滚动日志
4、namenode在内存中对数据进行增删改查。
2、Secondary NameNode工作
1、Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。
2、Secondary NameNode请求执行checkpoint。
3、namenode滚动正在写的edits日志
4、将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
5、Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
6、生成新的镜像文件fsimage.chckpoint
7、拷贝fsimage.checkpoint到namenode
8、namenode将fsimge.chkpoint重新命名成fsimage