一. FSDirectory
- 上文Hadoop学习二十二:Hadoop-Hdfs INode源码讲到INode是文件层次结构的反应。那文件层次结构由谁去维护,就是由FSDirectory维护。
- 我把从客户端发起一个操作到最终完成这一操作所经过的类,依次划分为外层-底层。那FSNamesystem算的上底层的东西,FSDirectory就是更底层的东西。
- 所有会导致文件层次结构变化的操作,如addFile delete rename mkdir等,最终都会调用到FSDirectory的代码。
- FSDirectory在完成这些操作后,也会调用FSEditLog记录下这些操作日志。
- FSDirectory依靠成员变量final INodeDirectoryWithQuota rootDir;保存着文件名到数据块的映射关系。
二. FSDirectory 成员变量
final FSNamesystem namesystem; //FSNamesystem对象 final INodeDirectoryWithQuota rootDir; //文件系统的根目录 FSImage fsImage; //fsimage对象 private boolean ready = false; //当系统成功加载FSImage以后,ready会变成true
三. FSDirectory 方法
- void loadFSImage(Collection<File> dataDirs,Collection<File> editsDirs,StartupOption startOpt):调用FSImage的方法(下一篇文章讲)加载目录树结构,完成后将ready设置为true。
- 其它成对方法:可以看到,FSDirectory存在大量的对方法method()和unprotectedMethod()。method()会检查ready的状态,会把这一操作记录到editlog中;unprotectedMethod()不检查ready的状态,不记录日志。unprotectedMethod()会被FSEditlog的loadFSEdits()方法调用,loadFSEdits()作用就是将硬盘上的editlog应用到内存中,所以不需要判断ready状态,也不需要再次写日志。
四. FSDirectory 对方法举例
- INodeFileUnderConstruction addFile(String path...):Add the given filename to the fs.首先会试图在系统中创建到文件的路径,如果文件为/home/hadoop/Hadoop.tar,addFile会调用mkdirs(创建路径为/home/hadoop,这也会涉及到一系列方法),保证文件路径存在,然后创建INodeFileUnderConstruction节点,并把该节点加到目录树中(通过addNode,也是需要调用一系列方法),如果成功,就写操作日志(logOpenFile)。
- INode unprotectedAddFile( String path...):在系统中创建一个目录或文件(非UnderConstruction),如果是文件,还会建立对应的block。
五. FSDirectory 所有方法
相关推荐
### Hadoop学习总结之二:深入理解HDFS读写过程 #### 一、HDFS文件读取流程详解 Hadoop的分布式文件系统(HDFS)是大数据存储与处理的重要基石,其读写机制的设计旨在优化大规模数据集的访问效率与容错性。本文将...
本文将详细解析HDFS的读取和写入过程,基于标题"《Hadoop学习总结之二:HDFS读写过程解析》"和描述中提到的代码分析。 1. **文件的打开** 当客户端想要打开一个HDFS文件时,它会调用`DistributedFileSystem.open`...
总结,Hadoop HDFS源码的学习是一项深入理解大数据存储技术的重要任务。通过源码,我们可以更清晰地看到HDFS是如何在分布式环境下实现高可用性和容错性的,这对于提升开发和运维技能,以及解决实际问题具有重大意义...
在源码中,主要关注`org.apache.hadoop.hdfs.server.namenode`包下的类,如`FSDirectory`和`NameNode`。 - **DataNode**: 存储数据的实际节点,负责数据块的存储和读取。相关源码在`org.apache.hadoop.hdfs.server....
第1章 HDFS 1 1.1 HDFS概述 1 1.1.1 HDFS体系结构 1 1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 ...
### 二、Hadoop文件系统(HDFS) #### 2.1 HDFS主要功能组件 HDFS主要包括NameNode、DataNode和客户端API。NameNode负责元数据管理,DataNode存储数据,客户端API则为用户程序提供与HDFS交互的接口。 #### 2.2 ...
第1章 HDFS HA及解决方案 1.1 HDFS系统架构 1.2 HA定义 1.3 HDFS HA原因分析及应对措施 1.3.1 可靠性 1.3.2 可维护性 1.4 现有HDFS HA解决方案 1.4.1 Hadoop的元数据备份方案 1.4.2 Hadoop的SecondaryNameNode方案 ...
本文将聚焦于Hadoop中的`FSDirectory`类,它是HDFS(Hadoop分布式文件系统)核心组件之一,负责维护文件系统目录树的状态。通过分析其成员变量与方法,我们可以更好地理解HDFS是如何管理文件目录状态、数据块以及...
Hadoop的核心组件包括**Hadoop Distributed File System (HDFS)** 和 **MapReduce**。Hadoop架构主要由以下几个关键部分组成: - **NameNode**: 存储元数据(metadata),如文件系统命名空间(文件名、目录名等)和...
在深入探讨Hadoop源代码分析之前,我们先理解Hadoop的核心组件:HDFS(Hadoop Distributed File System),它是一个分布式文件系统,旨在处理和存储大量数据。本篇分析主要涉及HDFS的操作,如文件重命名、删除、创建...