HDFS读写数据流程

HDFS读写数据流程

一、HDFS写数据流程

  1. 客户端发起请求上传文件
  2. namenode检查目录树是否可以创建文件(1.检查权限,2检查目录树结构,目录是否存在)并响应客户端是否可上传
  3. 客户端对文件进行分操作形成block块
  4. 请求上传第一个block,请求返回datanode(上传的数据真实存储的地址)
  5. 根据机架感应原理,网络拓扑关系,副本机制,找到相应可以上传的datanode连接列表,返回给客户端。
  6. 根据返回的连接列表 客户端请求与第一台机器建立block传输通道
  7. datanode连接列表一次进行连接形成一条完整的pipeline管道
  8. 客户端,将第一个数据包packet(64k 由(chunk512b+chunksum4b)组成)发送数据,然后依次由服务器进行管道传输,服务器会自我保存一份
  9. 第一个请求完成之后,建立一条反向应答通道,ack应答机制
    10.第一个请求完成之后,开始继续发送packet,当第一个block发送完成后,此时client重新向namenode发送请求,获取第二个block应该存储到哪个datanode中,接着开始从第5步不断执行,直到所有的block完全写入。

二、节点距离计算

到达共同祖先
Distance(d1/r2/n0,d1/r3/n0)=4

三、机架感知

机架感知是一种计算不同计算节点(TaskTracker)的距离的技术,用以在任务调度过程中尽量减少网络带宽资源的消耗,这里用尽量,想表达的是当一个TT(TaskTracker)申请不到本地化任务时,JT(JobTracker)会尽量调度一个机架的任务给他,因为不同机架的网络带宽资源比同一个机架的网络带宽资源更可贵。

第一个副本选择在client所处的节点上,如果客户端在集群外随机选一个

第二个副本在另一个机架的随机节点上
第三个在第二个副本所在的机架的随机节点上

四hdfs读取数据流程

在这里插入图片描述

1)客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。

2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以packet为单位来做校验)。

4)客户端以packet为单位接收,先在本地缓存,然后写入目标文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值