离线分析fsimage文件进行数据深度分析

news/2024/5/20 3:09:14 标签: hadoop, hdfs, 大数据

以离线分析FsImage文件进行数据深度分析

整个方案的基本架构:

在这里插入图片描述

分析FsImage文件基本架构图

  FsImage文件时HDFS存放在NameNode中的镜像文件,里面包括了整个HDFS集群的目录和文件信息,(类似于一个索引目录+部分数据的文件),而且HDFS提供了命令可以将FsImage文件转成CSV文件,可以用它在Hive上进行分析。目前fsiamge一般都是几十g的级别。

  FsImage字段一览

字段名中文
Path目录路径
Replication备份数 其实就是所有的存储份数
ModificationTime最后修改时间 创建
AccessTime对于文件来说是最后访问时间,对于文件夹来说就是创建时间
PreferredBlockSize首选块大小 byte
BlocksCount块 数eeeeeeeeee
FileSize文件大小 byte
NSQUOTA名称配额 限制指定目录下允许的文件和目录的数量。
DSQUOTA空间配额 限制该目录下允许的字节数
Permission权限
UserName用户
GroupName用户组

  hdfs get命令

hdfs dfs -get /user/bigdata/fsimage_0000000010470664202  /opt/fsimage_001

  hdfs vio命令:

hdfs oiv -i /opt/fsimage_001 -o /opt/fsimage_001.csv -p Delimited -delimiter ","

  Linux sed命令: 在每行数据末尾后面新增,HDFS

sed -i s/$/,HDFS/g fsimage_001.csv

  hdfs put命令

hdfs dfs -put /opt/fsimage_001.csv  /user/hdfsser/hdfs_fsimage/fsimage_001.csv

Hive中的相关表

1. FsImage表 存放来自FsImage的初始数据

字段名类型备注
Pathstring目录路径
Replicationstring备份数
ModificationTimestring最后修改时间
AccessTimestringstring
PreferredBlockSizestring首选块大小 byte
BlocksCountstring块 数
FileSizestring文件大小 byte
NSQUOTAstring名称配额 限制指定目录下允许的文件和目录的数量。
DSQUOTAstring空间配额 限制该目录下允许的字节数
Permissionstring权限
UserNamestring用户
GroupNamestring用户组
clustersourcestring数据集群来源

2. inhive 存放Hive产生的文件

字段名类型备注
Pathstring完成目录路径
dbnamestringHive库名
tablenamestringHive表名
FileSizestring文件大小 byte
UserNamestring用户
clustersourcestring数据集群来源

3. nonhive 存放非Hive的文件

字段名类型备注
Pathstring目录路径 不包含文件名
filenamestring文件名
FileSizestring文件大小 byte
UserNamestring用户
clustersourcestring数据集群来源

Hive数据交换语句中涉及到的函数

字符串长度函数:length

  语法: length(string A)
  返回值: int
  说明:返回字符串A的长度

字符串反转函数:reverse

  语法: reverse(string A)
  返回值: string
  说明:返回字符串A的反转结果

字符串截取函数:substr,substring

  语法: substr(string A, int start),substring(string A, int start)
  返回值: string
  说明:返回字符串A从start位置到结尾的字符串

字符串截取函数:substr,substring

  语法: substr(string A, int start, int len),substring(string A, intstart, int len)
  返回值: string
  说明:返回字符串A从start位置开始,长度为len的字符串

分割字符串函数: split

  语法: split(string str, string pat)
  返回值: array
  说明:按照pat字符串分割str,会返回分割后的字符串数组

向下取整函数

  语法:floor(double d)
  返回值:bigint
  说明:返回<=d的最大bigint值;

向下取整函数

  语法:ceil(double d)
  返回值:bigint
  说明:返回>=d的最小bigint 值;

部分SQL语句示例

  • 启动Hive,直接使用hive命令
    $ hive;

  • 进入对应的数据库 use hdfsser;
    hive> use hdfsser;

  • 查询出插入inhive表的语句

INSERT INTO TABLE inhive
SELECT path,
       split(path,'\\/')[5],
       split(path,'\\/')[6],
       FileSize,
       UserName,
       clustersource
FROM fsimage
WHERE split(path,'\\/')[3]= 'hive' and split(path,'\\/')[4] = 'warehouse';
  • 查询出插入nonhive表的语句
INSERT INTO TABLE nonhive
SELECT CASE
           WHEN filesize='0' THEN path
           ELSE substr(path, 0, length(path)-1-length(reverse(split(reverse(path),'\\/')[0])))
       END,
       CASE
           WHEN filesize='0' THEN NULL
           ELSE reverse(split(reverse(path),'\\/')[0])
       END ,
       FileSize,
       UserName,
       clustersource
FROM fsimage
WHERE size(split(path,'\\/'))<=3
  OR split(path,'\\/')[3] <> 'hive';

小文件分析

小文件的定义

  • 判断小文件的规则:
    1、文件大小<1MB;(最好支持配置或者sql脚本传参)
    2、目录下文件数量>10000(最好支持配置或者sql脚本传参)
  • 需要治理哪些用户的小文件规则:
    1、hive小文件数大于100W的用户;|
    2、hive小文件占比超过30%的用户。(hive小文件/hive文件总数)

未定问题

  • 文件目录第三级目录为hive,第四级目录不为warehouse的数据存放位置。
  • [目录下文件>10000]目录指的是几级目录,目录的规则需要根据治理目标再确认。

其他分析

在文件大小的不同区间进行分析,单位大小MB

(0-1),[1,10),[10,128),[128-512),[512,+∞)

各个区间下的文件数量,目录数量

  • 特征1 文件的数量远大于目录数量
  • 特征2 某个目录下文件数量过多
  • 特征3 目录的组成有明显的序列,日志log/logs 日期yyyy-MM-dd 临时tmp temp checkpoint等等的

两大考量点 一个是文件数量一个是文件或目录类型

  • 文件数量指的是 单个目录下小文件的数量,可以定义一个阀值,目录小文件下超过阀值的就肯定需要治理,阀值可以是1000,1W,10W
  • 文件或目录类型指的是 一些目录或者文件是特定任务或者临时产生使用的。比如日志文件(log,logs)、临时文件或者目录(tmp,temp,temp_transfer),Flink,Spark任务(checkpoint),长年未访问的文件(这个指文件)

http://www.niftyadmin.cn/n/449154.html

相关文章

华为云物联网平台微信小程序开发教程2.0【完整详细教程】

一、简介 在之前曾发布过一篇文章“华为云物联网平台的微信小程序开发”&#xff0c;在最近接到部分用户私信在使用开发过程中出现的问题&#xff0c;例如API访问的"401"现象等问题&#xff0c;在重新查看上面的文章教程时发现教程内容的步骤不详细&#xff0c;现对教…

zabbix-2-创建自定义监控项

例如监控iostat 下的sda tps值 [rootnode1 ly]# iostatLinux 3.10.0-1160.53.1.el7.x86_64 (node1) 2023年06月13日 _x86_64_ (32 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.06 0.00 0.04 0.01 0.00 99.89Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 1…

基于webpack开发react-cli

在前面的章节中我们学习了webpack的基础配置&#xff08;五大核心属性&#xff09;&#xff0c;以及一些高级优化配置&#xff08;source map、Tree Shaking、 HMR、Code Split等&#xff09;&#xff0c;并且分别开发了webpack.dev.js(开发环境配置)&#xff0c;和webpack.pro…

7.pixi.js编写的塔防游戏(类似保卫萝卜)-plist的使用

游戏说明 一个用pixi.js编写的h5塔防游戏&#xff0c;可以用electron打包为exe&#xff0c;支持移动端&#xff0c;也可以用webview控件打包为app在移动端使用 环境说明 cnpm6.2.0 npm6.14.13 node12.22.7 npminstall3.28.0 yarn1.22.10 npm config list electron_mirr…

一文理清最小二乘法估计

1 最小二乘法估计(LS) 1.1 原理与推导 最小二乘法最早是高斯在预估星体轨道时提出来的&#xff0c;后来成为了估计理论的奠基石。考虑如下CAR模型&#xff1a; 其中&#xff1a; 参数估计的任务就是根据输入和输出&#xff0c;估计出a1,a2,----,ana,b1,b2,...,bnb这nanb1个参…

C++练习题第10套

91.下列哪个不是C的基本数据类型&#xff1f; a. int b. char c. string d. double 92.在C中&#xff0c;如何定义一个常量&#xff1f; a. 使用const关键字 b. 使用static关键字 c. 使用final关键字 d. 使用readonly关键字 93.C中的数组下标从哪个数开始&#xff1f; …

linux下安装rabbitmq及踩坑总结

下载erlang mq 下载地址 https://github.com/rabbitmq/erlang-rpm/releases?page7 https://github.com/rabbitmq/rabbitmq-server/tags?afterv3.8.12-beta.1 版本对应 1.官网地址 https://www.rabbitmq.com/download.html ** 2.文件上传 上传到/usr/local/software 目录…

第八章——向量代数与空间解析几何

目录 一、运算公式 二、平面的法线向量 注&#xff1a;加粗体为向量 一、运算公式 1.若a//b&#xff0c;那么aλb 若a⊥b&#xff0c;那么a*b0 2.若A(x1,y1,z1)&#xff0c;B(x2,y2,z2) 中点坐标&#xff1a;AB中点M(x1x2/2,y1y2/2,z1z2/2) 两点间的距离和模的计算&#x…