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

hadoop 1.0.4 fsimage 文件格式分析

 
阅读更多

本文转载自: 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):属于该文件的blockblockid

9.numBytes(long):该block的大小

10.genStamp(long):该block的时间戳

11.username(String):该文件的所属用户名,前面有个可变长度的长度描述,最长为int

12.group(String):该文件的所属组,前面有个可变长度的长度描述,最长为int

13.permission(short):该文件的permission信息,如644,和POSIX权限保持一致

 

其中789三个部分是可以循环的,因为一个文件可以存在于多个block。文件没有配额信息。

文件,按顺序格式

我配的dfs.replication2

名称 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;
}


 

分享到:
评论

相关推荐

    hadoop1.0.4 eclipse插件

    而Hadoop 1.0.4版本是Hadoop早期的一个稳定版本,它提供了基本的MapReduce编程模型和HDFS(Hadoop Distributed File System)分布式文件系统。Eclipse插件则是为了帮助开发人员在Eclipse集成开发环境中更方便地开发...

    hadoop1.0.4 Eclipse-Plugin 插件

    Hadoop 1.0.4 Eclipse Plugin 插件是针对Hadoop 1.x版本的一个集成开发工具,旨在方便开发者在Eclipse环境中进行Hadoop相关的Java应用程序开发和调试。Hadoop是一个开源的分布式计算框架,主要由Apache基金会维护,...

    Hadoop 1.0.4 API文档

    Hadoop 1.0.4 API文档 个人制作,难免可能有些格式问题,敬请谅解 欢迎大家来下载

    hadoop1.0.4.chm api

    hadoop1.0.4.chm 帮助文档英文版 其实做hadoop需要英文过关嘀,一心想找中文版的朋友还是好好考虑一下提升自己的英文水平吧

    hadoop1.0.4 eclipse插件及编译方法

    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 Juno下的插件

    hadoop-1.0.4的eclipse插件

    是我自己编译的hadoop-1.0.4的eclipse插件,在eclipse-sdk-3.7.1上适用。在其他eclipse版本上应该也没有问题

    安装Hadoop1.0.4伪分布式的方法.docx

    在本文中,我们将详细介绍如何...总的来说,安装Hadoop 1.0.4的伪分布式模式需要关注安装路径、配置文件的正确设置,以及启动和检查过程。遵循上述步骤,你可以在本地环境中成功搭建起一个运行中的Hadoop伪分布式集群。

    Hadoop-core-1.0.4

    hadoop-core-1.0.4.jar

    hadoop-1.0.4-eclipse-plugin.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环境也支持。

    hadoop-hdfs-fsimage-exporter:将Hadoop HDFS内容统计信息导出到Prometheus

    Prometheus Hadoop HDFS FSImage导出器 | 将Hadoop HDFS统计信息导出到包括 总数/每个用户/每个组/每个配置的目录路径/每个路径集 目录数 文件数 文件大小和大小分布(可选) 块数 文件复制(总体/每个用户摘要)...

    hadoop1.0.4 eclipse插件编译方法及插件文件,保证通过

    在Windows上编译最新的hadoop-eclipse-plugin1.0.4的具体方法、要解决的问题以及编译成功后,可正确使用的插件文件。 保证正确。

    hfsa-tool-bin Hadoop fsimage 分析利器

    hfsa-tool-bin Hadoop fsimage 文件分析利器,这个是二进制程序,可以直接使用 使用 cd hfsa-tool-1.2.0/bin ./hfsa-tool /data/fsimage_xxxxxxxx smallfiles --fsl=100Mib

    hadoop的dll文件 hadoop.zip

    在提供的信息中,我们关注的是"Hadoop的dll文件",这是一个动态链接库(DLL)文件,通常在Windows操作系统中使用,用于存储可由多个程序共享的功能和资源。Hadoop本身是基于Java的,因此在Windows环境下运行Hadoop...

    hadoop-1.0.4 ecipse插件(并解决0700问题)

    hadoop1.0.4插件,本人亲测可行,同时解决0700问题,不过你在自己的安装笨笨中也需替换解决0700的hadoop-core-1.0.4.jar,要保持客户端、服务端以及插件的版本一直才行,要不然会出现一些版本不一致导致的问题。

    hadoop-1.0.4.tar.gz

    总的来说,Hadoop-1.0.4作为一款重要的大数据处理框架,为用户提供了处理海量数据的强大能力,适用于各种应用场景,如日志分析、推荐系统、机器学习等。而理解其核心组件的工作原理和优化特性,对于有效地利用这一...

    hfsa:Hadoop FSImage分析器(HFSA)

    Hadoop FSImage分析器(HFSA) 介绍 Hadoop FSImage分析器(HFSA)通过提供补充 支持对HDFS数据文件以及用户和组目录的概述进行概述(回答“谁拥有多少个/大/小文件...”) 一个用于从派生的用于快速和部分多线程的...

    hadoop入门教程.pdf

    【Hadoop入门教程】 ...以上就是安装和配置Hadoop 1.0.4的基础步骤,一旦熟悉了这个过程,你就可以进一步学习Hadoop的分布式文件系统(HDFS)和MapReduce编程模型,从而更好地理解和应用大数据处理。

    hadoop-core-1.0.4.jar

    在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-...

    hadoop.dll 文件,解决报错所需文件

    报错:java.lang.Exception: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 所需文件

Global site tag (gtag.js) - Google Analytics