大数据 | HDFS 元数据持久化笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据 | HDFS 元数据持久化笔记

 

一、HDFS 架构简单介绍

       HDFS 是一个主从(Master/Slaves)的架构,它由一个 NameNode 和一些 DataNode 组成。其中,NameNode 是主,DataNode 是从。文件元数据由 NameNode 负责存储和管理,且它维护了一个层次型的文件目录树;文件的数据由 DataNode 来按照 block 进行存储,并按照 block 进行读写。DataNode 与 NameNode 通过心跳来维持,DataNode 会向 NameNode 汇报自己持有的 block 信息。当客户端和 NameNode 交互文件元数据,和 DataNode 交互 block 数据。


二、角色功能

       从 HDFS 的架构来看,它包含两个重要的角色,分别是 NameNode 和 DataNode。其中,NameNode 完全基于内存存储文件元数据、目录结构、文件 block 的映射,因此,它需要持久化方案来保证数据的可靠性;DataNode 基于磁盘存储 block,并保存了 block 的校验,从而保证 block 的可靠性;DataNode 和 NameNode 之间通过心跳保持,并向 NameNode 汇报 block 状态。


三、常用的持久化方案

       很多基于内存的存储,在使用持久化时,持久化方案通常有几种方案,包括日志文件、内存 Dump 和 两种的混合方式。先来说一下比较常用的缓存系统 —— Redis。Redis 的持久化方式分为 AOF、RDB 和 混合方式。Redis 的 AOF 属于日志记录文件,它会记录每条命令到文本文件中,RDB 属于内存 Dump 的方式,它会全量的保存内存的信息,混合方式是 AOF 和 RDB 两者共用的方式。(Redis 为了解决 AOF 体积的问题,提供了 AOF 重写的命令)


四、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 主动进行上报。


五、Secondary NameNode 的引入

       由于滚动更新 FsImage 文件,也是比较耗时耗力的原因,HDFS 给 NameNode 提供了一个秘书,即 Secondary NameNode。Secondary NameNode 并非是第二个 NameNode,因为它不存储元数据,它的作用是完成 FsImage 和 EditsLog 的合并。通常 Secondary NameNode 和 NameNode 不在同一主机。Secondary NameNode 通过 http get 方式获取 NameNode 主机上的 FsImage 和 EditsLog,合并后通过 http post 方式提交给 NameNode,从而生成新的 FsImage 文件。


       当 Secondary NameNode 将 EditsLog 拉取以后,NameNode 会将将新的日志记录到新的 EditsLog 中。


六、总结

       学习 HDFS 持久化时,想到了 Redis 的持久化,因为很多技术的实现不同,但是它们在理论上几乎是相同的,或者是变通的。这里通过类比的方式,感觉理解其他技术时就会容易一些。上面总结了 HDFS 的 主/从架构,即 NameNode 和 DataNode,其在 HA 模式下还有主备的概念,涉及到选主的一致性算法等知识,之后再进行整理,希望喜欢的读者可以给点赞、关注!


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
133 6
|
1月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
41 0
|
1月前
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
35 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
1月前
|
存储 缓存 分布式计算
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
41 4
|
1月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
72 5
|
1月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
35 4
|
1月前
|
大数据 网络安全 数据安全/隐私保护
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
105 5
|
1月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
141 5
|
1月前
|
XML 大数据 网络安全
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(一)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(一)
63 4
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-41 Redis 类型集合(2) bitmap位操作 geohash空间计算 stream持久化消息队列 Z阶曲线 Base32编码
大数据-41 Redis 类型集合(2) bitmap位操作 geohash空间计算 stream持久化消息队列 Z阶曲线 Base32编码
25 2
下一篇
无影云桌面