HDFS读写流程学习(一)

  ## HDFS读写流程
  
    
   *上传*
  1. client客户端向NameNode申请上传文件(Hadoop2.7.2)
  2. NameNode响应是否可以上传(检测用户权限等),审核不通过,不允许上传,审核通过,会将文件逻辑拆分(默认是128M)
  3. 客户端启动一个输出流FSDataOutPutStream并向NameNode请求上传第一个Block
  4. NameNode返回 DataNode列表(设置了几个备份NataNode,返回几个)
  5. client客户端向DataNode1请求建立连接,NataNode1向下一个DataNodeN请求建立连接…,DataNodeN回复DataNode1应答成功,DataNode1向客户端回复应答成功
  6. 客户端向DataNode1发送传输Packet队列,DataNode1将队列中的Packet进行落地,并将Packet队列向DataNodeN传输,,当DataNodeN将包落地完成后会向上一个DataNode返回落地成功,上一个DataNode本身落地成功,并且收到DataNodeN落地成功的信息,继续向上一个执行此操作,当DataNode1落地成功后,并收到DataNode2的落地成功的信息后,会向client返回第一块block上传成功
  7. 第二块block重复第一块的操作,直至所有block上传成功
  8. client客户端发送上传成功给NameNode并关闭FsDataOutPutStream
  9. NameNode收到消息后会将其信息添加到元数据里去

NameNode会将离client最近的一个DataNode作为DataNode1
每一个Block上传选择的DataNodfe是随机的

   下载
  1. client客户端向NameNode发送下载请求
  2. NameNode检查是否有权限,文件是否存在
  3. 若NameNode表示可以正常下载,则Client客户端会启动FileDataInputStream并请求下载第一个block,NameNode会返回存了相关信息的DataNode(包含副本)
  4. Client客户端会向DataNode1请求建立连接
  5. DataNode1若应答成功则会向Client传输Packet包
  6. 直至所有的Block传输完成,则NameNode向client客户端发送下载完成请求
  7. Client会关闭FileDataInputStream下载完成
    packet包默认是64K,
    client客户端只会向DataNode1交互,只有在DataNode1失联的情况下,才会向下一个DataNode交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值