如何选择蜂房减速一份工作的数量?(How does Hive choose the number o

2019-09-01 02:53发布

几个地方说减速器在一个Hadoop作业的默认#1。可以使用mapred.reduce.tasks符号手动设置减速机的数量。

当我运行一个蜂房的工作(在Amazon EMR,AMI 2.3.3),它具有减速大于一的一些数字。 纵观作业设置,事情已经设置mapred.reduce.tasks,我相信蜂巢。 它是如何选择一个号码?

注意:这里有运行蜂房的工作,应该是一个线索,而一些消息:

...
Number of reduce tasks not specified. Estimated from input data size: 500
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
...

Answer 1:

1也许对于一个香草Hadoop的默认安装的。 蜂巢覆盖它。

在开源的蜂巢(EMR和可能)

# reducers = (# bytes of input to mappers)
             / (hive.exec.reducers.bytes.per.reducer)

这篇文章说,默认hive.exec.reducers.bytes.per.reducer为1G。

您可以通过限制使用这种启发式生产的减速机的数量hive.exec.reducers.max

如果你确切地知道你想减速的数量,你可以设置mapred.reduce.tasks ,这将覆盖所有的试探。 (默认设置为-1,表明蜂巢应利用其启发。)

在某些情况下 - 说“从t选择计数(1)” - 蜂房将减速器的数目设置为1,而不管输入数据的大小的。 这些被称为“全聚集” - 如果该查询做的唯一事情是完全聚集 - 那么编译器知道从映射器中的数据将被降低到微不足道的金额,并有运行多个减速没有意义的。



文章来源: How does Hive choose the number of reducers for a job?
标签: hadoop hive