HDFS--图解读写流程

图解读写流程

写流程

在这里插入图片描述

写:hdfs dfs -put /export/software/jdk /

  • 1-客户端读取配置文件,找到NameNode的地址
  • 2-客户端向NameNode发送写入请求
  • 3-NameNode会检查是否允许写入将确认同意写入的,结果返回给客户端
    • 检查文件是否存在
    • 是否有权限
    • 存储路径是否存在
    • 有没有DataNode可以存储
  • 4-客户端会将大文件进行拆分成若干个小文件
  • 5-提交第一个块写入的请求给NameNode
  • 6-NameNode根据当前集群的情况以及副本的个数,返回三台DataNode的地址
    • NameNode会根据副本:3份
    • 根据机架感知做基本计算:如果客户端所在的机器也是DataNode会存储一份(以后如果客户端这台机器进行读的时候,可以直接从本机快速读取),与客户端在同一个机架的另外一台机器也会存储一份(如果客户端这台机器宕机,从同机架获取这个块,是最快的),另外一个机架的一台机器也会存储一份(如果第一个机架全部宕机,另外一个机架照样有一份可以用
    • 机架:路由器
      在这里插入图片描述
      这个不是绝对的。如果我们只有一个机架?如果我只有一台机器?
  • 7-客户端拿到这三台DataNode的地址,通过机架感知,选择最近的一台进行写入块
  • 8-客户端将整个块分成很多小的部分,每个部分挨个发送给DataNode
  • 9-最近的DataNode接受到写入请求,将这个数据同步给其他两个DataNode
  • 10-所有的DataNode写入完成逐级返回ack确认,客户端接受到ack,发送下一个小的部分,直到整个块发送完成
  • 11-客户端重复第5步,提交下一个块的写入请求,直到整个文件所有块写完成

读流程

在这里插入图片描述
读取:hdfs dfs -get /jdk /export/software

  • 1-客户端向NameNode请求读取一个文件
  • 2-NameNode检查元数据
  • 3-返回这个文件对应的所有的块的所有的DataNode地址
  • 4-客户端根据地址列表,计算出每个块离自己最近的那台DataNode
  • 5-到离自己最近的每台机器,取对应的块
  • 6-将每个块进行合并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值