Fsimage 和 Edits 解析

浩客6个月前技术文章232


1、Fsimage和Edits概念

  • NameNode被格式化之后,将在所配置的存储目录中产生如下文件,fsimage和editslog文件存储在dfs.namenode.name.dir所设的路径下。

  • Fsimage,Editlog 主要用于在集群启动时将集群的状态恢复到关闭前的状态。为了达到这个目的,集群启动时将 Fsimage、Editlog 加载到内存中进行合并,合并后恢复完成。

11111111111111111.PNG

(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目 录和文件inode的序列化信息。

(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先 会被记录到Edits文件中。

3seen_txid文件保存的是一个数字,就是最后一个edits_的数字

(4)每 次NameNode启动的时候都会将Fsimage文件读入内存,加 载Edits里面的更新操作,保证内存 中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。


2、概述:

HDFS中解析fsImage的工具是 Offline Image Viewer ,对应的命令是hdfs oiv。Offline Image Viewer提供了几下几种处理器:

  • XML:将fsimage文件中的所有内容解析为XML格式的文件,该处理器的输出可以通过XML工具进行自动化处理和分析。由于XML语法的冗长,该处理器生成的输出文件非常大。

  • FileDistribution:分析namespace image中的文件大小分布的一个工具

  • Web:启动一个HTTP服务,对外暴露一个只读的WebHDFS API。不支持secure 模式。

  • Delimited(experimental):生成一个文本文件,其中包含inodes-under-construction和inode所共有的所有元素,用分隔符分隔,默认分隔符是\t,但可以通过-delimiter参数更改。

  • ReverseXML(experimental):对应XML processor,将XML格式的文件反解析为FSImage。这个处理器可以很容易地创建用于测试的fsimages,并在fsimage出现损坏时手动编辑fsimages。

选项说明:
  • -i,–inputFile 必选项,指定FSImage或者XML文件

  • -o,–outputFile 可选项,指定输出文件,默认是stdout

  • -p,–processor 可选项,指定processor,默认是Web processor

  • -delimiter 可选项,用于使用Delimited processor时,指定输出字符串的分隔符

  • -t,–temp 可选项,用于使用Delimited processor时,指定临时目录缓存输出。


3、获取fsimage文件:
hdfs dfsadmin -fetchImage <path>

222222222222222.PNG


4、统计文件整体情况
hdfs oiv -p FileDistribution -i fsimage_0000000000000024082 -o <filename>

3333333333333333.PNG



5、XML使用示例、
hdfs oiv -p XML -i fsimage_0000000000000024082 -o fsimage.xml

4444444444.PNG


6、Delimited使用示例
hdfs oiv -i fsimage_0000000000000024082 -p Delimited

5555.jpg

hdfs oiv -i fsimage_0000000003621277730 -t /temp/dir -o /data/fs_distribution -p Delimited -delimiter “,”(-t使用临时文件处理中间数据 不加的话全部使用内存 容易OOM)



相关文章

ES运维(四)扩容方式迁移

ES运维(四)扩容方式迁移

1 迁移概述本次模拟es在线迁移方式:集群扩容-->数据迁移-->老节点下线-->服务重启刷新配置。 中间master替换的时候会有短暂的不可用。 另外业务测需注意:老节点下线前...

SQL隐式转换导致索引失效_校验规则不一致

4.校验规则不一致导致索引失效首先可以通过检查表的校验规则核实是否存在隐式转化。--查看关联字段的字符集、校验规则SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAM...

ORA-00031报错处理

1、在数据库里面kill语句时会发生如下的报错:SQL> alter system kill session '4390,2679';alter system kill session '439...

DBMS_SESSION包跟踪10046

注意:DBMS_SESSION包:只能跟踪当前会话,不能指定会话DBMS_SESSION.SET_SQL_TRACE=ALTER SESSION SET SQL_TRACE; =ALTER SESSI...

Elasticsearch8.5及Kibana8.5安装部署

Elasticsearch8.5及Kibana8.5安装部署

一、环境准备1、Centos7系统2、切换英文系统[root@master02 ~]# tail -n2 /etc/profile export LANG="en_US.UTF-8"3、下载、安...

MySQL性能优化(九)range和ref

MySQL性能优化(九)range和ref

有的时候,我们会遇到这样的情况:明明有索引,明明有更好的执行计划,但是优化器并没有选择这个最优的执行计划。优化器可能会选择并非最优的索引,可能选择并非最优的数据访问方式。下面是一个真实的例子:一个例子...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。