HDFS的读写机制

一、HDFS数据写流程

  • 流程图如下
    在这里插入图片描述
  • 具体案例如下

在这里插入图片描述

  • 写入过程如下
  1. Client发起文件上传请求,通过RPC向NameNode发起请求,NameNode检查目标文件是否已经存在,父目录是否存在,创建者是否有权进行操作
  2. NameNode返回是否可以上传(若成功则返回可以上传,否则会让客户端抛出异常)
  3. 当客户端开始写入文件的时候,开发库会将文件切分为多个packets,并在内部以“dataqueue”的形式管理这些packets,并向Namenode申请新的blocks,clients请求第一个block该传输到哪些DataNode服务器上。
  4. NameNode返回三个DataNode服务器DataNode1,DataNode2,DataNode3
  5. Client请求3台中的一台DataNode1(遵循就近原则,如果都一样,就随机挑选一台DataNode;上传数据本质上是一个RPC调用建立pipline)上传数据,DataNode1收到请求会继续调用DataNode2,然后DataNode2调用DataNode3,将整个pipeline建立完成,逐级返回客户端
  6. Client开始往DataNode1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet(默认为64KB)为单位,DataNode1收到一个packet就会传递给DataNode2,DataNode2传递给DataNode3;DataNode1每传一个pocket会放入一个答应队列等待答应
  7. 到一个block传输完成之后,Client再次请求DataNode上传第二个block服务器
  8. 重复执行上述操作

二、HDFS数据读流程

  • 流程图如下
    在这里插入图片描述

  • 具体案例如下
    在这里插入图片描述

  • 读过程如下

  1. client跟NameNode通信查询元数据,找到文件块所在的DataNode服务器
  2. 挑选一台DataNode(遵循就近原则,如果都一样,则随机挑选一台DataNode)服务器,请求建立socket流
  3. DataNode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做效验)
  4. 客户端以packet为单位接收,先存在本地缓存,然后写入目标文件。

三、HDFS读写实物图(漫画流程)

HDFS的读写流程就介绍完了,看着有点抽象,可以借助下边的图片来理解一下

1. 写数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 读数据

在这里插入图片描述
在这里插入图片描述
老师上课讲的知识点,感觉挺重要的,然后就整理了一下。,若有不对或这描述不清楚的地方请指正,如果有帮助或者喜欢就给个赞和关注一下吧😁😁✌✌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小-枝-丫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值