HDFS(五):文件读取解析

剖析文件读取

1.客户端向namenode请求下载文件,
2.namenode通过查询元数据,找到文件块所在的datanode地址,返回元数据
3.挑选一台datanode(就近原则,然后随机)服务器,请求读取数据。
4.datanode开始传输数据给客户端(从磁盘里面读取数据放入流,以packet为单位来做校验)。

注意:

  • 1.此处分块可能会请求不同的datanode,如下图所示的blk_1和blk_2,且这两个块会先合并,形成完整的数据后,再存储到本地
  • 2.客户端以packet为单位接收,先在本地缓存,判断是否需要合并,然后写入目标文件。

图片来源atguigu
这时候,我们考虑一个可能出现的问题:

假设有三个节点dn1、dn2、dn3,有数据pdc.avi
client1修改了dn1的pdc.avi,而dn2、dn3的数据还没有来得及备份
此时client2读取pdc.avi,但是却从dn3开始读取,导致读取的pdc.avi不是最新修改的pdc.avi,数据一致性被破坏

有没有什么方法,能使数据被其他client可见呢?这就是一致性模型的由来:

一致性模型

1.使用debug调试如下代码<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值