- 浏览: 24928 次
- 性别:
- 来自: 上海
最新评论
元数据文件fsimage的分析
fsimage为元数据镜像文件,存储的是某一时刻NameNode内存元数据信息,包括所有的INode信息、正在写入的文件信息以及其他的一些状态信息等。
当StorageDirectory的类型为NameNodeFile.IMAGE时,将FSImage持久化为../current/fsimage文件。
fsimage的部分结构分析如下:
inodes为目录时的结构
inodes为文件时的结构
permission的结构
blocks的结构
解析某fsimage的结果
LAYOUT_VERSION:-41
namespaceID:1167023747
numItemsInTree:19
generationStamp:1012
node:{name:, modtime:1377679793059, nsquota:2147483647, dsquota:-1, permission:hue supergroup 755}
node:{name:/test, modtime:1377679792720, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/input, modtime:1377679736766, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/output, modtime:1377679792720, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/input/chapter1.txt, copys:2, blksize:67108864, blk:[{3939378972164311396,8976,1002}], modtime:1377679736766, acctime:1377679736766, permission:hue supergroup 644}
node:{name:/test/output/_SUCCESS, copys:2, blksize:67108864, blk:[], modtime:1377679792720, acctime:1377679792720, permission:hue supergroup 644}
node:{name:/test/output/_logs, modtime:1377679773673, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/output/part-r-00000, copys:2, blksize:67108864, blk:[{5401467920515552367,6128,1011}], modtime:1377679787973, acctime:1377679787973, permission:hue supergroup 644}
node:{name:/test/output/_logs/history, modtime:1377679773673, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/output/_logs/history/job_201308281640_0001_1377679773095_hue_word+count, copys:2, blksize:67108864, blk:[{-7275418827867675308,13833,1012}], modtime:1377679773322, acctime:1377679773322, permission:hue supergroup 644}
node:{name:/test/output/_logs/history/job_201308281640_0001_conf.xml, copys:2, blksize:67108864, blk:[{-4116164172580388309,47105,1010}], modtime:1377679773673, acctime:1377679773673, permission:hue supergroup 644}
node:{name:/tmp/hadoop-hue, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred/staging, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred/system, modtime:1377679793049, nsquota:-1, dsquota:-1, permission:hue supergroup 700}
node:{name:/tmp/hadoop-hue/mapred/staging/hue, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred/staging/hue/.staging, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 700}
node:{name:/tmp/hadoop-hue/mapred/system/jobtracker.info, copys:2, blksize:67108864, blk:[{-7415943897866965603,4,1001}], modtime:1377679253906, acctime:1377679253906, permission:hue supergroup 600}
解析代码如下:
fsimage为元数据镜像文件,存储的是某一时刻NameNode内存元数据信息,包括所有的INode信息、正在写入的文件信息以及其他的一些状态信息等。
引用
/**
* Save current image and empty journal into {@code current} directory.
*/
protected void saveCurrent(StorageDirectory sd) throws IOException
* Save current image and empty journal into {@code current} directory.
*/
protected void saveCurrent(StorageDirectory sd) throws IOException
当StorageDirectory的类型为NameNodeFile.IMAGE时,将FSImage持久化为../current/fsimage文件。
fsimage的部分结构分析如下:
int | int | long | long | ... |
LAYOUT_VERSION | namespaceID | numItemsInTree | timestamp | inodes |
inodes为目录时的结构
short | binary | short | long | long | long | int | long | long | permission |
namelen | name | 0 | modificationTime | 0 | 0 | -1 | nsquota | dsquota | permission |
inodes为文件时的结构
short | binary | short | long | long | long | int | ... | permission |
namelen | name | replication | modificationTime | accessTime | preferredBlockSize | numBlocksInFile | blocks | permission |
permission的结构
Text | Text | short |
username | groupname | permission |
blocks的结构
long | long | long |
blockId | numBytes | timestamp |
解析某fsimage的结果
LAYOUT_VERSION:-41
namespaceID:1167023747
numItemsInTree:19
generationStamp:1012
node:{name:, modtime:1377679793059, nsquota:2147483647, dsquota:-1, permission:hue supergroup 755}
node:{name:/test, modtime:1377679792720, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/input, modtime:1377679736766, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/output, modtime:1377679792720, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/input/chapter1.txt, copys:2, blksize:67108864, blk:[{3939378972164311396,8976,1002}], modtime:1377679736766, acctime:1377679736766, permission:hue supergroup 644}
node:{name:/test/output/_SUCCESS, copys:2, blksize:67108864, blk:[], modtime:1377679792720, acctime:1377679792720, permission:hue supergroup 644}
node:{name:/test/output/_logs, modtime:1377679773673, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/output/part-r-00000, copys:2, blksize:67108864, blk:[{5401467920515552367,6128,1011}], modtime:1377679787973, acctime:1377679787973, permission:hue supergroup 644}
node:{name:/test/output/_logs/history, modtime:1377679773673, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/test/output/_logs/history/job_201308281640_0001_1377679773095_hue_word+count, copys:2, blksize:67108864, blk:[{-7275418827867675308,13833,1012}], modtime:1377679773322, acctime:1377679773322, permission:hue supergroup 644}
node:{name:/test/output/_logs/history/job_201308281640_0001_conf.xml, copys:2, blksize:67108864, blk:[{-4116164172580388309,47105,1010}], modtime:1377679773673, acctime:1377679773673, permission:hue supergroup 644}
node:{name:/tmp/hadoop-hue, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred/staging, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred/system, modtime:1377679793049, nsquota:-1, dsquota:-1, permission:hue supergroup 700}
node:{name:/tmp/hadoop-hue/mapred/staging/hue, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 755}
node:{name:/tmp/hadoop-hue/mapred/staging/hue/.staging, modtime:1377679793059, nsquota:-1, dsquota:-1, permission:hue supergroup 700}
node:{name:/tmp/hadoop-hue/mapred/system/jobtracker.info, copys:2, blksize:67108864, blk:[{-7415943897866965603,4,1001}], modtime:1377679253906, acctime:1377679253906, permission:hue supergroup 600}
解析代码如下:
try (DataInputStream in = new DataInputStream(new BufferedInputStream( new FileInputStream(fileName)))) { System.out.printf("LAYOUT_VERSION:%s\n", in.readInt()); System.out.printf("namespaceID:%s\n", in.readInt()); long nodes = in.readLong(); System.out.printf("numItemsInTree:%s\n", nodes); System.out.printf("generationStamp:%s\n\n", in.readLong()); byte[] byteStore = new byte[4 * FSConstants.MAX_PATH_LENGTH]; for (long i = 0; i < nodes; i++) { printINode(in, byteStore); Arrays.fill(byteStore, (byte) 0x00); } }
void printINode(DataInputStream in, byte[] byteStore) throws IOException { boolean isDir = true; short namelen = in.readShort(); in.read(byteStore, 0, namelen); short replication = in.readShort(); long modTime = in.readLong(); long accessTime = in.readLong(); // access time long blockSize = in.readLong(); // preferred block size int blocks = in.readInt(); // # of blocks StringBuilder sb = new StringBuilder(); long nsQuota = 0; long dsQuota = 0; if (blocks >= 0) { isDir = false; sb.append("["); for (int i = 0; i < blocks; i++) { sb.append("{").append(in.readLong()).append(",") .append(in.readLong()).append(",") .append(in.readLong()).append("}"); if (i + 1 != blocks) { sb.append(","); } } sb.append("]"); } else { nsQuota = in.readLong(); dsQuota = in.readLong(); } String userName = Text.readString(in); String groupName = Text.readString(in); short permit = in.readShort(); if (isDir) { System.out .printf("node:{name:%s, modtime:%s, nsquota:%s, dsquota:%s, permission:%s %s %s}\n", new String(byteStore, 0, namelen), modTime, nsQuota, dsQuota, userName, groupName, Integer.toOctalString(permit)); } else { System.out .printf("node:{name:%s, copys:%s, blksize:%s, blk:%s, modtime:%s, acctime:%s, permission:%s %s %s}\n", new String(byteStore, 0, namelen), replication, blockSize, sb.toString(), modTime, accessTime, userName, groupName, Integer.toOctalString(permit)); } }
发表评论
-
[实验]avro与non-avro的mapred例子-wordcount改写
2013-09-03 16:15 1052avro非常适合用于hadoop。在开发的时候可能有这样的场景 ... -
[实验]hadoop例子 trackinfo数据清洗的改写
2013-09-03 10:42 1090之前的“trackinfo数据清洗”例子中为使用combine ... -
[笔记]hadoop tutorial - Reducer
2013-09-03 10:15 736引用Reducer reduces a set of inte ... -
[实验]hadoop例子 trackinfo数据清洗
2013-09-02 17:24 2568业务场景: 假设用户在某处(例如某个网页或者某个地点)的活动会 ... -
[环境] hadoop 开发环境maven管理
2013-09-02 17:02 1467贴一下整理的maven管理配置(待补充) <proj ... -
[笔记]avro 介绍及官网例子
2013-09-02 14:22 3894Apache Avro是一个独立于编程语言的数据序列化系统。旨 ... -
[实验]hadoop例子 在线用户分析
2013-08-30 15:54 900一个简单的业务场景和例子。由wordcount例子改写。 业 ... -
[笔记]hadoop mapred InputFormat分析
2013-08-30 13:43 1274Hadoop MapReduce的编程接口层主要有5个可编程组 ... -
[笔记]hdfs namenode FSNamesystem分析
2013-08-30 09:18 1153NameNode在内存中维护整个文件系统的元数据镜像,用于HD ... -
[实验]集群hadoop配置
2013-08-28 16:53 854环境 hadoop1.2.0 CentOS release ... -
[实验]单机hadoop配置
2013-08-28 14:16 614环境: hadoop1.2.0 配置 修改conf/core ... -
[问题解决]hadoop eclipse plugin
2013-08-27 09:22 982环境: hadoop 1.2.0 问题: eclipse报错& ...
相关推荐
HDFS的设计旨在处理超大文件,支持流式数据访问,具备高吞吐率、低成本、易扩展和高容错性等特点,为大数据分析提供了坚实的基础。 HDFS的核心特性之一是数据的分布式存储。在处理超过单台机器存储能力的数据集时,...
1. Namenode的作用 Namenode是HDFS的主要组件,负责管理文件系统的名字空间。Namenode上保存着HDFS的名字空间,包括数据块到文件的映射、文件的属性等。Namenode使用EditLog来记录所有对文件系统元数据的修改操作,...
1. 启动 NameNode,加载 edits 和 fsimage。 2. 客户端传入元数据的增删改查请求,进入 NameNode 的 edits 中。 3. fsimage 每隔一段时间备份 edits 中的数据。 4. SecondaryNameNode 启动,检查是否需要把 edits 中...
- NameNode的元数据信息存储在称为fsimage的文件中,而块的位置信息则通过DataNode报告。 - SecondaryNameNode并不是NameNode的热备份,它的主要作用是帮助合并编辑日志,以减少NameNode重启时加载元数据的时间。 ...
Secondary Namenode 负责并非 NameNode 的热备,辅助 NameNode,分担其工作量,定期合并 fsimage 和 fsedits,推送给 NameNode,在紧急情况下,可以辅助恢复 NameNode。 4. MapReduce(分布式计算框架): ...
删除新NameNode的fsimage文件,从SecondaryNameNode复制fsimage到NameNode的current目录下,最后重启集群,从而恢复NameNode的运行,并能够重新查看HDFS上的文件和目录。 4. HDFS块大小的调整 在HDFS中,块大小是...
在Hadoop的HDFS系统中,NameNode维护的fsimage和edits文件是关键。fsimage是系统启动时加载的数据快照,而edits是之后的所有更改记录。SecondaryNameNode的作用在于定期合并fsimage和edits,创建检查点,以避免edits...
- **序列化并上传元数据**:将合并后的元数据序列化到磁盘,并上传给Namenode以替换原有的FsImage文件。 #### 三、Namenode启动流程 - **加载镜像文件**:加载FsImage文件,还原Checkpoint时间点前的元数据信息。 ...
- **Secondary NameNode**:辅助NameNode,周期性地合并fsimage和editlog文件,减小NameNode启动时间。 **安装HDFS集群的步骤**: 1. **准备Linux服务器**:选择合适的虚拟机或者物理机作为集群节点。 2. **配置...
### 大数据基础复习知识点详解 ...综上所述,本篇笔记全面介绍了大数据的基本概念、Hadoop的核心技术、HDFS的结构和功能、以及HDFS的特性和通信协议等方面的知识点,为大数据领域的学习者提供了详尽的学习资料。