目录
1.1 输入为大量小文件,通过调整文件块大小,对未达到阈值的小文件进行合并,减少map数量。
3.1 数据过滤能够早点过滤就要早点过滤,同时需要选择所需要的列。
一:具体问题场景以及优化方案
1.1 输入为大量小文件,通过调整文件块大小,对未达到阈值的小文件进行合并,减少map数量。
问题场景:输入文件数量多,其中很多是远远小于256 M的小文件(hdfs中文件块大小为256M).
set mapred.max.split.size = 100000000;
set mapred.min.split.size.per.node = 100000000;
set mapred.min.split.size.per.rack = 100000000;
set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; -- 表示
-- 执行前进行小文件合并
解释:前三个参数确定合并文件块的大小,大于文件块大小256M的,按照256M来分割,小于256M,大于100M
的,按照100M来分割,把哪些小于100M的(包括小文件和分割大文件剩下的)进行合并。
1.2 调整reduce数量
调整原则:使大数据量利用合适的reduce数;使单个reduce任务处理合适的数据量
set hive.exec.reducers.bytes.per.reduce = 500000000; (500M)
或者
set mapred.reduce.tasks = 15
解释:前者是通过控制每个reduce处理的数据量来控制reduce数,后者是直接指定reduce数量
二:数据倾斜问题及其解决方案
2.1数据倾斜理论知识
1 )数据倾斜现象:某一个或者几个reduce作业处理的数据量远高于其他的。
2)数据倾斜出现原因:数据分布不均匀,业务数据本身就有倾斜&