Hive 作业中Reduce个数设置多少合适呢?

简介: Hive 作业Reduce个数设置原则

前言

在上一篇文章《Hive 作业产生的map数越多越好还是越少越好?》中介绍了map个数设置多少合适的问题,那么Reduce个数设置多少合适呢?今天就给小伙伴们聊一下Reduce个数设置方法以及设置多少合适的原则!

1. Reduce个数设置方法

方法1

首先我们来看下reduce数的计算公式:

N=min(参数2,总输入数据量/参数1)

上述参数说明:

参数1:每个reduce任务处理的数据量大小,默认值为256M。

可以通过如下参数进行设置:

set hive.exec.reducers.bytes.per.reducer=256000000;

参数2:每个job最大的reduce数,默认1009

可以通过如下参数进行设置:

set hive.exec.reducers.max=1009;

方法2

在Hadoop的mapred-default.xml文件中修改设置每个job的reduce数:

set mapreduce.job.reduces=20;

2. Reduce个数设置原则

在设置reduce个数的时候,需要考虑以下两个原则:

  • 单个reduce任务处理数据量大小要合适
  • 根据输入数据量选择合适的reduce数

总结

reduce个数并不是越多越好,也不是越少越好!

设置过多:

  • 导致过多的启动和初始化操作,消耗时间和资源
  • 有多少个reduce,就会产生多少个输出文件,如果生成了很多小文件并且作为下一个job的输入,则会出现小文件过多问题。

设置过少:

  • 会导致任务执行效率低下,增加耗时和资源!

我们需要根据原则和方法设置合适的Redece个数!

相关文章
|
SQL 分布式计算 资源调度
线上 hive on spark 作业执行超时问题排查案例分享
线上 hive on spark 作业执行超时问题排查案例分享
|
SQL 分布式计算 资源调度
阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录
阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录
1255 0
|
SQL 分布式计算 算法
Hive关联时丢失数据问题和常用的Hive SQL参数设置
针对结果的发生,本文从以下方面分析原因及提供解决方案: - 右表没有匹配的数据 - 关联键数据类型不匹配 - 受count列null值影响 - Hive版本问题,在某些版本中,左连可能导致右表为null - 数据倾斜 并在文末附属了`Hive SQL常用参数设置`的说明。
Hive关联时丢失数据问题和常用的Hive SQL参数设置
|
SQL 资源调度 大数据
大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?
大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?
|
SQL 分布式计算 资源调度
大数据问题排查系列-大数据集群开启 kerberos 认证后 HIVE 作业执行失败
大数据问题排查系列-大数据集群开启 kerberos 认证后 HIVE 作业执行失败
|
SQL 分布式计算 大数据
大数据问题排查系列 - TDH大数据平台中 HIVE作业长时间无法执行结束
大数据问题排查系列 - TDH大数据平台中 HIVE作业长时间无法执行结束
|
SQL 分布式计算 大数据
大数据面试题:Hive count(distinct)有几个reduce,海量数据会有什么问题
count(distinct)只有1个reduce。 为什么只有一个reducer呢,因为使用了distinct和count(full aggreates),这两个函数产生的mr作业只会产生一个reducer,而且哪怕显式指定set mapred.reduce.tasks=100000也是没用的。 当使用count(distinct)处理海量数据(比如达到一亿以上)时,会使得运行速度变得很慢,熟悉mr原理的就明白这时sql跑的慢的原因,因为出现了很严重的数据倾斜。
|
SQL 分布式计算 HIVE