HDFS名称节点工做过程

1、名称节点(NameNode)

1.什么是名称节点node

在HDFS中,名称节点负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构-FsImage和EditLog。安全

  • FsImage:用于维护文件系统树以及文件树中全部的文件和文件夹的元数据。
  • EditLog:中记录全部针对文件建立、删除、重命名等操做的日志文件。

名称节点记录了每一个文件中各个块所在的数据节点的位置信息,但并不持久化存储这些信息,而是在系统每次启动时扫描全部数据节点重构获得这些信息。数据结构

2.名称节点工做过程分布式

名称节点启动时,会将FsImage的内容加载到内存当中,而后执行EditLog文件中的各项操做,使得内存中的元数据保存最新。这个操做完成后,就会建立一个新的FsImage文件和一个空的EditLog文件。名称节点启动成功并进入正常运行状态之后,HDFS中的更新操做都会被写入到EditLog,而不是直接写入FsImage(文件大,直接写入系统会变慢)。函数

名称节点在启动的过程当中处于“安全模式”,只能对外提供读操做。启动结束后,则进入正常运行状态,对外提供读写操做。post

2、第二名称节点(Secondary NameNode)
1.功能学习

在名称节点运行期间,EditLog文件因为操做不断发生会逐渐变大,为解决逐渐变大带来的问题,故采用了第二名称节点。spa

  • 能够完成EditLog与FsImage的合并操做,减小EditLog文件大小,缩短名称节点重启时间
  • 做为名称节点的“检查点”,保存名称节点中的元数据信息。

2.工做过程设计

  1. SecondaryNameNode会按期和NameNode通讯,请求其中止使用EditLog文件,暂时将新的写操做写到一个新的文件edit.new上来,这个操做是瞬间完成,上层写日志的函数彻底感受不到差异。
  2. SecondaryNameNode经过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下。
  3. SecondaryNameNode将下载下来的FsImage载入到内存,而后一条一条地执行EditLog文件中的各项更新操做,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并。
  4. SecondaryNameNode执行完(3)操做以后,会经过post方式将新的FsImage文件发送到NameNode节点。
  5. NameNode将从SecondaryNameNode接收到的新的FsImage替换旧的FsImage文件,同时将edit.new替换EditLog文件,经过这个过程EditLog就变小了。

HDFS设计中,并不支持把系统直接切换到第二名称节点,从这角度,第二名称节点只是起到名称节点“检查点”的做用,并不能起到“热备份”做用。即便有了第二名称节点的存在,当名称节点发生故障时,系统仍是有可能会丢失部分元数据信息。日志

Reference:
dblab.xmu.edu.cn


学习交流,有任何问题还请随时评论指出交流。

相关文章
相关标签/搜索