【精】彻底理解HDFS读文件流程

170 篇文章 147 订阅 ¥29.90 ¥99.00

读完本文,你将收获如下:
①HDFS读文件的整体流程。
②读取数据过程中的一些细节,例如:如果文件的最后一个block正在写,客户端能否读到?客户端选择哪个DataNode去读?
③ LocatedBlocks对象图解、DFSInputStream关键成员变量的释义等。

下面正式开始本文:

一、前置知识

1.1 LocatedBlocks对象

结构大致如下图所示:

LocatedBlocks

客户端调用getBlockLocations RPC后,NameNode返回给客户端LocatedBlocks对象。包含了文件指定范围内的block所在的DataNode位置locs等信息,其中这个locs数组是经过排序的,排序规则利用了网络的拓扑信息(机架信息),距离Client网络距离最近的DataNode将会排在locs数组的前面。规则如下:

Hadoop采用一个简单的方法:把网络看做一棵树,两个节点间的距离是它们到最近共同祖先的距离总和。该树中的层次是没有预先设定的,但是相对于数据中心、几家和正在运行的节点,通常可以设定等级。具体想法是针对以下每个场景,可用带宽依次递减:

同一个节点上的进程
同一机架上的不同节点
同一数据中心中不同机架上的节点
不同数据中心中的节点

例如,假设有数据中心 d1 机架 r1 中的节点 n1.该节点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叹了口丶气

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值