> 文章列表 > Hive 作业中Reduce个数设置多少合适呢?

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个数!