HDFS的读写入流程

一.HDFS的读取流程

1. 客户端请求Namenode,读数据

2. Namenode接受到客户端的请求后,会先判断该客户是否有写入的权限,没有则直接报错,有则继续判断该文件是否存在,没有则直接报错,有则返回给客户端,该文件的部分或者所有的block块的地址,这些地址都是活跃的

3.client(客户端)根据Namenode返回Datanode队列,并行的从这些Datanode中读取block块的数据

4. 上述block块内容读取完毕后,会继续访问Namenode剩余部分或者全部的block块的地址,然后并行读取,直至所有的block读取完成

5. 按照block的信息(编号等),将这些block块组合成一个完整文件,至此HDFS读数据完成

 

二. HDFS的写入流程

1. 客户端请求Namenode上传数据

2. Namenode接受客户端的请求后,会先判断该客户端是否有写入的权限,如果没有直接报错,如果有权限,则会判断该文件的父目录是否存在,如果不存在,直接报错,如果存在,则告知客户端可以上传

3. 按照指定的block快大小,对文件进行切分操作

4. 请求Namenode第一个block块上传的位置,即到哪些Datanode中

5. Namenode会根据副本机制,负载均衡,机架感知原理及网络拓扑图,获取存储该block的Datanode队列(这些Datanode都是活跃的)

6. 根据Namenode返回的Datanode队列,和第一个datanode建立连接

7. 依次和其他的Datanode建立连接,形成传输管道

8. 采用数据报包(最大64KB)的方式发送数据,按照传输管道依次发送,并建立反向应答机制(ACK机制)

9.正常的IO操作,即:上传数据,直至第一个block块上传完毕

10. 返回第四步,然后往下重复执行(即:询问第二个block块存储到哪里)直至所有的block块上传完毕,此时,HDFS数据写入动作完成

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值