前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop中HDFS读取文件的原理剖析

Hadoop中HDFS读取文件的原理剖析

作者头像
星哥玩云
发布2022-07-04 12:20:28
5070
发布2022-07-04 12:20:28
举报
文章被收录于专栏:开源部署

上一篇文章中简单介绍了一下Hadoop文件存储的一些逻辑与简单原理(见 http://www.linuxidc.com/Linux/2015-02/113638.htm),既然后写入,那肯定要读取分析数据咯,下面我在白话一下hdfs中文件读取的逻辑与简单原理。

第一步:跟写入文件一样,首先客户端会调用DistributedFilesyStem 对象的open()方法来打开文件,这个方法要做的事情就是:Distributed FilesyStem会通过RPC协议连接来调用namenode,namenode里面存储的都是文件命名空间,也就是文件存储在datanode的地址,我们首先获取到要想读取的文件头所在的位置,块中存在很多个数据节点副本,hadoop会根据一定的标准找到距离客户端最近的一个节点,此时便返回一个FSData InputStream,否则返回ioexception

第二步:紧跟着,客户端会读取返回去的文件输入流,此时文件头存储的datanode会自己寻找这些块中距离自己最近的其他datanode,并且建立起链接,客户端持续read,直到读取到块的末尾。从namenode中找到下一个块的地址,并找到最佳的文件节点位置。持续重复上面的动作。知道读取完成之后,文件输入流会调用close方法关闭流,

下面我们讨论下异常处理的机制:

如果客户端在读取数据流的时候遇到了错误块,怎么办眤?

如果客户端遇到了异常块,那么客户端就会记录下来这个块,并尝试去读取距离这个块最近的一个块,并且不会再去读取这个损坏的块。

同时客户端还会去校验接受到的数据的校验和,若发现一个损坏的块,它就会在客户端试图从别的数据节点中读取一个块的副本之前报告给名称节点。

在之前我们一直提到的hadoop的寻找最近的块或者节点的机制是如何实现呢?

我们都知道。在大数据存储中,限制效率的最主要因素就是带宽。 hadoop将网络看成一棵树,两个节点间的距离是距离它们最近的共同祖先的总和。 对于以下每个场景,可用带宽依次减少: 相同节点中的进程 同一机架上的不同节点 同一数据中心的不同机架上的节点 不同数据中心的节点

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档