利用fsimage分析HDFS小文件

这篇具有很好参考价值的文章主要介绍了利用fsimage分析HDFS小文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Hive 小文件概述

在Hive中,所谓的小文件是指文件大小远小于HDFS块大小的文件,通常小于128 MB,甚至更少。这些小文件可能是Hive表的一部分,每个小文件都包含一个或几个表的记录,它们以文本格式存储。

Hive通常用于分析大量数据,但它在处理小文件方面表现不佳,Hive中存在大量小文件会引起以下问题:

  • 存储空间占用过多:在Hadoop生态系统中,每个小文件都将占用一定的存储空间,而且每个小文件也需要一个块来存储。如果存在大量的小文件,将浪费大量的存储空间。

  • 处理延迟:小文件数量过多,会引起大量IO操作,导致处理延迟。

  • 查询性能下降:小文件用于分区和表划分,可能导致查询延迟并降低查询性能。此外,小文件还会增加元数据的数量,使得Hive在查询元数据时变得更加缓慢。

  • 数据倾斜:如果数据分布不均匀,会导致一些Reduce任务处理了完全不同的分区,这会使某些Reduce任务的运行速度与其他Reduce任务相比非常慢。

因此,为了避免这些问题,我们需要对Hive中小文件的处理进行优化,减少小文件数量和大小,以提高数据处理效率和准确性。

二、如何排查小文件

1)获取fsimage信息
hdfs dfsadmin -fetchImage ./

利用fsimage分析HDFS小文件,hadoop,hdfs,hadoop,大数据

2)格式化fsimage为可读文本 
 hdfs oiv -i ./fsimage_0000000007979236585 -t ./tmp/ -o ./fsimage.csv -p Delimited  -delimiter ","

利用fsimage分析HDFS小文件,hadoop,hdfs,hadoop,大数据

注意:需要创建tmp临时目录缓存中间结果,缓解内存的压力,否则将oom

利用fsimage分析HDFS小文件,hadoop,hdfs,hadoop,大数据

3)建立存储fsimage的表
CREATE TABLE `tmp.fsimage_info_csv`(
  `path` string, 
  `replication` int, 
  `modificationtime` string, 
  `accesstime` string, 
  `preferredblocksize` bigint, 
  `blockscount` int, 
  `filesize` bigint, 
  `nsquota` string, 
  `dsquota` string, 
  `permission` string, 
  `username` string, 
  `groupname` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'=',', 
  'serialization.format'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
    'hdfs://nameservice1/user/hive/warehouse/fsimage_info_csv';
4)上传数据到hdfs
hdfs dfs -put /data/fsimage.csv /user/hive/warehouse/fsimage_info_csv/
5) 逐级目录统计文件数量

以查找三级目录下的小文件数量为例,如下:

SELECT
    dir_path ,
    COUNT(*) AS small_file_num 
FROM
    (    SELECT
            relative_size,
            dir_path 
        FROM
            (    SELECT
                    (
                    CASE filesize < 4194304 
                        WHEN TRUE 
                        THEN 'small' 
                        ELSE 'large' 
                    END)  AS relative_size,
                    concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2], '/',split(PATH,'\/')[3], '/',split(PATH,'\/')[4], '/', split(PATH,'\/')[5], split(PATH,'\/')[6]) AS dir_path 
                FROM
                    tmp.fsimage_info_csv 
                WHERE
                    replication = 0 and path like '/hive/warehouse/%') t1
        WHERE
            relative_size='small') t2 
GROUP BY
    dir_path 
ORDER BY
    small_file_num desc

利用fsimage分析HDFS小文件,hadoop,hdfs,hadoop,大数据文章来源地址https://www.toymoban.com/news/detail-684130.html

6 ) 小文件处理
  • 根据涉及目录,反向找到涉及程序,尝试优化避免小文件的产生
  • 及时合并归档小文件
  • 及时清理历史小文件

到了这里,关于利用fsimage分析HDFS小文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Hadoop集群启动后利用Web界面管理HDFS

    Hadoop集群启动后利用Web界面管理HDFS

           Hadoop集群启动后,可以通过自带的浏览器Web界面查看HDFS集群的状态信息,访问IP为NameNode所在服务器的IP地址, hadoop版本为3.0以前访问端口默认为9870 , hadoop版本为3.0以后访问端口默认为50070 。( 下面测试版本为Hadoop3.0以后的 ) 一、利用ifconfig命令查看NameNode所在服

    2024年02月11日
    浏览(14)
  • 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

    基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

    项目介绍 有需要整个项目的可以私信博主,提供部署和讲解,对相关案例进行分析和深入剖析 环境点击顶部下载 = 本研究旨在利用Python的网络爬虫技术对豆瓣电影网站进行数据抓取,并通过合理的数据分析和清洗,将非结构化的数据转化为结构化的数据,以便于后续的大数

    2024年02月11日
    浏览(12)
  • Hadoop - HDFS文件系统

    Hadoop - HDFS文件系统

    目录 HDFS文件系统  1、文件系统定义 2、大数据时代,面对海量数据,传统的文件存储系统会面临哪些挑战? 3、分布式存储系统的核心属性及功能含义 一、分布式存储的优点 二、元数据记录的功能 三、分块存储好处 四、副本机制的作用 4、HDFS简介 HDFS适用场景 5、HDFS主从架

    2023年04月08日
    浏览(9)
  • Windwos安装Hadoop 并在IDEA中利用Maven实现HDFS API操作

    Windwos安装Hadoop 并在IDEA中利用Maven实现HDFS API操作

    本次hadoop的安装系统为Windows10、Hadoop版本为3.3.6、Maven版本为3.9.4、Java版本为17.0.2。本教程基于前篇教程Hadoop集群、Java安装均完成后的后续教程,如未完成安装请查看前置教程。Hadoop、java安装 ############################################################################################# 此外,大数

    2024年01月18日
    浏览(10)
  • Hadoop上传文件到hdfs中

    hadoop常见指令: hdfs dfs -copyFromLocal /local/data /hdfs/data :将本地文件上传到 hdfs 上(原路径只能是一个文件) hdfs dfs -put /tmp/ /hdfs/ :和 copyFromLocal 区别是,put 原路径可以是文件夹等 hadoop fs -ls / :查看根目录文件 hadoop fs -ls /tmp/data :查看/tmp/data目录 hadoop fs -cat /tmp/a.txt :查看

    2023年04月15日
    浏览(10)
  • hadoop调用HDFS java api实现在HDFS上创建文件夹

    hadoop调用HDFS java api实现在HDFS上创建文件夹

    目录 一、前期准备 1、Hadoop集群已配置完毕 2、Linux系统安装jdk 3、安装并破解IntelliJ IDEA 二、通过JAVA API操纵HDFS 1.在IDEA中创建项目  2.在hdfs项目的src-main-java路径下创建一个包,然后在包下创建一个java类实现hdfs的文件操作  3.java类的代码 4.对JAVA程序传入参数后运行程序  5

    2024年02月08日
    浏览(49)
  • Hadoop HDFS(分布式文件系统)

    Hadoop HDFS(分布式文件系统)

    一、Hadoop HDFS(分布式文件系统) 为什么要分布式存储数据 假设一个文件有100tb,我们就把文件划分为多个部分,放入到多个服务器 靠数量取胜,多台服务器组合,才能Hold住 数据量太大,单机存储能力有上限,需要靠数量来解决问题 数量的提升带来的是网络传输,磁盘读写,

    2024年02月06日
    浏览(11)
  • Hadoop分布式文件系统-HDFS

    Hadoop分布式文件系统-HDFS

    HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。 HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成: - NameNode : 负责执行有关 ` 文件系统命名空间 ` 的操作,例如打开,关闭、

    2024年02月07日
    浏览(17)
  • Hadoop:HDFS--分布式文件存储系统

    Hadoop:HDFS--分布式文件存储系统

    目录   HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir  查看目录内容 -ls  上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendToFile HDFS文件移动 -mv  删除HDFS文件 -rm  

    2024年02月09日
    浏览(47)
  • Hadoop入门学习笔记——三、使用HDFS文件系统

    Hadoop入门学习笔记——三、使用HDFS文件系统

    视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd=5ay8 Hadoop入门学习笔记(汇总) 3.1.1. HDFS文件系统基本信息 HDFS和Linux系统一样,均是以 / 作为根目录的组织形式; 如何区分HDFS和Linux文件系统: Linux文件系统以 file:// 作为

    2024年01月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包