一. FSEditLog类图
二. FSEditLog
- FSEditLog提供了对editlog文件的操作方法。简单的类,方法一个个看。
- editStreams保存着一个fsimage下所有的editlog文件对应的输出流EditLogOutputStream。
三. FSEditLog方法
- void open():Create empty edit log files.Initialize the output stream for logging.当open方法被都调用时,会把fsimage下所有的editlog文件流加到editStreams中。
public synchronized void open() throws IOException { Iterator<StorageDirectory> it = fsimage.dirIterator(NameNodeDirType.EDITS); while (it.hasNext()) { StorageDirectory sd = it.next(); File eFile = getEditFile(sd); EditLogOutputStream eStream = new EditLogFileOutputStream(eFile); editStreams.add(eStream); }
- int loadFSEdits(EditLogInputStream edits,MetaRecoveryContext recovery):Load an edit log, and apply the changes to the in-memory structure.加载硬盘上的editlog,应用到内存文件树中。从硬盘中读取editlog后,根据每个opcode来构建文件树。
- void logEdit(byte op, Writable ... writables):从editStreams里取出所有输出流,写editlog到硬盘。
- log*(...):对应每个操作日志。
- void rollEditLog():Closes the current edit log and opens edits.new. 对应着http://zy19982004.iteye.com/admin/blogs/1870624三.2
- void purgeEditLog():Removes the old edit log and renamed edits.new as edits. Reopens the edits file. 对应着http://zy19982004.iteye.com/admin/blogs/1870624三.6的Roll edit.new
四. log*记录哪些信息
- logOpenFile(OP_ADD):申请lease path(路径)/replication(副本数,文本形式)/modificationTime(修改时间,文本形式)/accessTime(访问时间,文本形式)/preferredBlockSize(块大小,文本形式)/BlockInfo[](增强的数据块信息,数组)/permissionStatus(访问控制信息)/clientName(客户名)/clientMachine(客户机器名)
- logCloseFile(OP_CLOSE):归还lease path/replication/modificationTime/accessTime/preferredBlockSize/BlockInfo[]/permissionStatus
- logMkDir(OP_MKDIR):创建目录 path/modificationTime/accessTime/permissionStatus
- logRename(OP_RENAME):改文件名 src(原文件名)/dst(新文件名)/timestamp(时间戳)
- logSetReplication(OP_SET_REPLICATION):更改副本数 src/replication
- logSetQuota(OP_SET_QUOTA):设置空间额度 path/nsQuota(文件空间额度)/dsQuota(磁盘空间额度)
- logSetPermissions(OP_SET_PERMISSIONS):设置文件权限位 src/permissionStatus
- logSetOwner(OP_SET_OWNER):设置文件组和主 src/username(所有者)/groupname(所在组)
- logDelete(OP_DELETE):删除文件 src/timestamp
- logGenerationStamp(OP_SET_GENSTAMP):文件版本序列号 genstamp(序列号)
- logTimes(OP_TIMES):更改文件更新/访问时间 src/modificationTime/accessTime
相关推荐
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...
3. `hadoop-lzo-0.4.21-SNAPSHOT-sources.jar`:这个文件包含了Hadoop-LZO的源代码,对于开发者来说非常有用,因为可以直接查看源码来理解其内部工作原理,也可以方便地进行二次开发或调试。 集成Hadoop-LZO到你的...
**HDFS源码分析** 1. **NameNode与DataNode**:HDFS的核心组件包括NameNode和DataNode。NameNode作为元数据管理节点,存储文件系统的命名空间信息和文件的块映射信息。DataNode则是数据存储节点,负责存储实际的...
Hadoop 2.X HDFS源码剖析-高清-完整目录-2016年3月,分享给所有需要的人!
在Java编程环境中,Hadoop分布式文件系统(HDFS)提供了丰富的Java API,使得开发者能够方便地与HDFS进行交互,包括文件的上传、下载、读写等操作。本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 ...
《深入剖析Hadoop 2.8.1源码:分布式系统的智慧结晶》 Hadoop,作为开源的大数据处理框架,自2006年诞生以来,一直是大数据领域的重要支柱。其2.8.1版本是Hadoop发展的一个关键节点,为用户提供了更稳定、高效的...
接下来,“Hadoop学习总结之二:HDFS读写过程解析.doc”详细解释了HDFS的数据读写流程。在写入数据时,客户端首先与NameNode通信获取数据块位置,然后将数据分块并发送到各个DataNode。在读取数据时,客户端同样先...
hadoop源码2.2.0 Apache Hadoop 2.2.0 is the GA release of Apache Hadoop 2.x. Users are encouraged to immediately move to 2.2.0 since this release is significantly more stable and is guaranteed to ...
1. **数据读写**:Flink通过Hadoop的InputFormat和OutputFormat接口,可以读取和写入Hadoop支持的各种数据源,如HDFS、HBase等。这使得Flink可以方便地访问Hadoop生态系统中的存储系统,进行大规模的数据处理。 2. ...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。这两个部分是Hadoop的核心基石,为大数据处理提供了基础架构。这里我们将深入探讨...
这个hadoop-3.1.3.tar.gz文件是一个包含了Hadoop 3.1.3版本的源码压缩包,对于理解Hadoop的工作原理、进行二次开发或者定制化配置来说,研究源码是非常重要的。 首先,Hadoop的核心组件包括HDFS(Hadoop ...
标题中的“hadoop-common-2.6.0-bin-master”指的是Hadoop Common的2.6.0版本的源码编译后的二进制主目录,这个目录包含了运行Hadoop所需的各种基础工具和库。 在Windows 10环境下,由于操作系统本身的特性和Linux...
标题 "hdfs-over-ftp-hadoop-0.20.0.rar" 提示我们关注的是一个关于将HDFS(Hadoop Distributed File System)与FTP(File Transfer Protocol)整合的项目,特别适用于版本0.20.0的Hadoop。这个项目可能提供了在...
总结来说,Hadoop 2.5.2源码提供了一个深入学习和研究分布式计算的机会。通过分析源码,开发者不仅能理解Hadoop的内部工作机制,还能根据实际需求进行定制和优化,提升大数据处理的效率和可靠性。无论是对Hadoop感...
编译hadoophadoop-3.2.2-src的源码
通过深入学习这些源码,你可以掌握Hadoop的内部工作原理,进一步优化大数据处理流程,提升集群效率,或者针对特定场景开发自定义功能。此外,理解源码也有助于解决实际操作中遇到的问题,如性能瓶颈、数据丢失等。
hadoop-common-2.6.0-bin-master目录包含了运行Hadoop所需的所有二进制文件和脚本,包括配置文件、可执行程序和库。安装时,你需要将这些文件解压到合适的目录,并根据你的环境配置相应的环境变量,如HADOOP_HOME和...