
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
前面的文章我们了解了HDFS的 基本概念及功能有哪些,本文小编继续和大家一起来学习一下HDFS元数据的持久化。
NameNode 基于内存存储文件元数据、目录结构、文件 block 的映射等信息,为了保障其可靠性,需要对其进行持久化。 日志文件的方式 和 内存 Dump 都有其相应的优势与劣势,因此 HDFS 也使用了混合的方式。HDFS 同样也同时使用了这两种方式,其 日志记录 方式被称为 EditsLog,其内存 Dump 方式被称为 FsImage。因为 EditsLog 和 FsImage 也存在 日志记录 和 内存 Dump 的固有的缺点,因此两种方式都使用,来弥补对方的缺点。
FsImage 严格来讲算不上是一个 内存 Dump,因为 FsImage 的创建是在部署完 HDFS 后格式化时生成的。在 NameNode 第一次启动时读取的是一个空的 FsImage 文件(当然,它可能有它的内部结构,但是此时它不包含元数据等信息)。在之后的 NameNode 启动时,会去读 EditsLog 和 FsImage,此时会将所有的 EditsLog 中的记录作用在内存中的 FsImage 上,并将新版本的 FsImage 从内存中保存到磁盘上,然后删除旧的 EditsLog 文件。通过这种方式,HDFS 的内存中就得到了上次关机时的全量数据。
FsImage 需要滚动更新,FsImage 的滚动更新并非进行 内存 Dump,而是通过当前 FsImage 文件和增量的 EditsLog 文件形成新的 FsImage 文件,然后将新的 FsImage 替换旧的 FsImage 文件。而增量的 EditsLog 文件则被删除,重新记录新的 EditsLog 文件。
注意:NameNode 持久化不包含每个文件的块的位置,因为文件块的位置由 DataNode 主动进行上报。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请添加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。