HDFS 笔记二

    技术2022-07-11  89

     

    1.HDFS元数据管理机制

    计算机中存储数据两种:内存或者是磁盘 元数据存储磁盘:存储磁盘无法面对客户端对元数据信息的任意的快速低延迟的响应,但是安全性高 元数据存储内存:元数据存放内存,可以高效的查询以及快速响应客户端的查询请求,数据保存在内存,如果断点,内存中的数据全部丢失。

    权衡:内存+磁盘;NameNode内存+FsImage的文件(磁盘)

     

    两个合并 = 完整数据: NameNode 引入了一个 edits 文件(日志文件:只能追加写入) edits 文件记录的是client的增删改操作 2.元数据管理流程图

    第一阶段: NameNode 启动      1.第一次启动 NameNode 格式化后,创建 Fsimage Edits 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。      2.客户端对元数据进行增删改的请求。      3.NameNode 记录操作日志,更新滚动日志。 NameNode在内存中对数据进行增删改。

    第二阶段:Secondary NameNode工作      1.Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否执行检查点操作结果。       2.Secondary NameNode请求执行CheckPoint。       3.NameNode滚动正在写的Edits日志。       4.将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。       5.Secondary NameNode加载编辑日志和镜像文件到内存,并合并。       6.生成新的镜像文件fsimage.chkpoint。       7.拷贝fsimage.chkpoint到NameNode       8.NameNodefsimage.chkpoint重新命名成fsimage

    问题: 1.Fsimage 中为什么没有记录块所对应 DataNode?   在集群启动后, NameNode 要求 DataNode 上报数据块信息,并间隔一段时间后再次上报。 2.NameNode 启动时如何确定加载哪些 Edits文件呢?    需要借助 fsimage 文件最后数字编码,来确定哪些 edits 之前是没有合并到 fsimage 中,启动时只需要加 载那些未合并的 edits 文件即可。  
    Processed: 0.011, SQL: 9