0464-如何离线分析HDFS的FsImage查找集群小文件

本文档介绍如何通过离线分析HDFS的FsImage来查找集群中的小文件,包括分析脚本、数据转存到Impala、HDFS和Hive的统计分析,以及关键指标解释。

Fayson的github: https://github.com/fayson/cdhproject

推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f,或者扫描文末二维码。

1.文档编写目的

随着Hadoop集群数据量的增长,集群中也同时会存在大量的小文件,即文件Size比HDFS的Block Size(默认128MB)小的多的文件。Hadoop集群中存在大量的小文件对集群造成的影响如下:

1.对NameNode的内存造成很大的压力以及性能问题,在HDFS中任何文件、目录或者block在NameNode内存中均以对象的方式表示(即元数据),默认每个元数据对象约占150bytes。

2.HDFS在存储小文件上效率会很低,同样在读取上也会导致大量的查找,在各个DN节点去检索小文件。

在前面的文章Fayson介绍了《如何在Hadoop中处理小文件》,《如何使用Impala合并小文件》和《如何在Hadoop中处理小文件-续》。基于上述原因Fayson主要介绍如何通过离线分析HDFS的FsImage的方式查找集群中的小文件。

内容概述:
1.FsImage分析脚本
2.FsImage数据转存到Impala表中
3.各个维度分析查找集群中的小文件
4.总结

测试环境:
1.CM和CDH版本为5.15

2.离线FsImage分析脚本

本篇文章Fayson的分析脚本主要基于HDFS提供的oiv命令来进行FsImage离线分析,将FsImage文件解析问指定的csv格式数据,如下脚本分析的具体步骤:

1.使用hdfs命令获取FsImage数据文件

[root@cdh02 fsimage]#  hdfs dfsadmin -fetchImage ./tmp_meta

在这里插入图片描述
2.使用hdfs oiv命令解析FsImage文件

[root@cdh02 fsimage]# hdfs oiv -i ./tmp_meta/fsimage_0000000000008236656 -o ./tmp_meta/fsimage.csv -p Delimited

在这里插入图片描述
3.将解析的csv文件加载到Hive的HDFS_META_TEMP表中

[root@cdh02 fsimage]# sed -i -e "1d" ./tmp_meta/fsimage.csv
[root@cdh02 fsimage]# hdfs dfs -rmr /tmp/hdfs_metadata/fsimage
[root@cdh02 fsimage]# hdfs dfs -mkdir -p /tmp/hdfs_metadata/fsimage
[root@cdh02 fsimage]# hdfs dfs -copyFromLocal ./tmp_meta/fsimage.csv /tmp/hdfs_metadata/fsimage

在这里插入图片描述
4.使用Sqoop脚本将Hive元数据中关于Hive库和表的信息抽取的Hive中

sqoop import \
--connect "jdbc:mysql://${DB_IPADDR}:${DB_PORT}/${META_DB_NAME}" \
--username ${DB_USERNAME} \
--password ${DB_PASSWORD} \
--query 'select c.NAME,c.DB_LOCATION_URI,a.TBL_NAME,a.OWNER,a.TBL_TYPE,b.LOCATION from TBLS a,SDS b,DBS c where a.SD_ID=b.SD_ID and a.DB_ID=c.DB_ID and $CONDITIONS' \
--fields-terminated-by ',' \
--delete-target-dir \
--hive-database ${DB_NAME} \
--target-dir /tmp/${TARG_HIVE_TB} \
--hive-import \
--hive-overwrite \
--hive-table ${TARG_HIVE_TB} \
--m ${MAP_COUNT}

在这里插入图片描述
5.执行base.sql文件创建分析的Impala表
在这里插入图片描述
6.执行analyse_s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值