Hadoop Secondarynamenode原理分析

来源:互联网 发布:ebsco外文期刊数据库 编辑:程序博客网 时间:2024/06/04 01:22
namenode的文件存储
    namenode数据存储分为两个文件,fsimageedits文件,edits文件记录了所有namenode的操作,相当于日志记录。fsimage记录了namenode的数据。在namenode启动时,会加载fsimage的数据到内存中,并从edits文件中解析所有数据信息到内存,两个数据合并后共同组成了namenode全量信息。

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

secondarynamenode合并文件规则
   配置    fs.checkpoint.period 执行检查点合并文件检查时间 默认3600s 
              fs.checkpoint.size    实行检查点合并文件阀值大小 默认64M
  两个条件满足其一则合并文件

工作原理示意图
 
架构分析
    fsimage与edits文件对于namenode存储数据有什么区别,为什么要分开两个文件进行存储?
    fsimage存储着所有目录和文件的序列化信息,而edits保存了所有写或更新的信息,在namenode运行过程中只向edits文件中写相关的操作信息和文件信息
    分两个文件存储是因为fsimage由于保存了所有namenode的信息,所以文件大小通常比较大,这样在一个大的文件中进行写操作比较费系统资源而且延迟了系统的反应时间,而edits文件由于有secondarynamenode进行合并,通常大小要小于fsimage,所以在edits文件中进行更新写操作会降低系统资源的消耗。
   为什么会引入sencondarynamenode,只用namenode会有什么问题?
    由于namenode进行分文件保存,但又不能使edits文件过大,所以需要进行文件合并,但进行文件合并会占用系统内存等资源,如果直接使用namenode进行文件合并,会导致在合并文件期间,系统文件管理能力下降卡顿等。另外由于secondarynamenode与namenode进行分离,可以将namenode和secondarynamenode分开部署到不同机器上,提高系统的稳定与安全性。除此之外,secondarynamenode由于进行了检查点,在namenode完全宕机数据丢失的情况下,secondarynamenode可以在检查点上恢复系统数据,当然,也会造成检查点之后的数据丢失。       ----史龙刚
    


1 0
原创粉丝点击