hive小文件合并思路

简介:

对于hdfs来说,系统的压力主要集中在namenode

  如果在整个hadoop集群中存在大量的小文件,会消耗namenode的大量内存(大概146B一个元数据)

另一方面,如果小文件过多,有没有开启combine inputformat,在进行split分片的时候,会产生大量的map,严重影响到mapred的利用率。

定期对小文件进行清理就会变得很必要,比如我会每天有报表来获取hive中表的信息,比如文件量最多的,文件最小的,占空间最大的,

然后根据需要选择需要合并的表。

wKioL1N65VuAl9btAAIV-5ple-s172.jpg

合并时考虑以下几个方法:

1.har

hdfs自带的打包工具,类似于tar,不过用起来不是特别方便,适用于归档(不太常用的历史数据)。

2.insert overwrite table xxx  select xxxx

这是一个maponly的job,通过设置combine相关的参数,可以实现对小文件的压缩和合并

这里我是使用了自己开发的python程序来实现的,具体的思路:

1)从元数据中获取需要合并的分区的名称和location,表结构等信息

2)创建备份表(表结构和源表一致,location自定义),通过设置hive的参数,并调用insert overwrite table xxx select xxx来把对应分区写到备份表中

具体的参数如下:

1
2
3
4
5
6
7
         set mapred.max.split.size= 25000000 ;
         set mapred.min.split.size.per.node= 10000000 ;
         set hive.hadoop.supports.splittable.combineinputformat= true ;
         set mapred.min.split.size.per.rack= 10000000 ;
         set hive.exec.compress.output= true ;
         set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
         set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

3)清洗完成后,对比前后表的count,如果一致则进行hdfs层面的文件delete和mv操作

3.自定义mapred 

用java代码实现mapred,来进行文件的合并。

网上有个例子可以借鉴下:

https://github.com/edwardcapriolo/filecrush



本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1414094,如需转载请自行联系原作者

相关文章
|
SQL 存储 分布式计算
【Hive】(二十三)简单几招教你如何解决 Hive 中小文件过多的问题
【Hive】(二十三)简单几招教你如何解决 Hive 中小文件过多的问题
2007 0
|
SQL 存储 Java
Hive教程(09)- 彻底解决小文件的问题
Hive教程(09)- 彻底解决小文件的问题
1298 1
|
SQL 存储 算法
【Hive】Hive 小文件过多怎么解决?
【4月更文挑战第16天】【Hive】Hive 小文件过多怎么解决?
|
SQL 存储 分布式计算
hive 小文件问题及解决方法【重要】
hive 小文件问题及解决方法【重要】
727 0
|
SQL 存储 HIVE
彻底解决Hive小文件问题
小文件产生的原因和危害以及解决方法。
757 0
彻底解决Hive小文件问题
|
SQL 存储 分布式计算
数据湖实操讲解【 JindoTable 计算加速】第二十二讲:对 Hive 数仓表进行高效小文件合并
数据湖 JindoFS+OSS 实操干货 36讲 每周二16点准时直播! 扫文章底部二维码入钉群,线上准时观看~ Github链接: https://github.com/aliyun/alibabacloud-jindofs
数据湖实操讲解【 JindoTable 计算加速】第二十二讲:对 Hive 数仓表进行高效小文件合并
|
SQL 存储 分布式计算
Hive小文件问题:如何产生、造成影响、解放办法
Hive小文件问题:如何产生、造成影响、解放办法
|
SQL 存储 分布式计算
数仓面试高频考点--解决hive小文件过多问题
小文件产生原因、小文件过多产生的影响以及怎么解决小文件过多问题
1400 0
|
SQL 存储 分布式计算
对 Hive 数仓表进行高效小文件合并 | 学习笔记
快速学习对 Hive 数仓表进行高效小文件合并。
367 0
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
402 1