`
younglibin
  • 浏览: 1213924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HDFS文件系统源码总结

    博客分类:
  • hdfs
 
阅读更多
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文件系统管理 
 
概念之间的层次关系:

 
 
FSNameSystem 主要类关系图

这个类图可以分成三个部分
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、元数据节点文件夹结构

image

  • VERSION文件是java properties文件,保存了HDFS的版本号。   

    layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。 

    namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。 

    cTime此处为0 

    storageType表示此文件夹中保存的是元数据节点的数据结构。

    namespaceID=1232737062

    cTime=0

    storageType=NAME_NODE

    layoutVersion=-18

     

1.2.2、文件系统命名空间映像文件及修改日志

hadoop01

1.2.3、从元数据节点的目录结构

image

1.2.4、数据节点的目录结构

image

  • 数据节点的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、读文件的过程

image

2.2、写文件的过程

image

  • 大小: 80.6 KB
分享到:
评论

相关推荐

    本地文件上传到HDFS

    - **获取文件系统实例**:使用`FileSystem.get()`方法获取HDFS文件系统的实例。 - **路径检查与创建**:检查目标路径是否存在,若不存在则创建相应的目录结构。 - **文件名提取**:从完整路径中提取出文件名。 - **...

    Hadoop之HDFS源代码分析 pdf

    HDFS的主要功能组件包括HDFS的核心类和接口,体系结构涉及HDFS的整体设计,NameNode是HDFS的核心,负责管理文件系统的命名空间,维护文件系统的文件树及整个HDFS的元数据,而DataNode则负责存储实际的数据。在HDFS...

    淘宝网HDFS元数据的独立服务和独立持久化存储\"分享总结

    在IT行业中,分布式文件系统Hadoop Distributed File System (HDFS)是大数据处理的关键组件,而元数据管理则是HDFS高效运行的核心。这篇分享总结聚焦于淘宝网如何实现HDFS元数据的独立服务和独立持久化存储,这是一...

    hadoop的HDFS

    8. 源码阅读:深入理解HDFS,可以阅读Hadoop源代码,了解其内部工作机制,例如BlockManager如何管理数据块,NameNode如何处理元数据等。 9. 工具使用:Hadoop提供了多种命令行工具,如`hadoop fs`用于交互式操作...

    8、HDFS内存存储策略支持和“冷热温”存储

    HDFS(Hadoop Distributed File System)是Apache Hadoop项目的核心组件,它提供了一个分布式文件系统,能够处理和存储海量数据。在大数据处理场景中,为了优化性能和降低成本,HDFS支持了多种存储策略,包括“冷热...

    kettle5.3连接hdfs、hbase、kettle5.2源码编译

    2. 克隆 Kettle 5.2 的源代码仓库。 3. 使用 Maven 进行编译,通常会执行 `mvn clean install` 命令。 4. 编译过程中可能会遇到依赖问题,根据错误信息解决缺失的依赖。 5. 编译完成后,生成的可执行文件通常位于 `...

    典型分布式文件系统概述(一)

    - **Lustre**:开放源代码的高性能并行文件系统。 - **3.11 Ceph** - **概述**:一个可扩展的对象存储和文件系统。 - **设计理念**:高度可扩展、高性能。 - **体系结构**:基于RADOS(Reliable Autonomic ...

    在HDFS上使用Lucene的SourceCode

    本文将通过代码实例展示如何利用Lucene和Java进行基本的数据索引和搜索,以及如何在HDFS(Hadoop分布式文件系统)上创建和搜索索引。开发环境包括Java 1.6、Eclipse 3.4.2、Lucene 2.4.0和运行在Windows XP SP3上的...

    2022毕业设计,基于 Hadoop 的游戏数据分析系统源码.zip

    1. **主目录**(Hadoop-based-game-user-analysis-system-master):包含了整个系统的源代码、配置文件和其他资源。 2. **源代码**:可能分为数据采集(如使用Flume或Kafka)、数据存储(HDFS)、数据处理...

    制作cramfs根文件系统的步骤

    开源的分布式文件系统如 GlusterFS、Ceph 或 Hadoop Distributed File System (HDFS) 可以跨多台服务器提供存储服务,以提高数据的可靠性和性能。 **EXT2/EXT3 文件系统错误修复** 在 Linux 系统中,EXT2 和 EXT3 ...

    《大数据导论》HDFS的应用.docx

    Hadoop 分布式文件系统(HDFS)是大数据处理的核心组件之一,它为大规模数据处理提供了可靠、可扩展的存储方案。在《大数据导论》中,HDFS的应用通常涉及数据的读取、处理和输出。本实验报告详细介绍了如何在Linux...

    基于hadoop的云盘系统

    这个文件名暗示了源代码仓库可能包含整个云盘系统的源代码,其中可能有以下目录和文件: - `src/main/java`: Java源代码,包括SpringBoot微服务、数据访问对象(DAO)、业务逻辑(Service)以及控制器(Controller...

    Hadoop学习总结和源码分析

    首先,我们从“Hadoop学习总结之一:HDFS简介.doc”开始,HDFS是Hadoop的核心,它是一个高度容错性的分布式文件系统,设计目标是存储大量数据并支持大规模的并行计算。HDFS采用了主从结构,由一个NameNode作为主节点...

    HDFS 通过mapreduce 进行 HBase 导入导出

    HDFS 是 Hadoop 的分布式文件系统,而 HBase 是基于 Hadoop 的一个分布式、列族式的数据库,适用于实时查询大规模数据集。 在大数据处理中,数据的导入导出是常见的操作。HDFS 用于存储大量数据,而 HBase 提供了...

    360 HDFS下载平台介绍\"分享总结

    8. **源码开放**:标签中的“源码”表明,360可能开放了部分或全部的源代码,这为开发者提供了学习和定制的机会,推动了社区的共同进步。 360 HDFS下载平台的出现,不仅提升了360自身的大数据处理能力,也为业界...

    Hadoop_HDFS安装和管理

    HDFS是一个高度可扩展的文件系统,用于存储大量数据,并支持在集群环境中进行数据的分布存储。 #### 二、HDFS安装环境准备 在部署HDFS之前,需要对服务器环境进行一定的准备,确保硬件和软件满足要求。 ##### 2.1 ...

    win7 32bit 的hadoop.dll、winutils.exe、hdfs.dll及对应lib

    `winutils.exe`是Hadoop在Windows上的实用工具程序,它提供了类似于Linux环境下`bin/hadoop`脚本的功能,如设置HADOOP_HOME环境变量、管理HDFS文件系统、启动和停止Hadoop服务等。在32位Windows上,`winutils.exe`是...

    Hadoop从入门到上手企业开发

    039 HDFS文件系统读写流程及HDFS API两种方式读取文件 040 详解HDFS API之FileSystem方式基本操作二 041 讲解分析Configuration和FileSystem类源代码 042 引出HDFS实际应用场景之合并文件和使用getmerge命令并查看...

    Hadoop源代码分析

    通过对Hadoop源代码的深入分析,尤其是HDFS的部分,我们不仅理解了其架构和核心功能,还学习了如何从源代码层面探索和优化分布式文件系统的关键技术。未来的研究方向可聚焦于HDFS的性能优化、数据块管理策略的改进...

Global site tag (gtag.js) - Google Analytics