|NO.Z.00023|——————————|BigDataEnd|——|Hadoop&HDFS.V08|——|Hadoop.v08|HDFS元数据管理机制|NN和2NN.v01|
一、HDFS元数据管理机制
### --- [HDFS分布式文件系统]
~~~ [HDFS元数据管理机制Namenode、Fsimage及Edits编辑日志]
~~~ [HDFS元数据管理机制之2NN及checkpoint机制]
~~~ [HDFS元数据管理机制之Fsimage及Edits文件解析]
~~~ [HDFS元数据管理机制之CheckPoint周期]
~~~ [HDFS元数据管理之NN故障处理]
### --- 问题1:NameNode如何管理和存储元数据?
~~~ # 计算机中存储数据两种:
~~~ 内存或者是磁盘
~~~ # 元数据存储磁盘:
~~~ 存储磁盘无法面对客户端对元数据信息的任意的快速低延迟的响应,
~~~ 但是安全性高元数据存储内存:元数据存放内存,
~~~ 可以高效的查询以及快速响应客户端的查询请求,数据保存在内存,
~~~ 如果断点,内存中的数据全部丢失。
~~~ # 解决方案:
~~~ 内存+磁盘;NameNode内存+FsImage的文件(磁盘)
### --- 新问题:磁盘和内存中元数据如何划分?
~~~ 两个数据一模一样,还是两个数据合并到一起才是一份完整的数据呢?
~~~ # 一模一样:
~~~ client如果对元数据进行增删改操作,需要保证两个数据的一致性。
~~~ FsImage文件操作起来效率也不高。
~~~ # 两个合并=完整数据:
~~~ NameNode引入了一个edits文件(日志文件:只能追加写入)
~~~ edits文件记录的是client的增删改操作,
~~~ 不再选择让NameNode把数据dump出来形成FsImage文件(这种操作是比较消耗资源)。
二、元数据管理流程图

### --- 第一阶段:NameNode启动
~~~ 第一次启动NameNode格式化后,创建Fsimage和Edits文件。
~~~ 如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
~~~ 客户端对元数据进行增删改的请求。
~~~ NameNode记录操作日志,更新滚动日志。
~~~ NameNode在内存中对数据进行增删改。
### --- 第二阶段:Secondary NameNode工作
~~~ Secondary NameNode询问NameNode是否需要CheckPoint。
~~~ 直接带回NameNode是否执行检查点操作结果。
~~~ Secondary NameNode请求执行CheckPoint。
~~~ NameNode滚动正在写的Edits日志。
~~~ 将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
~~~ Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
~~~ 生成新的镜像文件fsimage.chkpoint。
~~~ 拷贝fsimage.chkpoint到NameNode。
~~~ NameNode将fsimage.chkpoint重新命名成fsimage。
三、Fsimage与Edits文件解析
### --- Fsimage与Edits文件解析
~~~ NameNode在执行格式化之后,
~~~ 会在/opt/yanqi/servers/hadoop-2.9.2/data/tmp/dfs/name/current目录下产生如下文件

~~~ # Fsimage文件:
~~~ 是namenode中关于元数据的镜像,一般称为检查点,
~~~ 这里包含了HDFS文件系统所有目录以及文件相关信息(Block数量,副本数量,权限等信息)
~~~ # Edits文件 :
~~~ 存储了客户端对HDFS文件系统所有的更新操作记录,
~~~ Client对HDFS文件系统所有的更新操作都会被记录到Edits文件中(不包括查询操作)
~~~ # seen_txid:
~~~ 该文件是保存了一个数字,数字对应着最后一个Edits文件名的数字
~~~ # VERSION:
~~~ 该文件记录namenode的一些版本号信息,比如:CusterId,namespaceID等


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通