hdfs:写数据、读数据流程

写数据(上传文件)流程

  1. 客户端(client)向namenode(nn)请求上传文件
  2. nn查看目录树,检查目录是否存在、文件是否存在
  3. nn返回是否可以上传
  4. (可以上传)client告诉nn,要上传数据块1(block1)
  5. nn查看datanode(dn)信息池,选出三台dn(一般就近随机一台、本机架一台、另一个机架一台)
  6. client请求dn1上传数据(建立pipeline连接),dn1收到请求继续调用n2,dn2调用dn3,完成连接后逐级返回client
  7. client以包(packet)为单位向dn1上传block1,dn1收到数据(读取数据放到本地内存)后传给dn2,dn2传给dn3
  8. 传完一个块后,接着重复步骤4,请求block2

     

 

补充注意(参考https://blog.csdn.net/qq_26442553/article/details/78529212 ):
1.namenode实际客户端只上传一个datanode,其余两个是namenode完成的。让datenote自己复制的。然后复制完成以后逐级返回结果给namenode.如果2,3datanode复制失败,再有namenode分配新的datanode地址。对于客户端来说默认上传一个datanode就可以了,其余的由datanode自己复制。
2.datanode切片是由客户端完成的。datanode第二三个副本的上传和第一个上传是异步的。

 

 

读数据(下载文件)流程

  1. client向nn请求读取xx文件
  2. nn查看这个文件有几个块,分别在哪个dn上
  3. client选择一个dn1(就近原则),请求读取数据(建立socket流)
  4. dn1返回block1数据,client以packet为单位接收数据,存到本地缓存,然后写到目标文件
  5. 读block2、block3

     

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值