一. 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 所有方法
相关推荐
赠送jar包:hadoop-hdfs-client-2.9.1.jar 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-client-2.9.1-javadoc-...
赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...
赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...
赠送jar包:hadoop-hdfs-client-2.9.1.jar; 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-client-2.9.1.pom;...
赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...
赠送jar包:hadoop-hdfs-2.9.1.jar 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-2.9.1-javadoc-API文档-中文(简体)版.zip 对应...
赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...
赠送jar包:hadoop-hdfs-2.5.1.jar; 赠送原API文档:hadoop-hdfs-2.5.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.5.1.pom; 包含翻译后的API文档:hadoop...
赠送jar包:hadoop-hdfs-2.5.1.jar; 赠送原API文档:hadoop-hdfs-2.5.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.5.1.pom; 包含翻译后的API文档:hadoop...
赠送jar包:hadoop-hdfs-2.9.1.jar; 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.9.1.pom; 包含翻译后的API文档:hadoop...
hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar hadoop-yarn-client-3.1.1.jar hadoop-client-api-3.1.1.jar hadoop-hdfs-client-3.1.1.jar hadoop-mapreduce-client-jobclient...
Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码 Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码 Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码 Hadoop 3.x(HDFS)----【HDFS 的 API 操作】--...
hadoop-hdfs-2.4.1.jar
赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...
hadoop-hdfs-2.7.3搭建flume1.7需要用到的包,还有几个包也有提供
赠送jar包:hadoop-yarn-api-2.5.1.jar; 赠送原API文档:hadoop-yarn-api-2.5.1-javadoc.jar; 赠送源代码:hadoop-yarn-api-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-yarn-api-2.5.1.pom; 包含翻译后...
Hadoop学习总结之四:Map-Reduce的过程解析
二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 1:hdfs常见命令: (1)查看帮助:hdfs dfs -help (2)查看当前目录信息:hdfs dfs -ls / (3)创建文件夹:hdfs dfs ...
flume 想要将数据输出到hdfs,必须要有hadoop相关jar包。本资源是hadoop 2.7.7版本
hadoop-hdfs-2.2.0.jar 点击下载资源即表示您确认该资源不违反资源分享的使用条款