hive生成的文件数过多
来源:互联网 发布:python 局域网聊天室 编辑:程序博客网 时间:2024/05/08 19:31
当Hive输入由很多个小文件组成,由于每个小文件都会启动一个map任务,如果文件过小,以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费,甚至OOM。
为此,当我们启动一个任务,发现输入数据量小但任务数量多时,需要注意在Map前端进行输入合并
当然,在我们向一个表写数据时,也需要注意输出文件大小
1. Map输入合并小文件
对应参数:
set mapred.max.split.size=256000000; #每个Map最大输入大小
set mapred.min.split.size.per.node=100000000; #一个节点上split的至少的大小
set mapred.min.split.size.per.rack=100000000; #一个交换机下split的至少的大小
set hive.input.format=org.apache.Hadoop.hive.ql.io.CombineHiveInputFormat; #执行Map前进行小文件合并
在开启了org.apache.hadoop.hive.ql.io.CombineHiveInputFormat后,一个data node节点上多个小文件会进行合并,合并文件数由mapred.max.split.size限制的大小决定。
mapred.min.split.size.per.node决定了多个data node上的文件是否需要合并~
mapred.min.split.size.per.rack决定了多个交换机上的文件是否需要合并~
2.输出合并
set hive.merge.mapfiles = true #在Map-only的任务结束时合并小文件
set hive.merge.mapredfiles = true #在Map-Reduce的任务结束时合并小文件
set hive.merge.size.per.task = 25610001000 #合并文件的大小
set hive.merge.smallfiles.avgsize=16000000 #当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge
Reference:
Hive AdminManual
- hive生成的文件数过多
- Hive文件数创建过多的问题
- Hive:解决Hive创建文件数过多的问题
- Hive:解决Hive创建文件数过多的问题
- 文件数打开过多
- 关于hive的tmp目录文件个数过多的问题
- linux系统打开文件数过多的解决办法
- 解决文件数打开过多问题
- 报打开的文件数过多(Too many open files)
- mySQL连接数过多的问题
- 解决TCP连接数过多的问题
- 解决TCP连接数过多的问
- Android APK 方法数过多的问题
- 解决TCP连接数过多的问题
- MySQL数据库连接数过多的常见原因
- elk报错,显示linux文件数打开过多
- LINUX C 程序异常退出---文件连接数过多
- hive控制文件生成个数
- 自定义控件实战<四> 音量增减控件
- React学习之路一
- Nginx upstream原理分析【1】upstream和FastCGI前篇
- 浏览器清理缓存
- 关于Android7.0 监听网络改变的广播失效
- hive生成的文件数过多
- 2014年预赛 C/C++本科A组 第一题【猜年龄】
- 蓝桥杯-四平方和
- java中volatile关键字的含义
- 交换机端口隔离port-isolate
- 友元函数、友元类
- 业内低功耗CC3200模块
- 用数组存储大整数,实现大整数的加法
- TIANKENG’s restaurant 【区间覆盖】