HDFS 数据流:
1.文件读取:
客户端通过调用FileSystem 对象的open()方法来打开希望读取的文件,对于hdfs来说,这个对象是分布式文件系统的一个实例。
DistributedFileSystem 通过rpc来调用namenode,以确定文件起始块的位置,对于每一个块,namenode返回存有该块副本的
datanode地址。datanode根据他们与客户端的距离来排序。
DistributedFileSystem 类返回一个FSDataInputStream 对象给客户端并读取数据,FSDataInputStream 类转而封装
DFSInputStream 类,DFSInputStream 管理datanode 与namenode的I/O
客户端对这个输入流调用read(),存着datanode文件起始块的DFSInputStream 随即连接距离最近的datanode,反复对数据流
read()方法,可将数据从datanode 传输到客户端,到达块的末端时,DFSInputStream 会关闭与该datanode的连接。
2.文件的写入:
DistributedFileSystem 对象的 create()来创建文件,DistributedFileSystem 对namenode RPC 调用,在文件系统命名空间中
创建一个文件,namenode则执行各种检查。通过则创建文件,DistributedFileSystem 给客户端返回一个FSDataOutputStream 对象。
FSDataOutputStream 封装了DFSoutputStream 来实现datanode之间及datanode与namenode的数据交互。
客户端写入数据时,DFSoutputStream 将数据拆分成一个个的数据包,数据包有指定的大小,写入内部队列,成为数据对列,
DataStream处理数据队列,它的责任是根据datanode列表来要求namenode分配适合的新快来存储数据备份,这一组datanode组成 一个管线,同时DFSoutputStream 也维护这一个内部队列,知道datanode返回确认存储的信息才删除内部队列
3.复本的布局
一个机架内的随机节点A
与A不同的机架的随机节点B
与B同一机架的另一不同节点
4.文件一致性
HDFS 提供一个方法来强制所有的缓存与数据节点同步,对FSDataOutputStream 调用sync()方法,sync()返回成功后则所有reader
可见
5.dictcp 并行复制
应用在两个集群见传输数据(版本一样,保持rpc版本一致)
bin/hadoop distcp hdfs://namenode1/sourcefile hdfs://namenode2/distfile
可选择override 及 update 属性
6.hadoop存档
bin/hadoop archiveName files.har /my/files my
将 /my/files 所有文件存档为 file.har 存储到 my 文件夹下
bin/hadoop fs -lsr har://my/files.har
……………………
分享到:
相关推荐
### 大数据实验二-HDFS编程实践 #### 实验内容概览 本次实验的主要目标是通过对HDFS(Hadoop Distributed File System)的操作实践,加深学生对HDFS在Hadoop架构中的作用及其基本操作的理解。实验内容包括两大部分...
《大数据HDFS二次开发》是针对Hadoop分布式文件系统(HDFS)进行深入开发的指南,主要面向需要在海量数据处理场景下对HDFS进行定制化开发的IT专业...通过深入学习和实践,可以有效地利用HDFS解决大数据存储和处理的问题。
实验二:“熟悉常用的HDFS操作”旨在帮助学习者深入理解Hadoop分布式文件系统(HDFS)在大数据处理中的核心地位,以及如何通过Shell命令和Java API进行高效操作。HDFS在Hadoop架构中扮演着存储大数据的核心角色,为...
### Hadoop学习总结之二:深入理解HDFS读写过程 #### 一、HDFS文件读取流程详解 Hadoop的分布式文件系统(HDFS)是大数据存储与处理的重要基石,其读写机制的设计旨在优化大规模数据集的访问效率与容错性。本文将...
适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码
二、HDFS的文件上传 1. 使用hadoop fs命令行工具:在命令行中,你可以使用`hadoop fs -put`命令将本地文件系统中的文件上传到HDFS。例如,`hadoop fs -put localfile hdfs://namenode:port/remote/path`将把`local...
《基于HDFS的二级索引kvStore:深入理解与应用》 在当今大数据时代,高效的数据存储和检索是人工智能(AI)领域不可或缺的关键技术。Hadoop分布式文件系统(HDFS)作为开源大数据处理框架Hadoop的核心组件,为大...
本文将详细解析HDFS的读取和写入过程,基于标题"《Hadoop学习总结之二:HDFS读写过程解析》"和描述中提到的代码分析。 1. **文件的打开** 当客户端想要打开一个HDFS文件时,它会调用`DistributedFileSystem.open`...
2. "hdfs-over-ftp-hadoop2.tar.gz":这可能是一个针对Hadoop 2.x版本的压缩包,包含了所有必要的二进制文件、配置示例、脚本等,用于在运行Hadoop 2.x集群的环境中部署hdfs-over-ftp服务。 3. "hdfs-over-ftp-...
通过对HDFS配置文件的学习,我们可以了解到HDFS的核心配置是如何工作的,这对于构建和维护一个高效、可靠的HDFS集群至关重要。理解这些配置的意义和作用可以帮助我们在实际部署和使用HDFS时更好地进行调优和问题排查...
二是尽可能地将副本分布在不同的节点上,提高读取效率。 2.4、NameNode的角色 NameNode作为HDFS的中心管理节点,负责文件系统的命名空间管理和数据块映射信息的存储。它维护着文件系统的目录树,以及文件的元数据...
在本实验中,我们主要关注的是对Hadoop分布式文件系统(HDFS)的熟悉和操作。HDFS是Hadoop的核心组件之一,它...通过这样的实践,学习者可以更好地理解和掌握Hadoop HDFS的使用,为后续的数据科学项目打下坚实的基础。
#### 二、HDFS文件写入流程详解 HDFS的文件写入流程主要包括以下步骤: 1. **客户端发起请求**:客户端向NameNode发起请求,请求上传文件。此时,NameNode会检查目标文件是否已存在,以及其父目录是否存在。 2. *...
通过这一实验,我们能够学习到如何配置和使用Oracle HDFS直接连接器进行数据的直接访问和操作。 实验1:直接访问单个HDFS文件 实验1的步骤涉及到配置环境、创建外部表、操作Hadoop文件系统以及检查数据库访问结果:...
二、搭建环境概览 1. 硬件环境 大数据平台搭建需要满足一定的硬件配置要求,包括服务器、存储设备、网络设备等。服务器需要配置高性能的CPU、内存和存储空间,以满足大数据处理的需求。存储设备需要选择高性能的...
hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
对于深度运维和二次开发者来说,理解HDFS的源码至关重要。 HDFS的设计灵感来源于Google的GFS(Google File System),它将大型文件分割成块,并将这些块分布在多台服务器上,从而实现数据的高可用性和容错性。HDFS...
这份压缩包文件包含了一系列关于大数据技术的PPT和PDF文档,主要聚焦于Spark、HBase、HDFS的二次开发以及相关的技术,如Hive、Kafka、Solr和MapReduce等。以下是这些资源中涉及的主要知识点: 1. **Spark二次开发**...
#### 二、Python操作HDFS的基本步骤 1. **导入必要的库**:首先需要导入`hdfs`库以及`json`库,用于序列化JSON数据。 ```python from hdfs import Client import json ``` 2. **连接HDFS**:使用`Client`类来...
通过个性化的开发,不仅可以学习基本操作,还能加深对Hadoop生态的理解。 四、开发过程中的注意事项 1. 环境配置:确保所有软件版本兼容,避免因版本不匹配导致的问题。 2. 错误处理:在编程时要处理可能出现的...