edits
hdfs oev -i edits_0000000000000000081-
0000000000000000089
-o edits.xml
该命令需要以下参数:
必须参数:
-i,–inputFile <arg> 输入edits文件,如果是xml后缀,表示XML格式,其他表示二进制。
-o,–outputFile <arg> 输出文件,如果存在,则会覆盖。
可选参数:
-p,–processor <arg> 指定转换类型: binary (二进制格式), xml (默认,XML格式),stats (打印edits文件的静态统计信息)
-h,–help 显示帮助信息
-f,–fix-txids 重置输入edits文件中的transaction IDs
-r,–recover 使用recovery模式,跳过eidts中的错误记录。
-v,–verbose 打印处理时候的输出。
例子1:
hdfs oev -i /data1/hadoop/dfs/name/current/edits_0000000000019382469-0000000000019383915 -o /home/hadoop/edits.xml
未指定-p选项,默认转换成xml格式,查看edits.xml文件:
在输出的xml文件中,每个RECORD记录了一次操作,比如图中的OP_ADD代表添加文件操作,OP_MKDIR代表创建目录操作。里面还记录了文件路径(PATH),修改时间(MTIME)、添加时间(ATIME)、客户端名称(CLIENT_NAME)、客户端地址(CLIENT_MACHINE)、权限(PERMISSION_STATUS)等非常有用的信息。
当edits文件破损进而导致HDFS文件系统出现问题时,可以通过将原有的binary文件转换为xml文件,并手动编辑xml文件然后转回binary文件来实现。
例子2:
hdfs oev -i /data1/hadoop/dfs/name/current/edits_0000000000019382469-0000000000019383915 -o /home/hadoop/edits.txt -p stats
指定-p stats选项,用于输出该edits文件中的统计信息:
查看edits.txt,打印出该edits文件中每种操作的数量。
fsimage
hdfs oiv -i fsimage_0000000000000000115 -p XML -o fsimage.xml
该命令需要以下参数:
必须参数:
-i,–inputFile <arg> 输入FSImage文件.
-o,–outputFile <arg> 输出转换后的文件,如果存在,则会覆盖
可选参数:
-p,–processor <arg> 将FSImage文件转换成哪种格式: (Ls|XML|FileDistribution).默认为Ls.
-h,–help 显示帮助信息
例子1:
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.txt
执行后查看more /home/Hadoop/fsimage.txt
由于未指定-p选项,默认为Ls,出来的结果和执行hadoop fs –ls –R一样。
例子2:
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.xml -p XML
指定-p XML,将fsimage文件转换成XML格式,查看fsimage.xml
XML文件中包含了fsimage中的所有信息,比如inodeid、type、name、修改时间、权限、大小等等。
例子3:
FileDistribution是分析命名空间中文件大小的工具。为了运行该工具需要通过指定最大文件大小和段数定义一个整数范围[0,maxSize],该整数范围根据段数分割为若干段[0, s[1], …, s[n-1], maxSize],处理器计算有多少文件落入每个段中([s[i-1], s[i]),大于maxSize的文件总是落入最后的段中,即s[n-1], maxSize。输出文件被格式化为由tab分隔的包含Size列和NumFiles列的表,其中Size表示段的起始,NumFiles表示文件大小落入该段的文件数量。在使用FileDistribution处理器时还需要指定该处理器的参数maxSize和step,若未指定默认为0。示例如下:
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.fd -p FileDistribution maxSize 1000 step 5
查看结果文件fsimage.fd:
- head -10 fsimage.fd
- Processed 0 inodes.
- Size NumFiles
- 0 8302
- 2097152 474984
- 4194304 10995
- 6291456 6608
- 8388608 4452
- 10485760 5865
- 12582912 4747
- 14680064 2965
- tail -10 fsimage.fd
- 29725032448 1
- 33241956352 1
- 58212745216 1
- 58265174016 1
- 62084087808 1
- totalFiles = 605087
- totalDirectories = 100070
- totalBlocks = 725265
- totalSpace = 42583680916192
- maxFileSize = 62083011560