NN 2NN 工作机制 NameNode工作机制 | 青训营笔记

267 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第九天

一、本篇笔记重点内容:

  • NN 2NN 工作机制
  • NameNode工作机制
  • CheckPoint 时间设置
  • 写数据流程

二、详细知识点介绍:

NN 2NN 工作机制

元数据:描述数据的数据。 FsImage:在磁盘中备份元数据。 Edits :(只进行追加操作,效率很高) 每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到 Edits 中。

一旦 NameNode 节点断电,可以通过 FsImage 和 Edits 的合并,合成元数据。定期合并可以避免文件数据过大而导致的断电后恢复元数据时间过长。

引入节点SecondaryNamenode,专门用于 FsImage 和 Edits 的合并。

NameNode工作机制

1)第一阶段:NameNode 启动

(1)第一次启动 NameNode 格式化后,创建 Fsimage 和 Edits 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。

(2)客户端对元数据进行增删改的请求。

(3)NameNode 记录操作日志,更新滚动日志。

(4)NameNode 在内存中对元数据进行增删改。

2)第二阶段: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)NameNode 将 fsimage.chkpoint 重新命名成 fsimage。

CheckPoint 时间设置

1)通常情况下,SecondaryNameNode 每隔一小时执行一次。

写数据流程

(1)客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode 检查目标文件是否已存在,父目录是否存在。

(2)NameNode 返回是否可以上传。

(3)客户端请求第一个 Block 上传到哪几个 DataNode 服务器上。【机架感知(副本存储节点选择)】

(4)NameNode 返回 3 个 DataNode 节点,分别为 dn1、dn2、dn3。

(5)客户端通过 FSDataOutputStream 模块请求 dn1 上传数据,dn1 收到请求会继续调用 dn2,然后 dn2 调用 dn3,将这个通信管道建立完成。

(6)dn1、dn2、dn3 逐级应答客户端。

(7)客户端开始往 dn1 上传第一个 Block(先从磁盘读取数据放到一个本地内存缓存), 以 Packet 为单位,dn1 收到一个 Packet 就会传给 dn2,dn2 传给 dn3;dn1 每传一个 packet 会放入一个应答队列等待应答。

(8)当一个 Block 传输完成之后,客户端再次请求 NameNode 上传第二个 Block 的服务 器。(重复执行 3-7 步)。

三、引用参考&推荐书目