NameNode节点是就是HDFS的大脑。想了解HDFS文件系统,必须了解大脑结构。 咱们就从NameNode节点开始。NameNode类中,关于HDFS文件系统的存储和管理都交给了FSNamesystem负责。下面介绍一下FSNamesystem的逻辑组成和类图。
FSNameSystem层次结构
INode: 它用来存放文件及目录的基本信息:名称,父节点、修改时间,访问时间以及UGI信息等。
INodeFile: 继承自INode,除INode信息外,还有组成这个文件的Blocks列表,重复因子,Block大小
INodeDirectory:继承自INode,此外还有一个INode列表来组成文件或目录树结构
Block(BlockInfo):组成文件的物理存储,有BlockId,size ,以及时间戳
BlocksMap: 保存数据块到INode和DataNode的映射关系
FSDirectory:保存文件树结构,HDFS整个文件系统是通过FSDirectory来管理
FSImage:保存的是文件系统的目录树
FSEditlog: 文件树上的操作日志
FSNamesystem: HDFS文件系统管理
INodeFile: 继承自INode,除INode信息外,还有组成这个文件的Blocks列表,重复因子,Block大小
INodeDirectory:继承自INode,此外还有一个INode列表来组成文件或目录树结构
Block(BlockInfo):组成文件的物理存储,有BlockId,size ,以及时间戳
BlocksMap: 保存数据块到INode和DataNode的映射关系
FSDirectory:保存文件树结构,HDFS整个文件系统是通过FSDirectory来管理
FSImage:保存的是文件系统的目录树
FSEditlog: 文件树上的操作日志
FSNamesystem: HDFS文件系统管理
概念之间的层次关系:
FSNameSystem 主要类关系图
这个类图可以分成三个部分
Bock相关的部分(BlocksMap & BlockInof & Block)
INode相关的部分(INode & INodeDirectory & INodeFile & INodeDirectoryWithQuota)
FSImage & FSEditLog (Storage & StorageInfo)
其中
BlockInfo是Block的加强类,增加了INodeFile的引用和DataNode列表
INodeFirectoryWithQuota 是INodeDirectory的增强类,增加了Quota限制功能
Bock相关的部分(BlocksMap & BlockInof & Block)
INode相关的部分(INode & INodeDirectory & INodeFile & INodeDirectoryWithQuota)
FSImage & FSEditLog (Storage & StorageInfo)
其中
BlockInfo是Block的加强类,增加了INodeFile的引用和DataNode列表
INodeFirectoryWithQuota 是INodeDirectory的增强类,增加了Quota限制功能
从层次关系图和类图中,可以看出FSNamesystem中各数据结构之间的关系。了解FSNamesystem, 那么HDFS的文件系统就了解了90%。
一下为其他重要信息说明:
1.2.1、元数据节点文件夹结构
-
VERSION文件是java properties文件,保存了HDFS的版本号。
layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。
namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。
cTime此处为0
storageType表示此文件夹中保存的是元数据节点的数据结构。
namespaceID=1232737062
cTime=0
storageType=NAME_NODE
layoutVersion=-18
1.2.2、文件系统命名空间映像文件及修改日志
1.2.3、从元数据节点的目录结构
1.2.4、数据节点的目录结构
-
数据节点的VERSION文件格式如下:
namespaceID=1232737062
storageID=DS-1640411682-127.0.1.1-50010-1254997319480
cTime=0
storageType=DATA_NODE
layoutVersion=-18
-
blk_<id>保存的是HDFS的数据块,其中保存了具体的二进制数据。
-
blk_<id>.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum
-
当一个目录中的数据块到达一定数量的时候,则创建子文件夹来保存数据块及数据块属性信息。
二、数据流(data flow)2.1、读文件的过程
2.2、写文件的过程
相关推荐
- **获取文件系统实例**:使用`FileSystem.get()`方法获取HDFS文件系统的实例。 - **路径检查与创建**:检查目标路径是否存在,若不存在则创建相应的目录结构。 - **文件名提取**:从完整路径中提取出文件名。 - **...
HDFS的主要功能组件包括HDFS的核心类和接口,体系结构涉及HDFS的整体设计,NameNode是HDFS的核心,负责管理文件系统的命名空间,维护文件系统的文件树及整个HDFS的元数据,而DataNode则负责存储实际的数据。在HDFS...
在IT行业中,分布式文件系统Hadoop Distributed File System (HDFS)是大数据处理的关键组件,而元数据管理则是HDFS高效运行的核心。这篇分享总结聚焦于淘宝网如何实现HDFS元数据的独立服务和独立持久化存储,这是一...
8. 源码阅读:深入理解HDFS,可以阅读Hadoop源代码,了解其内部工作机制,例如BlockManager如何管理数据块,NameNode如何处理元数据等。 9. 工具使用:Hadoop提供了多种命令行工具,如`hadoop fs`用于交互式操作...
HDFS(Hadoop Distributed File System)是Apache Hadoop项目的核心组件,它提供了一个分布式文件系统,能够处理和存储海量数据。在大数据处理场景中,为了优化性能和降低成本,HDFS支持了多种存储策略,包括“冷热...
2. 克隆 Kettle 5.2 的源代码仓库。 3. 使用 Maven 进行编译,通常会执行 `mvn clean install` 命令。 4. 编译过程中可能会遇到依赖问题,根据错误信息解决缺失的依赖。 5. 编译完成后,生成的可执行文件通常位于 `...
- **Lustre**:开放源代码的高性能并行文件系统。 - **3.11 Ceph** - **概述**:一个可扩展的对象存储和文件系统。 - **设计理念**:高度可扩展、高性能。 - **体系结构**:基于RADOS(Reliable Autonomic ...
本文将通过代码实例展示如何利用Lucene和Java进行基本的数据索引和搜索,以及如何在HDFS(Hadoop分布式文件系统)上创建和搜索索引。开发环境包括Java 1.6、Eclipse 3.4.2、Lucene 2.4.0和运行在Windows XP SP3上的...
1. **主目录**(Hadoop-based-game-user-analysis-system-master):包含了整个系统的源代码、配置文件和其他资源。 2. **源代码**:可能分为数据采集(如使用Flume或Kafka)、数据存储(HDFS)、数据处理...
开源的分布式文件系统如 GlusterFS、Ceph 或 Hadoop Distributed File System (HDFS) 可以跨多台服务器提供存储服务,以提高数据的可靠性和性能。 **EXT2/EXT3 文件系统错误修复** 在 Linux 系统中,EXT2 和 EXT3 ...
Hadoop 分布式文件系统(HDFS)是大数据处理的核心组件之一,它为大规模数据处理提供了可靠、可扩展的存储方案。在《大数据导论》中,HDFS的应用通常涉及数据的读取、处理和输出。本实验报告详细介绍了如何在Linux...
这个文件名暗示了源代码仓库可能包含整个云盘系统的源代码,其中可能有以下目录和文件: - `src/main/java`: Java源代码,包括SpringBoot微服务、数据访问对象(DAO)、业务逻辑(Service)以及控制器(Controller...
首先,我们从“Hadoop学习总结之一:HDFS简介.doc”开始,HDFS是Hadoop的核心,它是一个高度容错性的分布式文件系统,设计目标是存储大量数据并支持大规模的并行计算。HDFS采用了主从结构,由一个NameNode作为主节点...
HDFS 是 Hadoop 的分布式文件系统,而 HBase 是基于 Hadoop 的一个分布式、列族式的数据库,适用于实时查询大规模数据集。 在大数据处理中,数据的导入导出是常见的操作。HDFS 用于存储大量数据,而 HBase 提供了...
8. **源码开放**:标签中的“源码”表明,360可能开放了部分或全部的源代码,这为开发者提供了学习和定制的机会,推动了社区的共同进步。 360 HDFS下载平台的出现,不仅提升了360自身的大数据处理能力,也为业界...
HDFS是一个高度可扩展的文件系统,用于存储大量数据,并支持在集群环境中进行数据的分布存储。 #### 二、HDFS安装环境准备 在部署HDFS之前,需要对服务器环境进行一定的准备,确保硬件和软件满足要求。 ##### 2.1 ...
`winutils.exe`是Hadoop在Windows上的实用工具程序,它提供了类似于Linux环境下`bin/hadoop`脚本的功能,如设置HADOOP_HOME环境变量、管理HDFS文件系统、启动和停止Hadoop服务等。在32位Windows上,`winutils.exe`是...
039 HDFS文件系统读写流程及HDFS API两种方式读取文件 040 详解HDFS API之FileSystem方式基本操作二 041 讲解分析Configuration和FileSystem类源代码 042 引出HDFS实际应用场景之合并文件和使用getmerge命令并查看...
通过对Hadoop源代码的深入分析,尤其是HDFS的部分,我们不仅理解了其架构和核心功能,还学习了如何从源代码层面探索和优化分布式文件系统的关键技术。未来的研究方向可聚焦于HDFS的性能优化、数据块管理策略的改进...