namenode的文件存储

namenode数据存储分为两个文件,fsp_w_picpathedits文件,edits文件记录了所有namenode的操作,相当于日志记录。fsp_w_picpath记录了namenode的数据。在namenode启动时,会加载fsp_w_picpath的数据到内存中,并从edits文件中解析所有数据信息到内存,两个数据合并后共同组成了namenode全量信息。


secondarynamenode的作用

secondarynamenode 按一定规则将edits文件和fsp_w_picpath文件合并,合并后namenode会启用新的edits文件,这样会减小edits文件的文件大小,控制edits文件的大小会减少namenode在启动阶段解析加载edits文件的时长。


secondarynamenode合并文件规则

   配置    fs.checkpoint.period 执行检查点合并文件检查时间 默认3600s 

               fs.checkpoint.size    实行检查点合并文件阀值大小 默认64M

  两个条件满足其一则合并文件


工作原理示意图

 Hadoop Secondarynamenode原理_第1张图片

架构分析

    fsp_w_picpath与edits文件对于namenode存储数据有什么区别,为什么要分开两个文件进行存储?

    fsp_w_picpath存储着所有目录和文件的序列化信息,而edits保存了所有写或更新的信息,在namenode运行过程中只向edits文件中写相关的操作信息和文件信息

    分两个文件存储是因为fsp_w_picpath由于保存了所有namenode的信息,所以文件大小通常比较大,这样在一个大的文件中进行写操作比较费系统资源而且延迟了系统的反应时间,而edits文件由于有secondarynamenode进行合并,通常大小要小于fsp_w_picpath,所以在edits文件中进行更新写操作会降低系统资源的消耗。

    为什么会引入sencondarynamenode,只用namenode会有什么问题?

    由于namenode进行分文件保存,但又不能使edits文件过大,所以需要进行文件合并,但进行文件合并会占用系统内存等资源,如果直接使用namenode进行文件合并,会导致在合并文件期间,系统文件管理能力下降卡顿等。另外由于secondarynamenode与namenode进行分离,可以将namenode和secondarynamenode分开部署到不同机器上,提高系统的稳定与安全性。除此之外,secondarynamenode由于进行了检查点,在namenode完全宕机数据丢失的情况下,secondarynamenode可以在检查点上恢复系统数据,当然,也会造成检查点之后的数据丢失。

                                                                                                                                       -----史龙刚