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的传输过程一样
    在这里插入图片描述

HDFS读数据流程图

  1. 客户端首先向NN发送读数据请求,然后NN告知客户端文件的元数据信息

  2. 客户端拿到元数据后,向DN1发送读取block1的数据请求, DN1将block1的数据流返回

向DN2发送读取block2的数据请求, DN2将block2的数据流返回
在这里插入图片描述

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。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一切如来心秘密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值