码迷,mamicode.com
首页 > 其他好文 > 详细

HDFS 客户端读写操作详情

时间:2020-03-01 12:13:26      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:读写   socket   code   策略   mamicode   sock   通过   客户端   检查   

1. 写操作

技术图片

  1. 客户端向namenode发起上传请求
  2. namenode检查datanode是否已经存有该文件,并且检查客户端的权限
  3. 确认可以上传后,根据文件块数返回datanode栈
    注:namenode触发副本放置策略,如果客户端在集群内的某一台机器,那么副本第一块放置在该服务器上,然后再另外挑两台服务器;如果在集群外,namenode会根据策略先找一个机架选出一个datanode,然后再从另外的机架选出另外两个datanode,然后namenode会将选出的三个datanode按距离组建一个顺序,然后将顺序返回给客户端
  4. 客户端pop()栈顶的第一个节点,建立socket连接,然后第一个节点与第二个节点,第二个节点与第三个节点...依次建立socket连接
  5. datanode反顺序依次应答,直到应答给客户端
    注:如果有datanode没有应答,客户端重新向namenode请求
  6. 客户端向datanode上传文件块
  7. 上传文件块后,各datanode会通过心跳将位置信息汇报给namenode
    注:如果上传文件块时,某个datanode节点挂掉了,该节点的上节点直接连接该节点的下游节点继续传输,最终在第7步汇报后,namenode会发现副本数不足,触发datanode复制更多副本
  8. 客户端重复上传操作,逐一将文件块上传,同时dataNode汇报块的位置信息,时间线重叠
  9. 所有块上传完毕后,namenode将所有信息存在元数据中

HDFS 客户端读写操作详情

标签:读写   socket   code   策略   mamicode   sock   通过   客户端   检查   

原文地址:https://www.cnblogs.com/cjq10029/p/12388951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!