HDFS离线分析FsImage元数据

本文介绍了如何使用Hadoop命令下载HDFS的FsImage快照,然后通过Spark将其转换为XML并加载到Hive表中进行分析。重点讨论了处理数组类型字段如块和ACLs的方法,并分享了如何利用Spark-XML库和Hive SQL进行数据处理。此外,还展示了如何运用GnuPlot进行数据可视化,包括文件复制因子和一周内文件变更的直方图分析,以深入理解HDFS的使用情况。
摘要由CSDN通过智能技术生成

概观

HDFS是Hadoop的一部分,它具有下载当前名称节点快照的命令。我们可以通过Spark加载图像或对其进行数据摄取,以使其进入Hive以分析数据并验证它如何使用HDFS。

HDFS文件系统元数据存储在名为“FsImage”的文件中。我们在此快照中包含:

  • 整个文件系统命名空间。
  • 地图,块和文件复制。
  • 配额,ACLS等属性

我必须解决的问题如下:

  • 运行该命令以下载映像并生成XML文件。
  • 实现Spark作业以处理并将数据保存在Hive表中。
  • 使用Hive SQL分析一些数据并使用GnuPlot绘制数据。

1.生成HDFS FsImage

FSImage可以生成CSV,XML或分布式格式的图像,在我的情况下,我必须评估ACLS ;  因为它们是数组类型的字段,所以它们不能以CSV格式工作。你可以在这里看到更多细节:

要生成图像,请检查名称节点中的位置:

hdfs getconf -confKey dfs.namenode.name.dir

现在让我们下载图片/tmp。就我而言,正在分析的文件大小为35 GB

hdfs dfsadmin -fetchImage / tmp

现在需要将其转换为可读格式,在本例中为XML:

hdfs oiv -p XML -i / tmp / fsimage_0000000000000103292 -o fsimage.xml

1.1将文件加载到Spark中并将其保存到Hive表中

我使用Databricks库进行XML,并且它很容易加载,因为它已经将数据转换为数据框。您可以在此处查看所有详细信息:https//github.com/databricks/spark-xml

我的Hive表的结构如下:

使用分析;
CREATE EXTERNAL TABLE如果不是 EXISTS分析.fsimage_hdfs
  id string COMMENT '唯一标识号。' 
  type string COMMENT '数据类型:目录或文件,链接等......'
  name string COMMENT '目录或文件的名称..'
  复制字符串COMMENT '复制号。' 
  mtime string评论'修改日期'。
  atime string评论'上次访问的日期'。
  preferredblocksize string COMMENT '使用的块的大小。' 
  权限字符串COMMENT '使用的权限,用户,组(Unix权限)。' 
  acls string COMMENT '访问权限:用户和组。' 
  阻止字符串COMMENT '大小块'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值