hdfs的元数据辅助管理
元数据就是文件的创建时间、大小、权限、块列表等信息。
在Hadoop集群中namenode的元数据信息都保存在了Fslmage和Eidts文件中,这两个文件的目录信息就配置在hdfs-site.xml文件中。
**fsimage:HDFS文件系统存于硬盘中的元数据检查点,里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息edits:**保存了自最后一次检查点之后所有针对HDFS文件系统的操作,比如:增加文件、重命名文件、删除目录等等。
两个文件一旦损坏或丢失将导致整个hdfs文件系统不可用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qgK3ybZ2-1603113326336)(https://s1.ax1x.com/2020/09/17/wRaAzT.png)]
namenode中内存中有元数据,而fsimage相当于对元数据的备份,edits记录最近操作日志,fsimage和edits会周期性的合并为一个文件。
fsimage文件的查看
hdfs oiv用于将fsimage文件转换成其他格式的,如文本文件、XML文件。
必须参数:
-i,–inputFile 输入FSImage文件.
-o,–outputFile 输出转换后的文件,如果存在,则会覆盖
可选参数:
-p,–processor 将FSImage文件转换成哪种格式: (Ls|XML|FileDistribution).默认为Ls.
-h,–help 显示帮助信息
实例:将fsimage转换为txt保存在指定目录。
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.txt
实例:加上-p参数指定转化为xml文件。
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.xml -p XML
Eidts文件的查看
hdfs oev用于查看edits文件。
必须参数:
-i,–inputFile 输入edits文件,如果是xml后缀,表示XML格式,其他表示二进制。
-o,–outputFile 输出文件,如果存在,则会覆盖。
可选参数:
-p,–processor 指定转换类型: binary (二进制格式), xml (默认,XML格式),stats (打印edits文件的静态统计信息)
-h,–help 显示帮助信息
-f,–fix-txids 重置输入edits文件中的transaction IDs
-r,–recover 使用recovery模式,跳过eidts中的错误记录。
-v,–verbose 打印处理时候的输出。
实例:未指定-p选项,默认输出xml文件
hdfs oev -i /data1/hadoop/dfs/name/current/edits_0000000000019382469-0000000000019383915 -o /home/hadoop/edits.xml
在输出的xml文件中,每个RECORD记录了一次操作,比如图中的OP_ADD代表添加文件操作,OP_MKDIR代表创建目录操作。里面还记录了文件路径(PATH),修改时间(MTIME)、添加时间(ATIME)、客户端名称(CLIENT_NAME)、客户端地址(CLIENT_MACHINE)、权限(PERMISSION_STATUS)等非常有用的信息。
当edits文件破损进而导致HDFS文件系统出现问题时,可以通过将原有的binary文件转换为xml文件,并手动编辑xml文件然后转回binary文件来实现。
实例:指定-p选项输出统计信息
hdfs oev -i /data1/hadoop/dfs/name/current/edits_0000000000019382469-0000000000019383915 -o /home/hadoop/edits.txt -p stats
SecondaryNamenode辅助管理fsimage和edits文件
客户端client向namenode发送一个文件,namenode会生成元数据,而这时日志文件edits会对元数据进行同步更新,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hHNMPm3w-1603113326340)(https://s1.ax1x.com/2020/09/17/wRBzUH.png)]