上一篇文章中简单介绍了一下hadoop文件存储的一些逻辑与简单原理,既然后写入,那肯定要读取分析数据咯,下面我在白话一下hdfs中文件读取的逻辑与简单原理。
第一步:跟写入文件一样,首先客户端会调用DistributedFilesyStem 对象的open()方法来打开文件,这个方法要做的事情就是:Distributed FilesyStem会通过RPC协议连接来调用namenode,namenode里面存储的都是文件命名空间,也就是文件存储在datanode的地址,我们首先获取到要想读取的文件头所在的位置,块中存在很多个数据节点副本,hadoop会根据一定的标准找到距离客户端最近的一个节点,此时便返回一个FSData InputStream,否则返回ioexception
第二步:紧跟着,客户端会读取返回去的文件输入流,此时文件头存储的datanode会自己寻找这些块中距离自己最近的其他datanode,并且建立起链接,客户端持续read,直到读取到块的末尾。从namenode中找到下一个块的地址,并找到最佳的文件节点位置。持续重复上面的动作。知道读取完成之后,文件输入流会调用close方法关闭流,
下面我们讨论下异常处理的机制:
如果客户端在读取数据流的时候遇到了错误块,怎么办眤?
如果客户端遇到了异常块,那么客户端就会记录下来这个块,并尝试去读取距离这个块最近的一个块,并且不会再去读取这个损坏的块。
同时客户端还会去校验接受到的数据的校验和,若发现一个损坏的块,它就会在客户端试图从别的数据节点中读取一个块的副本之前报告给名称节点。
在之前我们一直提到的hadoop的寻找最近的块或者节点的机制是如何实现呢?
我们都知道。在大数据存储中,限制效率的最主要因素就是带宽。
hadoop将网络看成一棵树,两个节点间的距离是距离它们最近的共同祖先的总和。
对于以下每个场景,可用带宽依次减少:
相同节点中的进程
同一机架上的不同节点
同一数据中心的不同机架上的节点
不同数据中心的节点
第一步:跟写入文件一样,首先客户端会调用DistributedFilesyStem 对象的open()方法来打开文件,这个方法要做的事情就是:Distributed FilesyStem会通过RPC协议连接来调用namenode,namenode里面存储的都是文件命名空间,也就是文件存储在datanode的地址,我们首先获取到要想读取的文件头所在的位置,块中存在很多个数据节点副本,hadoop会根据一定的标准找到距离客户端最近的一个节点,此时便返回一个FSData InputStream,否则返回ioexception
第二步:紧跟着,客户端会读取返回去的文件输入流,此时文件头存储的datanode会自己寻找这些块中距离自己最近的其他datanode,并且建立起链接,客户端持续read,直到读取到块的末尾。从namenode中找到下一个块的地址,并找到最佳的文件节点位置。持续重复上面的动作。知道读取完成之后,文件输入流会调用close方法关闭流,
下面我们讨论下异常处理的机制:
如果客户端在读取数据流的时候遇到了错误块,怎么办眤?
如果客户端遇到了异常块,那么客户端就会记录下来这个块,并尝试去读取距离这个块最近的一个块,并且不会再去读取这个损坏的块。
同时客户端还会去校验接受到的数据的校验和,若发现一个损坏的块,它就会在客户端试图从别的数据节点中读取一个块的副本之前报告给名称节点。
在之前我们一直提到的hadoop的寻找最近的块或者节点的机制是如何实现呢?
我们都知道。在大数据存储中,限制效率的最主要因素就是带宽。
hadoop将网络看成一棵树,两个节点间的距离是距离它们最近的共同祖先的总和。
对于以下每个场景,可用带宽依次减少:
相同节点中的进程
同一机架上的不同节点
同一数据中心的不同机架上的节点
不同数据中心的节点
发表评论
-
Sort-based Shuffle的设计与实现
2016-03-15 08:49 807原文 http://www.cnblogs.com/hsea ... -
spark的几个重要概念
2015-12-04 14:09 0本节主要记录以下几个概念 一:RDD的五大特点 二:RDD 窄 ... -
spark部署安装调试
2015-12-02 11:28 734本节记录spark下载-->编译-->安装--&g ... -
spark基本概念
2015-11-12 10:45 781记录一下课堂笔记: ... -
hadoop计算能力调度器配置
2015-10-29 10:39 1011问题出现 hadoop默认调度器是FIFO,其原理就是先按照作 ... -
HBase在各大应用中的优化和改进
2015-10-28 14:59 687Facebook之前曾经透露过Facebook的hbase架构 ... -
一篇很好的解决系统问题过程描述文章
2015-09-23 08:40 496在网上看到的一篇解决h ... -
通过GeoHash核心原理来分析hbase rowkey设计
2015-09-08 15:49 3513注:本文是结合hbase ... -
从OpenTsdb来分析rowkey设计
2015-09-06 16:04 4941讨论此问题前,先理解 ... -
HBase中asynchbase的使用方式
2015-08-25 10:32 8187Hbase的原生java 客户端是完全同步的,当你使用原生AP ... -
Mapreduce优化的点滴
2015-07-16 15:18 819注:转载 1. 使用自定义Writable 自带的Text ... -
hadoop 如何自定义类型
2015-07-15 09:37 1235记录一下hadoop 数据类型章节的笔记,以便后期使用,本文是 ... -
napreduce shuffle 过程记录
2015-07-10 11:23 754在我看来 hadoop的核心是mapre ... -
ZooKeeper伪分布式集群安装及使用
2015-02-13 08:29 9161. zookeeper介绍 ZooKeeper是一个为分 ... -
hadoop-mahout 核心算法总结
2015-02-07 10:08 1551其实大家都知道hadoop为我们提供了一个大的框架,真正的 ... -
推荐引擎内部原理--mahout
2015-01-22 11:11 568转载自:https://www.ibm.com/devel ... -
hadoop 动态添加删除节点
2015-01-20 13:39 658转自:http://www.cnblogs.com/rill ... -
hbase hadoop zookeeper
2015-01-19 14:47 0hadoop 部署手册 http://www.iteblo ... -
mapreduce 开发以及部署
2015-01-16 13:56 832前面几篇文章的梳理让我对hadoop新yarn 框架有了一 ... -
hadoop yarn几个问题的记录
2015-01-13 11:48 651本文主要介绍以下几 ...
相关推荐
3. **从HDFS读取文件**:使用`FileSystem`类的`open()`方法可以打开HDFS中的文件,然后通过`FSDataInputStream`读取内容。数据通常是以文本格式存储,如CSV或TSV,便于解析成Java对象。 4. **数据解析与预处理**:...
Hadoop通过利用集群中多个节点的同时工作,大大提高了数据读取的速度。 - **高容错性**:通过冗余备份机制,确保数据的安全性和可用性。 - **可扩展性**:支持动态添加或删除节点,以适应不同规模的数据处理需求。 ...
#### HDFS读取剖析: 1. **发请求**:客户端向NameNode发送读取文件的请求。 2. **返回列表**:NameNode根据文件的位置信息返回一个包含DataNode地址和文件块位置的列表给客户端。 3. **读取**:客户端根据返回的...
3. **文件下载**:用户请求下载时,服务器需要从HDFS读取文件内容,然后通过HTTP响应将数据流回给客户端。这通常涉及设置响应头如Content-Type和Content-Disposition来指定文件类型和建议的文件名。 4. **文件列表...
【Hadoop HDFS运行原理详解】 Hadoop分布式文件系统(HDFS)是基于Google的GFS(Google File System)论文设计实现的一种大规模分布式存储系统。HDFS的主要目标是为大数据处理提供可靠、可扩展和经济高效的存储解决...
《HDFS——Hadoop分布式文件系统深度实践》这本书是针对Hadoop分布式文件系统(HDFS)的详尽指南,旨在帮助读者深入理解HDFS的工作原理、设计思想以及在实际应用中的最佳实践。HDFS是Apache Hadoop项目的核心组件之...
数据读取设计涉及到从HDFS读取数据的客户端行为,包括与NameNode的交互以及从DataNode读取数据的具体流程。而数据写入设计则包括如何将数据安全地写入到多个DataNode中,以及在写入过程中NameNode和DataNode的协作。...
- 它被设计为一次写入,多次读取的模式,不支持频繁的文件修改,这使得HDFS非常适合进行批量数据处理和分析任务,而不是实时或交互式应用。 - HDFS不适用于作为个人云存储服务(如网盘),因为它的设计目标是为了...
Hadoop HDFS(Hadoop Distributed File System)是Apache Hadoop项目的核心组件之一,是一个分布式...理解并熟练掌握HDFS的概念、组成、操作以及其内在的工作原理,对于在大数据环境中进行有效数据管理和分析至关重要。
其中,Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)作为Apache Hadoop项目的核心组件之一,旨在提供高吞吐量的数据访问能力,适用于大规模数据集的存储与处理。 **定义**: HDFS是一种专门为存储...
【压缩包子文件的文件名称列表】:尽管“赚钱项目”看起来与Hadoop或HDFS无关,但考虑到这是一个压缩包,它可能包含其他相关的文档或资源,比如Hadoop项目实施案例、数据分析赚钱策略等。不过,这个文件名没有提供...
【压缩包子文件的文件名称列表】中的"赚钱项目"与Hadoop或HDFS的主题无关,可能是上传时的误放,或者是一个未包含在本次讨论中的其他文件。 **Hadoop HDFS架构详解:** HDFS是Apache Hadoop项目的一部分,是一个...
在动手实验“Oracle HDFS直接连接器”中,我们将会了解如何实现Oracle数据库与Apache Hadoop HDFS(Hadoop分布式文件系统)之间的直接连接,从而能够直接访问存储在HDFS中的数据文件。该实验的软件环境主要由Oracle ...
Mapper阶段从HDFS读取数据,处理后生成中间结果,Reducer阶段再次从HDFS读取这些中间结果并进行聚合,最后将结果写回HDFS。 总之,HDFS的数据读写流程是Hadoop生态系统中的关键环节,理解这一流程对于优化大数据...
《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...
《Hadoop之HDFS介绍》 Hadoop是一个开源的...在实际应用中,HDFS广泛用于日志分析、科学计算、推荐系统等领域,是大数据时代的重要基础设施。了解和掌握HDFS的原理和操作,对于从事大数据工作的专业人士至关重要。
当从本地文件系统或者HDFS读取包含中文的文本文件时,如果没有正确设置文件的字符编码,就可能出现乱码。解决方法是在读取文件时指定正确的编码格式,例如使用`FileInputStream`时配合`InputStreamReader`指定GBK...
当MapReduce任务运行时,它会直接从HDFS中读取数据,处理完成后,结果又会写回HDFS。这种紧密的集成使得Hadoop能够处理各种大数据问题,如日志分析、机器学习、图形分析等。 此外,Hadoop还支持YARN(Yet Another ...
HDFS特别适合一次写入、多次读取的场景,例如大数据分析任务,但不支持频繁的文件修改和低延迟的数据访问。 **1.2 HDFS优缺点** 优点: 1) 高容错性:HDFS通过数据冗余备份实现容错,当某个副本丢失时,系统可以...