Offline Image Viewer
离线镜像分析工具,可以将fsimage的内容解析成可读的格式。
FileDistribution
常用于查看hdfs文件大小分布,查看小文件的数量。
hdfs oiv -p FileDistribution -maxSize maxSize -step size -format -i fsimage -o output
-p|--processor processor 指定镜像处理器,包含Web(默认)、XML、Delimited、DetectCorruption、FileDistribution、ReverseXML
-i|--inputFile 指定输入的镜像文件
-o|--outputFile 指定输出的文件
-maxSize size 指定要分析的文件大小的范围[0,maxSize](以字节为单位)
-step size 指定分布的粒度(默认为2MB),以字节为单位
输出示例
Size Range NumFiles
[0 B, 0 B] 204
(0 B, 1 MB] 27782
(1 MB, 2 MB] 221
(2 MB, 3 MB] 131
(3 MB, 4 MB] 87
(4 MB, 5 MB] 39
(5 MB, 6 MB] 32
(6 MB, 7 MB] 27
(7 MB, 8 MB] 15
(8 MB, 9 MB] 33
(9 MB, 10 MB] 13
(10 MB, 11 MB] 55
......
Delimited
可以查看文件大小及其他信息
hdfs oiv -p Delimited -delimiter '|' -i fsimage -o output
# 可以直接查看文件最大的
hdfs oiv -p Delimited -delimiter '|' -i fsimage_0000000000008048996|awk -F '\|' '{print $1" "$7/1024/1024/1024}'|sort -nr -k 2|head
Path|Replication|ModificationTime|AccessTime|PreferredBlockSize|BlocksCount|FileSize|NSQUOTA|DSQUOTA|Permission|UserName|GroupName
/|0|2023-12-18 10:30|1970-01-01 08:00|0|0|0|9223372036854775807|-1|drwxr-xr-x|hdfs|hdfs
Offline Edits Viewer
离线日志分析工具,可以将edits文件的原生的二进制与XML格式之前互相转换。
主要作用在于可以查看某个edit文件中的所有操作。
hdfs oev -p xml -i edits -o edits.xml
[-p ; --processor] 指定处理器,包含binary、xml (default) and stats
stats处理器用于将edits文件中的操作码聚合统计
[-i ; --inputFile] 指定输入的edits文件
[-o ; --outputFile] 指定输出的文件名
[-r ; --recover] 如果读取的edit日志有损坏,使用恢复模式可以跳过损坏的edit文件
转换之后,可以看到每次事务的操作信息
<RECORD>
<OPCODE>OP_MKDIR</OPCODE>
<DATA>
<TXID>8060659</TXID>
<LENGTH>0</LENGTH>
<INODEID>1402753</INODEID>
<PATH>/tmp/xxxxx</PATH>
<TIMESTAMP>1703053805692</TIMESTAMP>
<PERMISSION_STATUS>
<USERNAME>hive</USERNAME>
<GROUPNAME>hdfs</GROUPNAME>
<MODE>448</MODE>
</PERMISSION_STATUS>
</DATA>
</RECORD>