栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive实战系列调优之调整Reduce个数

Hive实战系列调优之调整Reduce个数

相比map个数的控制复杂性,reduce个数的设定要相对简单多了,reduce的个数一般最后决定了输出文件的个数,二者相等,如果想多输出文件的个数(这样文件变小,但有可能程序变慢),那么可以人为增加reduce个数。如果想减少文件个数,也可以手动较少reduce个数(同样可能程序变慢)。但实际开发中,reduce的个数一般通过程序自动推定,而不人为干涉,因为人为控制的话,如果使用不当很容易造成结果不准确,且降低执行效率。
参数控制个数:

set mapred.reduce.tasks ; -- 默认值为-1
1.set hive.exec.reducers.bytes.per.reducer=300000000  --我们公司默认值 300Mb
2.set hive.exec.reducers.max=1009    --我们公司默认值,这个值一般不会修改。
3.reduce计算方式:计算reducer数的公式很简单:
Num=min(hive.exec.reducers.max,map输出数据量/hive.exec.reducers.bytes.per.reducer)

案例:不同参数控制不同的reduce

 --配置一
set mapred.max.split.size=256000000;
set mapred.min.split.size=10000000; 
set hive.exec.reducers.bytes.per.reducer=1000000000;
 
Hadoop job information for Stage-1: number of mappers: 112; number of reducers: 26
Time taken: 237.104 seconds

 --配置二
 
set mapred.max.split.size=256000000;
set mapred.min.split.size=10000000; 
set hive.exec.reducers.bytes.per.reducer = 1000000000;
 
Hadoop job information for Stage-1: number of mappers: 112; number of reducers: 26
Time taken: 237.104 seconds

只有一个Reduce的情况:

1.代码用了order by ,因为order by是全局排序;

2.表关联时出现了笛卡尔乘积;

3.使用count distinct,不过最好优化成子查询。

select count(*) from (select id from tablename group by id)  
替换
select count(distinct id) from tablename

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号