首页 > 代码库 > HDFS之fsimage、metadata、edits、fstime

HDFS之fsimage、metadata、edits、fstime

 首先,要有这个观念,元数据信息(fsimage + editslog)。

 

    fsimage是在磁盘

    metadata是在内存

    ********************fsimage把内存的,序列化到磁盘了。********************

    元数据信息(fsimage + editslog),内存保存一份,磁盘保存一份,,,,,其他有个什么地方也要保存一份。

 

  ==============》 就如,学校图书馆里。书库,为了使得借书运转,要买多本书存库。《======================

   

    fsimage:元数据镜像文件,存储某一时段NameNode内存元数据信息。

        在hadoop1.*里,就是fsimage。

        在hadoop2.*里,还加了后缀。

        听说过镜像。  关闭时,将机器内存的信息写到磁盘,启动时,将磁盘的东西读取到内存。

   edits:操作日志文件

        比如说,上传一个文件或删除一个文件,这些操作。

   fstime:保存最近一次checkpoint的时间     

        比如说,在6月1号买的新电脑,在6月5日,做的第一次还原点,在6月18号,由于中病毒。在6月21号是做的第二次还原点。Checkpoint是保存最近的那次做还原点的数据。6月18-21日。

 

  namenode始终在内存中保存metadata,用于处理“读请求”。到有“读请求”时,namenode会首先写editlog到磁盘,即向edits(操作日志文件)中写入日志,成功返回后,才会修改内存,并且向客户端返回。

  形象化例子:我client提货员,向仓库管理员namenode,请求提货,在他同意同时,会将这情况写到editlog,先是将editlog写到磁盘,成功后,再写到内存。

 

  

fsimage载入内存     合并edits

     |

     |

     |

     新的 fsimage  

          |

     |

     |

     namenode,替换旧的

 

技术分享

技术分享

条件一:

fs.checkpoint.period

默认是3600秒,每隔一个小时,Secondarynamenode就要下载fsimage和edits,进行数据的同步。

 

条件二:

fs.checkpoint.size

edits一直在变大。一旦达到,就要进行合并。

 

只要达到这两个条件的其中一个,都会进行合并。

 

HDFS之fsimage、metadata、edits、fstime