下图描述了在文件读过程中,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
分享到:
相关推荐
本文将详细介绍如何使用Python解析HDFS文件,并将其内容生成为本地文件,以及相关的插件包安装步骤。 首先,我们需要安装Python的HDFS客户端库,最常用的是`pyarrow`和`hdfs3`。`pyarrow`是Apache Arrow项目的一...
3. **从HDFS读取文件**:使用`FileSystem`类的`open()`方法可以打开HDFS中的文件,然后通过`FSDataInputStream`读取内容。数据通常是以文本格式存储,如CSV或TSV,便于解析成Java对象。 4. **数据解析与预处理**:...
3. **读取HDFS上的数据**:使用SparkSession创建DataFrame并加载HDFS上的数据,例如: ```java SparkSession spark = SparkSession.builder().appName("SparkSQL_HDFS_Java").getOrCreate(); DataFrame df = ...
在使用python做大数据和机器学习处理过程中,首先需要读取hdfs数据,对于常用格式数据一般比较容易读取,parquet略微特殊。从hdfs上使用python获取parquet格式数据的方法...5、读取文件 ##namenode mode: from hdfs3
在进行文件操作时,必须捕获并处理可能抛出的`IOException`,因为它可能会在文件读取、网络通信或权限问题时发生。 6. **其他操作**: 除了上传文件,HDFS API还提供了删除文件、重命名文件、列举目录、检查文件...
ReadAndWritePatterns是读取序列文件,并解析其key和value,然后可视化输出,所谓可视化输出是指不是乱码的输出,具体可以参考http://blog.csdn.net/fansy1990中《hadoop解析序列文件并可视化输出》
3. **图片处理**:项目可能涉及读取、解析和转换图片格式,例如JPEG或PNG,可能还会涉及到图像特征提取或预处理。 4. **数据流处理**:通过Spark Streaming,数据流会被拆分为DStreams(Discretized Streams),...
本文将详细解析HDFS的读取和写入过程,基于标题"《Hadoop学习总结之二:HDFS读写过程解析》"和描述中提到的代码分析。 1. **文件的打开** 当客户端想要打开一个HDFS文件时,它会调用`DistributedFileSystem.open`...
在读取文件时,客户端首先与NameNode通信,获取文件的数据块位置信息,随后直接向DataNode发送读取请求,避免了每次读取都经过NameNode的瓶颈。此外,数据块的多副本机制确保了数据的高可用性和容错性。 在实际读取...
这涉及到URL类的使用,它可以解析HDFS的文件路径,并通过`FsURLStreamHandlerFactory`处理HDFS URL,从而读取文件内容。 总的来说,这个实验旨在让学生熟悉Hadoop生态系统中的基本文件操作,包括上传、追加、覆盖...
### 本地文件上传到HDFS知识点详解 #### 一、Hadoop HDFS简介 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,主要用于存储大量的数据,并且能够提供高吞吐量的数据访问能力,非常适合大规模数据集上的...
《HDFS源码解析——揭示分布式文件系统的内在奥秘》 在大数据时代,Hadoop的HDFS(Hadoop Distributed File System)作为分布式存储系统的重要代表,其高效、可靠的特性为海量数据处理提供了坚实的基础设施。深入...
1. **数据预处理**:HDFS上的文件可能是CSV、JSON或自定义格式,需要先进行解析和转换,使其符合HBase的表结构。这可能涉及到使用MapReduce或者Spark等工具进行数据清洗和转换。 2. **创建HBase表**:在HBase中创建...
《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...
接着,你可以使用`BufferedReader`逐行读取文件内容。 5. **连接HBase**:创建一个`Connection`对象来连接HBase,使用`ConnectionFactory.createConnection(conf)`。这里的`conf`同样是包含HBase配置信息的`...
《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是IT领域的经典之作,专门探讨了Hadoop的核心组件——Hadoop Common和HDFS(Hadoop Distributed File System)的设计理念、架构及其背后的...
第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 元数据...
然后,我们使用`readLine()`方法逐行读取文件内容,并打印出来。注意使用try-with-resources语句,这样可以确保在读取完成后自动关闭流。 接下来,我们讨论如何读取XML文件。Java提供了`javax.xml.parsers`包,包含...