本文转载自: http://abloz.com/2013/01/08/hadoop-1-0-4-fsimage-file-format.html
fsimage文件存放在NameNode中,保存HDFS中文件的meta信息。fsimage和edits 文件格式是一样的。都是二进制存储。具有文件头,目录信息,文件信息。本文分析一下fsimage文件的格式。不同版本的fsimage文件格式会略有差异。
我的hdfs的一个目录和一个文件信息如下:
目录信息
drwxr-xr-x - zhouhh supergroup 0 2012-12-25 18:37 /hbase
文件信息
-rw-r–r– 2 zhouhh supergroup 1381 2012-09-26 14:03 /user/zhouhh/README.txt
fsimage文件描述:
一、首先是一个image head,其中包含:
1.imgVersion(int):当前image的版本信息
2.namespaceID(int):用来确保别的HDFS instance中的datanode不会误连上当前NN。
3.numFiles(long):整个文件系统中包含有多少文件和目录
4.genStamp(long):生成该image时的时间戳信息。
文件头的imgVersion,namespaceID在新版的fsImage中准备移除。
文件头,顺序格式
名称 | imgVersion
(int) |
namespaceID
(int) |
numFiles
(long) |
genstamp
(long) |
值举例 | ffff ffe0 | 4e0a 6aed | 0000 0000 0000 0046 | 0000 0000 0000 044f
(Thu Jan 01 08:00:01 CST 1970) |
二、目录
接下来便是目录和文件的元数据信息
而且紧跟文件头的是一个无名目录,即目录名称长度为0的根目录。
目录包含以下信息:
1.namelen(short):该目录的路径长度
2.Name(bytes): 该目录的路径,如”/user/zhouhh/data”
3.replications(short):副本数,目录为0
4.mtime(long):该目录的修改时间的时间戳信息
5.atime(long):该目录的访问时间的时间戳信息
6.blocksize(long):目录的blocksize都为0
7.numBlocks(int):实际有多少个文件块,目录的该值都为-1,即ffff ffff表示目录
8.nsQuota(long):namespace Quota值,若没加Quota限制则为-1
9.dsQuota(long):disk Quota值,若没加限制则也为-1
10.username(String):该目录的所属用户名,前面有个可变长度的长度描述,最长为int
11.group(String):该目录的所属组,前面有个可变长度的长度描述,最长为int
12.permission(short):该目录的权限信息,如644等,和POSIX权限保持一致。
目录,按顺序格式
名称 | nameLen
(short) |
name
(bytes) |
Replication
(short) |
ModificationTime
(long) |
access time
(long) |
值举例 | 0006 | 2f 6862 6173 65(/hbase) | 0000 | 00 0001 3c0a df04 30
(“Sat Jan 05 21:20:53 CST 2013″) |
0000 0000 0000 0000 |
名称 | preferred block size
(long) |
Blocks
(int) |
NsQuota
(long) |
DsQuota
(long) |
值举例 | 0000 0000 0000 0000 | ffff ffff | ffff ffff ffff ffff | ffff ffff ffff ffff |
名称 | UsernameLen(var) | Username
(bytes)
|
Groupname Len(var) | Groupname
(bytes) |
Permission
(short) |
值举例 | 06 | 7a68 6f75 6868
(zhouhh) |
0a | 7375 7065 7267 726f 7570
(supergroup) |
01ed |
三、若从fsimage中读到的item是一个文件,则还会额外包含如下信息:
1.namelen(short):该文件的路径长度
2.Name(bytes): 该文件的路径,如”/user/zhouhh/README.txt”
3.replications(short):副本数,为dfs.replication配置数目,缺省为3
4.mtime(long):该文件的修改时间戳信息
5.atime(long):该文件的访问时间戳信息
6.blocksize(long):文件的blocksize,由dfs.block.size配置,缺省67108864,即0×4000000
7.numBlocks(int):实际有多少个文件块,文件的该值都>=1,-1表示目录
8.blockid(long):属于该文件的block的blockid,
9.numBytes(long):该block的大小
10.genStamp(long):该block的时间戳
11.username(String):该文件的所属用户名,前面有个可变长度的长度描述,最长为int
12.group(String):该文件的所属组,前面有个可变长度的长度描述,最长为int
13.permission(short):该文件的permission信息,如644等,和POSIX权限保持一致。
其中7,8,9三个部分是可以循环的,因为一个文件可以存在于多个block。文件没有配额信息。
文件,按顺序格式
我配的dfs.replication为2
名称 | nameLen
(short) |
name
(bytes) |
Replication
(short) |
ModificationTime
(long) |
access time
(long) |
值举例 | 0017 | 2f75 7365 722f 7a68 6f75 6868 2f52 4541 444d 452e 7478 74 (/user/zhouhh/README.txt) | 0002 | 00 0001 3a01 2c3f 78 | 00 0001 3bcb aba6 ca |
名称 | preferred block size
(long) |
Blocklen
(int) |
值举例 | 00 0000 0004 0000 00 | 0000 0001 |
Block 数据,循环 Blocklen次数
名称 | blockId(long) | numBytes(long) | generationStamp(long) |
值举例 | 00 0200 0001 3a01 2c | 00 0001 3a01 2c3f 78 | 00 0001 3bcb aba6 ca |
名称 | Usernamlen(var) | Username
(bytes)
|
Groupnamelen(var) | Groupname
(bytes) |
Permission
(short) |
值举例 | 06 | 7a68 6f75 6868
(zhouhh) |
0a | 7375 7065 7267 726f 7570
(supergroup) |
01 a4 |
一个fsimage 16进制文件的一部分:
0000000: ffff ffe0 4e0a 6aed 0000 0000 0000 0046 ....N.j........F 0000010: 0000 0000 0000 044f 0000 0000 0000 013c .......O.......< 0000020: 0adf 0430 0000 0000 0000 0000 0000 0000 ...0............ 0000030: 0000 0000 ffff ffff 0000 0000 7fff ffff ................ 0000040: ffff ffff ffff ffff 067a 686f 7568 680a .........zhouhh. 0000050: 7375 7065 7267 726f 7570 01ed 0005 2f64 supergroup..../d 0000060: 6174 6100 0000 0001 3c08 82c4 7e00 0000 ata.....
其中版本-32的值打印如下:
>>> vs=-32 >>> print "0x%08x"%(vs&0xffffffff) 0xffffffe0 public interface FSConstants { public static int MAX_PATH_LENGTH = 8000; public static final int LAYOUT_VERSION = -32; }
相关推荐
而Hadoop 1.0.4版本是Hadoop早期的一个稳定版本,它提供了基本的MapReduce编程模型和HDFS(Hadoop Distributed File System)分布式文件系统。Eclipse插件则是为了帮助开发人员在Eclipse集成开发环境中更方便地开发...
Hadoop 1.0.4 Eclipse Plugin 插件是针对Hadoop 1.x版本的一个集成开发工具,旨在方便开发者在Eclipse环境中进行Hadoop相关的Java应用程序开发和调试。Hadoop是一个开源的分布式计算框架,主要由Apache基金会维护,...
Hadoop 1.0.4 API文档 个人制作,难免可能有些格式问题,敬请谅解 欢迎大家来下载
hadoop1.0.4.chm 帮助文档英文版 其实做hadoop需要英文过关嘀,一心想找中文版的朋友还是好好考虑一下提升自己的英文水平吧
1. **Hadoop Eclipse插件安装**:首先,需要下载与Hadoop版本相匹配的Eclipse插件,如压缩包子文件`hadoop-eclipse-plugin-1.0.4`。插件通常以JAR格式提供,可以通过Eclipse的“Install New Software”功能进行导入...
Hadoop 1.0.4在Eclipse Juno下的插件
是我自己编译的hadoop-1.0.4的eclipse插件,在eclipse-sdk-3.7.1上适用。在其他eclipse版本上应该也没有问题
在本文中,我们将详细介绍如何...总的来说,安装Hadoop 1.0.4的伪分布式模式需要关注安装路径、配置文件的正确设置,以及启动和检查过程。遵循上述步骤,你可以在本地环境中成功搭建起一个运行中的Hadoop伪分布式集群。
hadoop-core-1.0.4.jar
hadoop-eclipse-plugin-1.0.4.jar稳定版,支持jdk/jre 1.6和jdk/jre 1.7,编译的jdk环境为open-jdk-1.6.0_45(Ubuntu软件中心安装eclipse默认jdk),对官方的jdk-1.6.0_45环境也支持。
Prometheus Hadoop HDFS FSImage导出器 | 将Hadoop HDFS统计信息导出到包括 总数/每个用户/每个组/每个配置的目录路径/每个路径集 目录数 文件数 文件大小和大小分布(可选) 块数 文件复制(总体/每个用户摘要)...
在Windows上编译最新的hadoop-eclipse-plugin1.0.4的具体方法、要解决的问题以及编译成功后,可正确使用的插件文件。 保证正确。
hfsa-tool-bin Hadoop fsimage 文件分析利器,这个是二进制程序,可以直接使用 使用 cd hfsa-tool-1.2.0/bin ./hfsa-tool /data/fsimage_xxxxxxxx smallfiles --fsl=100Mib
在提供的信息中,我们关注的是"Hadoop的dll文件",这是一个动态链接库(DLL)文件,通常在Windows操作系统中使用,用于存储可由多个程序共享的功能和资源。Hadoop本身是基于Java的,因此在Windows环境下运行Hadoop...
hadoop1.0.4插件,本人亲测可行,同时解决0700问题,不过你在自己的安装笨笨中也需替换解决0700的hadoop-core-1.0.4.jar,要保持客户端、服务端以及插件的版本一直才行,要不然会出现一些版本不一致导致的问题。
总的来说,Hadoop-1.0.4作为一款重要的大数据处理框架,为用户提供了处理海量数据的强大能力,适用于各种应用场景,如日志分析、推荐系统、机器学习等。而理解其核心组件的工作原理和优化特性,对于有效地利用这一...
Hadoop FSImage分析器(HFSA) 介绍 Hadoop FSImage分析器(HFSA)通过提供补充 支持对HDFS数据文件以及用户和组目录的概述进行概述(回答“谁拥有多少个/大/小文件...”) 一个用于从派生的用于快速和部分多线程的...
【Hadoop入门教程】 ...以上就是安装和配置Hadoop 1.0.4的基础步骤,一旦熟悉了这个过程,你就可以进一步学习Hadoop的分布式文件系统(HDFS)和MapReduce编程模型,从而更好地理解和应用大数据处理。
在windows下,使用hadoop-1.0.4自带的hadoop-core-1.0.4.jar时,会抛出权限异常:cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-...
报错:java.lang.Exception: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 所需文件