`
Mootools
  • 浏览: 45611 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

解析HDFS读文件

 
阅读更多

下图描述了在文件读过程中,client、NameNode和DataNode三者之间是如何互动的。

 

\">

 

1.  client调用get方法得到HDFS文件系统的一个实例(DistributedFileSystem)。然后调用它的open方法。

 

2.  DistributedFileSystem通过RPC远程调用NameNode决定文件文件的block的位置信息。对于每一个 bolck,NameNode返回block所在的DataNode(包括副本)的地址。DistributedFileSystem返回 FSDataInputStream给client用来读数据。FSDataInputStream封装了DFSInputStream用于管理 NameNode和DataNode的IO。

 

3.  client调用FSDataInputStream的read方法。

 

4.  DFSInputStream保存了block块所在的DataNode的地址信息。DFSInputStream连接第一个block的DataNode,read block数据,传回给client。

 

5.  当第一个block读完,DFSInputStream关掉与这个DataNode的连接。然后开始第二个block。

 

6.  当client读结束,调用FSDataInputStream的close方法。

 

在读的过程中,如果client和一个datanode通讯时出错,他会连接副本所在的datanode。这种client直接连接 datanode读取数据的设计方法使HDFS可以同时相应很多client的同时并发。因为数据流量均匀的分布在所有的datanode 上,NameNode只负责block的位置信息请求。

 

原文:http://www.hadoop.so/hadoop/2012/0808/14.html

 

0
3
分享到:
评论

相关推荐

    python解析hdfs文件和实现方式

    本文将详细介绍如何使用Python解析HDFS文件,并将其内容生成为本地文件,以及相关的插件包安装步骤。 首先,我们需要安装Python的HDFS客户端库,最常用的是`pyarrow`和`hdfs3`。`pyarrow`是Apache Arrow项目的一...

    java 从hadoop hdfs读取文件 进行groupby并显示为条形图

    3. **从HDFS读取文件**:使用`FileSystem`类的`open()`方法可以打开HDFS中的文件,然后通过`FSDataInputStream`读取内容。数据通常是以文本格式存储,如CSV或TSV,便于解析成Java对象。 4. **数据解析与预处理**:...

    SparkSQL HDFS JAVA调用完整实例

    3. **读取HDFS上的数据**:使用SparkSession创建DataFrame并加载HDFS上的数据,例如: ```java SparkSession spark = SparkSession.builder().appName("SparkSQL_HDFS_Java").getOrCreate(); DataFrame df = ...

    python读取hdfs上的parquet文件方式

    在使用python做大数据和机器学习处理过程中,首先需要读取hdfs数据,对于常用格式数据一般比较容易读取,parquet略微特殊。从hdfs上使用python获取parquet格式数据的方法...5、读取文件 ##namenode mode: from hdfs3

    java操作Hadoop源码之HDFS Java API操作-上传文件

    在进行文件操作时,必须捕获并处理可能抛出的`IOException`,因为它可能会在文件读取、网络通信或权限问题时发生。 6. **其他操作**: 除了上传文件,HDFS API还提供了删除文件、重命名文件、列举目录、检查文件...

    读取HDFS序列化文件解析key、value可视化输出

    ReadAndWritePatterns是读取序列文件,并解析其key和value,然后可视化输出,所谓可视化输出是指不是乱码的输出,具体可以参考http://blog.csdn.net/fansy1990中《hadoop解析序列文件并可视化输出》

    基于Spark Streaming将图片以流的方式写入HDFS分布式文件系统.zip

    3. **图片处理**:项目可能涉及读取、解析和转换图片格式,例如JPEG或PNG,可能还会涉及到图像特征提取或预处理。 4. **数据流处理**:通过Spark Streaming,数据流会被拆分为DStreams(Discretized Streams),...

    Hadoop学习总结之二:HDFS读写过程解析.doc

    本文将详细解析HDFS的读取和写入过程,基于标题"《Hadoop学习总结之二:HDFS读写过程解析》"和描述中提到的代码分析。 1. **文件的打开** 当客户端想要打开一个HDFS文件时,它会调用`DistributedFileSystem.open`...

    Hadoop学习总结之二:HDFS读写过程解析

    在读取文件时,客户端首先与NameNode通信,获取文件的数据块位置信息,随后直接向DataNode发送读取请求,避免了每次读取都经过NameNode的瓶颈。此外,数据块的多副本机制确保了数据的高可用性和容错性。 在实际读取...

    数据科学导论实验报告 实验2:熟悉常用的HDFS操作

    这涉及到URL类的使用,它可以解析HDFS的文件路径,并通过`FsURLStreamHandlerFactory`处理HDFS URL,从而读取文件内容。 总的来说,这个实验旨在让学生熟悉Hadoop生态系统中的基本文件操作,包括上传、追加、覆盖...

    本地文件上传到HDFS

    ### 本地文件上传到HDFS知识点详解 #### 一、Hadoop HDFS简介 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,主要用于存储大量的数据,并且能够提供高吞吐量的数据访问能力,非常适合大规模数据集上的...

    HDFS源码解析

    《HDFS源码解析——揭示分布式文件系统的内在奥秘》 在大数据时代,Hadoop的HDFS(Hadoop Distributed File System)作为分布式存储系统的重要代表,其高效、可靠的特性为海量数据处理提供了坚实的基础设施。深入...

    将hdfs上的文件导入hbase的源代码

    1. **数据预处理**:HDFS上的文件可能是CSV、JSON或自定义格式,需要先进行解析和转换,使其符合HBase的表结构。这可能涉及到使用MapReduce或者Spark等工具进行数据清洗和转换。 2. **创建HBase表**:在HBase中创建...

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理.pdf

    《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...

    JAVA将HDFS中的文件导入HBase

    接着,你可以使用`BufferedReader`逐行读取文件内容。 5. **连接HBase**:创建一个`Connection`对象来连接HBase,使用`ConnectionFactory.createConnection(conf)`。这里的`conf`同样是包含HBase配置信息的`...

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理

    《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是IT领域的经典之作,专门探讨了Hadoop的核心组件——Hadoop Common和HDFS(Hadoop Distributed File System)的设计理念、架构及其背后的...

    高可用性的HDFS:Hadoop分布式文件系统深度实践

    第2章 HDFS元数据解析 2.1 概述 2.2 内存元数据结构 2.2.1 INode 2.2.2 Block 2.2.3 BlockInfo和DatanodeDescriptor 2.2.4 小结 2.2.5 代码分析——元数据结构 2.3 磁盘元数据文件 2.4 Format情景分析 2.5 元数据...

    用java读取txt文件和xml文件

    然后,我们使用`readLine()`方法逐行读取文件内容,并打印出来。注意使用try-with-resources语句,这样可以确保在读取完成后自动关闭流。 接下来,我们讨论如何读取XML文件。Java提供了`javax.xml.parsers`包,包含...

Global site tag (gtag.js) - Google Analytics