3

默认情况下,在 EMR 作业期间,实例配置为具有比映射器更少的 reducer。但是减速器没有得到任何额外的内存,所以看起来它们应该能够拥有相同的数量。(比如超大的高cpu实例有7个mapper,但只有2个reducer,但是mapper和reducer都配置了512MB的可用内存)。

有谁知道这是为什么,有什么方法可以指定使用与映射器一样多的减速器吗?

编辑:我的数量错误,它是 512 MB

4

1 回答 1

3

映射器从其输入流(映射器的 STDIN)中提取数据,并且它们发出的内容更加紧凑。然后,该出站流(映射器的 STDOUT)也按键排序。因此,reducers 在其传入的数据中具有较小的排序数据。

这就是为什么任何 Hadoop MapReduce 集群(而不仅仅是 EMR)的默认配置是拥有比 reducer 更多的映射器的原因,这与作业跟踪器可用的核心数量成正比。

您可以通过 jobconf 参数控制映射器和缩减器的数量。配置变量是 mapred.map.tasks 和 mapred.reduce.tasks。

于 2012-04-27T11:02:17.403 回答