Hadoop HDFS FsImage分析

2019年11月7日 0 条评论 370 次阅读 1 人点赞

HDFS是Hadoop的一部分,它具有下载当前名称节点快照的命令。我们可以通过Spark加载Image或对其进行数据摄取,以使其进入Hive以分析数据并验证它如何使用HDFS。
HDFS文件系统元数据存储在名为FsImage的文件中。在此快照中包含:

  • 整个文件系统命名空间
  • Maps,Blocks,文件备份
  • ACLS,属性配置等

要想使用FsImage必须解决以下问题:

  • 运行命令下载Image并生成XML文件(也可以是其他类型文件)
  • 处理并将数据保存在Hive表中(建议使用Hive表,当然保存到其他库中也可以,根据情况而定)
  • 使用Hive SQL分析一些数据并使用图表工具绘制数据
生成HDFS FsImage

FSImage可以生成CSV,XML或分布式格式的图像,我们需要分析Block和ACLS;因为它们是数组类型的字段,所以它们不能以CSV格式工作。你可以在这里看到更多信息:

Hadoop Hdfs图像查看器

  • 要生成图像,请检查名称节点中的位置:
hdfs getconf -confKey dfs.namenode.name.dir
  • 下载FsImage文件到/tmp目录。下载时间根据我们HDFS系统大小而定
hdfs dfsadmin -fetchImage /tmp
  • 现在需要将其转换为XML格式
hdfs oiv -p XML -i /tmp/fsimage_0000000000000103292 -o fsimage.xml
解析图像数据

使用Databricks进行转换XML文件

  • 创建Hive表
USE analyze;
CREATE EXTERNAL TABLE IF NOT EXISTS analyze.fsimage_hdfs
(
  id string COMMENT '唯一标识号',
  type string COMMENT '数据类型:目录或文件,链接等......',
  name string COMMENT '目录或文件的名称..',
  replication string COMMENT '副本编码',
  modfiy_time string COMMENT '修改日期',
  last_time string COMMENT '上次访问的日期',
  preferred_block_size string COMMENT '使用块大小',
  permission string COMMENT '使用的权限,用户,组(Unix权限)',
  acls string COMMENT '访问权限:用户和组',
  blocks string COMMENT '块',
  storage_policy_id string COMMENT '访问策略的ID号',
  nsquota string COMMENT '配额名称,如果-1被禁用',
  dsquota string COMMENT '空间可用评估用户/组,如果-1被禁用',
  fileunder_construction string COMMENT '文件或目录仍处于构建/复制状态',
  path string COMMENT '文件或目录的路径'
)
PARTITIONED BY (odate string, cluster string)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'
OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat'
LOCATION '/tmp/analyze/fsimage_hdfs';

接下来就是进行使用图表渲染数据了

qianmoQ

qianmoQ

这个人太懒什么东西都没留下

文章评论(0)