如何稳定解析Hdfs fsImage文件

背景

  • 众所周知,要获取hdfs中存储的目录信息,比较简单的方式可通过访问8020来获取,但是此举会增加NN的压力,同时也采集不到我们最关心的数据访问时间这个字段。
  • 通过解析Hdfs image的话,可得到数据访问时间字段,将非常有利于我们进行冷热数据分析。

过程

  • FsImage文件是分布在运行NN的机器上的,因此需定时把Image上次到hdfs上
  • 笔者是每天定时起docker容器拉取Image进行解析
  • 实践证明解析后的Image文件大概是原文件的三倍大小
  • 解析命令
# 字符按照“,”进行分割,强烈建议加上-t参数,防止OOM
hdfs oiv -p Delimited -delimiter ,  -t  temporaryDir -i fsimage_0000000075762298193 -o fsimage.csv
  • 解析后的字段含义分别是:
    • Path:目录路径
    • Replication:副本数
    • ModificationTime:最后修改时间
    • AccessTime:最后访问时间
    • PreferredBlockSize:首选块大小,单位:byte
    • BlocksCount:块的数量
    • FileSize:文件大小,单位:byte
    • NSQUOTA:名称配额 限制指定目录下允许的文件和目录的数量。
    • DSQUOTA:空间配额 限制该目录下允许的字节数
    • Permission:权限
    • UserName:用户
    • GroupName:用户组
  • 最后可以把解析玩的csv文件上传到HIVE中,通过写HQL查询你感兴趣的东西
  • fsImage中数据非常全,相当于全景图,只要想要的几乎都可以查到
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容