文章目录

  • HDFS写数据流程图
  • HDFS读数据流程图
  • HDFS 元数据管理与checkpoint


HDFS写数据流程图

  • 客户端会根据配置文件将需要写入的文件切分为多个block, 例如将 jdk.tar.gz 切分为 block1 和 block2
  1. 客户端首先向NN发送写数据的请求, 当请求同意后,客户端会向NN发送请求写入block1,NN会告知客户端block1将被写入哪些DN(DN1, DN2, DN3)
  2. 然后客户端会找将写入的第一个DN建立数据传输的连接,然后第一个DN再与第二个将要写入的DN建立连接,第二个DN在与第三个DN建立连接。

当所有需要写入的DN连接都建立后,第一个DN会告知客户端连接已建立

  1. 当所有连接都建立成功后,客户端向第一个DN传输block1数据,然后DN1会拷贝副本至DN2,DN3
  2. block2 的传输过程与block1的传输过程一样
  3. HDFS 读写权限 hdfs读写流程图_HDFS 读写权限

HDFS读数据流程图

  1. 客户端首先向NN发送读数据请求,然后NN告知客户端文件的元数据信息
  2. 客户端拿到元数据后,向DN1发送读取block1的数据请求, DN1将block1的数据流返回

向DN2发送读取block2的数据请求, DN2将block2的数据流返回

HDFS 读写权限 hdfs读写流程图_HDFS_02

HDFS 元数据管理与checkpoint

元数据

HDFS的目录结构以及每个文件的BLOCK信息(id, 副本系数, block存放位置)

**元数据信息存放位置 **

元数据存放在hdfs-site.xml配置文件配置的目录下 ${hadoop.tmp.dir}/dfs/namesecondary/currentfsimage_*文件中。

NN 元数据操作

元数据信息由NN管理,当操作dfs上的文件时,NN会以树形结构在内存中将元信息实时记录下来。

NN会定时将内存中的元信息序列化为fsimage文件

为了防止宕机造成内存元信息丢失,NN会记录序列化时间段内对HDFS相关的操作指令,生成edits日志文件

合并fsimage与edits文

NN会生成多个时间点的fsimage与edits文件,并且会定期将某个时间点的fsimage与edits记录的操作合并生成一个新的fsimage, 然后替换该时间点的fsimage。

反序列化fsimage 与 edits文件

合并fsimage 与edits文件需要先将文件反序列化为树形结构,生成一个新的树形结构,然后在序列化为新的fsimage。该过程涉及大量IO操作,为了不影响NN的性能,因此有了secondary NN 来进行合并操作

checkpoint

合并fsimage与edits文件生成新的fsimage文件称为checkpoint。

HDFS 读写权限 hdfs读写流程图_HDFS_03