首页 > 其他分享 >Hadoop 集群运维的思考---(1)小文件优化

Hadoop 集群运维的思考---(1)小文件优化

时间:2022-12-07 18:01:31浏览次数:35  
标签:文件 运维 HDFS 合并 Hadoop hive --- 文件夹 NameNode

1小文件优化的驱动力

1.1NN 内存和HDFS文件的数量关系计算.

 一般来说, NameNode管理文件File、目录Directory、块Block对象, 每一个对象的大小约在150 B.大小.

 假设有一个192MB的文件, 它会切分称128M+64M, 就会有2个block 文件+ 1个文件对象, 占用大约450B的空间. 

 如果128个1M的文件会占据 256(128文件+128块)对象需要36M左右的内存.

1.2对NameNode的影响.

 NameNode启动时间变长、性能下降.

 NameNode JVM FGC 风险高.

2小文件的产生

2.1HDFS中的原数据

 举个例子, Spark写入业务数据到HDFS , 业务有忙闲之分, 但是控制程序如果写的不好, 那么在忙的时候, 业务产生的数据,可能是300M*10份, 而过了峰值以后, 就可能会产生10M*10份的数据.显然后者就是小文件.

2.2Hive 表运算产生

比如MR 任务中, reducer配置较大, 会输出很多小文件.

2.3YARN job history log.

每个任务都会有日志文件, 这些日志文件大小不一, 有的可能不足1M.

 

3小文件优化的办法

3.1找到“有小文件”的文件夹

l平均文件size越小越好

l文件数量越多越好

 

 HDFS目录路径格式如下: 

/hive/warehouse/<DB名>/<表名>/<分区名> ;

/hbase/<表名> ;

 

首先计算TOPN占据存储的文件夹,当平均文件<30M时,需要关注这个文件夹, 是小文件数多的文件夹.同时需要注意,当文件个数较少时, 比如第三行,那么也无需做小文件合并.

 

 

TOPN 大的文件夹

文件夹名称 文件大小 文件个数 块个数 平均文件大小
/hive/test 312TB  6563901 6595185 50M
/hive/db1 190T  39723117 46103517 5M
/hbase/cloumn 10G  356 270 27M

 

 

3.2小文件合并的方法和工具

1、不常用的数据表,使用HAR压缩

 

 提供用户配置HAR压缩策略:

1)输入不常用文件夹/目录列表 2) 输入指定日期,在该日期之前的数据均可压缩成HAR

 当满足以上策略时,系统自动运行结果.

 

2、开发合并小工具

 

根据实际生产情况, 可以针对按照日期来分区的Hive表, 开发如下小工具.

 

用户输入需要合并的hive /db /表名称

用户输入分区 开始时间-结束时间.

 

给出合并的结果: 总计文件数/合并后的文件数/ 参与合并的分区数/节约的存储空间

 

给出合并后的检查: 合并前的entry count /合并后的entry count, 测试数据表可用性.

 

删除旧文件.

标签:文件,运维,HDFS,合并,Hadoop,hive,---,文件夹,NameNode
From: https://www.cnblogs.com/xieqisheng666/p/16963853.html

相关文章

  • 记录--微信小程序获取用户信息的最新方法记录
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助微信小程序获取用户信息的几种方式以下三种方式都无法获取到用户的openID1.开放组件获取用户信息<open-......
  • 【JAVA笔记】JAVA-入门基础-面向对象04
    一、OOP详解面向对象编程(Object-OrientedProgramming,OOP)面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。抽象三大特性:封装、继承、多态、1、cla......
  • mybatis plus中使用joda-time
    支持JodaDateTime例如Pojo/Mopackagecom.xxx.crud.eo;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableFi......
  • mybatis-plus雪花算法生成Id使用详解
    文章目录​​前言​​​​一、mybatis-plus官网​​​​二、雪花算法实战​​​​1.建表​​​​2.新建测试工程​​​​3.单元测试​​​​三、实现分析​​​​四、为什么......
  • Mybatis-Plus字段策略FieldStrategy详解
    文章目录​​前言​​​​一、官方文档​​​​二、字段策略介绍​​​​1、FieldStrategy作用​​​​2、FieldStrategy类型​​​​3、FieldStrategy配置​​​​全局策略......
  • Mybatis-Plus通过SQL注入器实现真正的批量插入
    文章目录​​前言​​​​一、mysql批量插入的支持​​​​二、Mybatis-Plus默认saveBatch方法解析​​​​1、测试工程建立​​​​2、默认批量插入saveBatch方法测试​​......
  • mybatis-plus雪花算法增强:idworker
    文章目录​​前言​​​​一、官网​​​​二、默认实现的弊端​​​​三、mybatis-plus中datacenterId和workerId的默认生成规则​​​​四、idworker介绍​​​​五、idwo......
  • Mybatis-Plus中updateById方法不能更新空值问题
    问题描述在Mybatis-Plus中调用updateById方法进行数据更新默认情况下是不能更新空值字段的。而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况。那么如果让Mybat......
  • mybatis-plus异常记录:org.apache.ibatis.binding.BindingException Invalid bound st
    问题描述我们在使用mybatis或mybatis-plus作为持久化框架的时候,通过dao层接口调用xml中配置好的sql时,常常会遇到​​org.apache.ibatis.binding.BindingExceptionInvalidb......
  • docker image inspect image:tag docker stats --no-stream
    dockerstatsnginx--no-stream--format"{{json.}}"[root@localhost12-7]#dockerimageinspectnew_img:v1|grep"qinrui""whiletrue;doech......