HDFS

1 读写数据流程

参考文献:
[1] HDFS读写流程
[2] HDFS读写流程(史上最精炼详细)

1.1 读流程

在这里插入图片描述

  • client访问NameNode,查询元数据信息,获得这个文件的数据块位置列表,返回输入流对象。
  • 客户端并发的读每个块(即图中4,5是并发执行的,每个block都有多个副本,程序会找相对空闲的DataNode节点去读相应副本)。
  • 关闭该输入流,在客户端将读取的所有块合并成一个文件。

1.2 写流程

在这里插入图片描述

  • 客户端向NameNode发出请求,请求创建一个文件。
  • NameNode检查是否存在文件、检查权限。检查通过后,根据文件大小,将文件在逻辑上切分为多个块,并将此信息(包括有多少个Block以及每个Block存在哪些DataNode上)返回给客户端。
  • 客户端首先把一个Block写到其中一个DataNode上(注意:每个块默认都有多个副本,这些副本不是都由客户端向三个DataNode上写的,而是由客户端向其中一个DataNode上写一份,然后由该DataNode创建新线程,按照副本放置规则向其他节点上复制该副本),每个DataNode写完一个块后,返回确认信息。
  • 写完数据,关闭输出流。发送完成信号给NameNode。
    (注:发送完成信号的时机取决于集群是强一致性还是最终一致性,强一致性则需要所有DataNode写完后才向NameNode汇报。最终一致性则其中任意一个DataNode写完后就能单独向NameNode汇报,HDFS一般情况下都是强调强一致性)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张之海

若有帮助,客官打赏一分吧

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

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

打赏作者

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

抵扣说明:

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

余额充值