默认减速机数量

时间:2016-01-10 07:23:33

标签: hadoop mapreduce hdfs

在Hadoop中,如果我们没有设置减速器数量,那么将创建多少减速器?

与地图集的数量一样,依赖于(总数据大小)/(输入拆分大小), 例如。如果数据大小为1 TB且输入分割大小为100 MB。然后映射器的数量将是(1000 * 1000)/ 100 = 10000(一万)。

减速机的数量取决于哪些因素?为工作创建了多少减速器?

2 个答案:

答案 0 :(得分:10)

减少了多少? (来自official documentation)

正确的减少数量似乎是0.95或1.75乘以 (节点数)*(每个节点的最大容器数)。

  

使用0.95时,所有缩减都可以立即启动,并在地图完成后开始传输地图输出。使用1.75,更快的节点将完成第一轮减少并启动第二波减少,从而更好地实现负载平衡。

增加减少的数量会增加框架开销,但会增加负载平衡并降低故障成本。

上面的缩放因子略小于整数,以便在框架中为推测任务和失败任务保留一些减少时隙。

本文也介绍了Mapper计数。

有多少地图?

  

地图数量通常由输入的总大小驱动,即输入文件的总块数。

地图的正确并行度似乎是每个节点大约10-100个地图,尽管已经为非常cpu-light地图任务设置了300个地图。任务设置需要一段时间,因此最好是地图至少需要一分钟才能执行。

因此,如果你期望10TB的输入数据并且块大小为128MB ,你最终会得到 82,000个地图,除非Configuration.set(MRJobConfig.NUM_MAPS, int)(其中只提供框架的提示)用于将其设置得更高。

如果要为减速器数更改默认值1,可以将以下属性(来自hadoop 2.x版本)设置为命令行参数

<强> mapreduce.job.reduces

OR

您可以使用

以编程方式设置
job.setNumReduceTasks(integer_numer);

再看一个相关的SE问题:What is Ideal number of reducers on Hadoop?

答案 1 :(得分:4)

默认情况下,减少器的数量设置为1。

您可以通过添加参数

来更改它

mapred.reduce.tasks在命令行或驱动程序代码或您传递的conf文件中。

例如:命令行参数:bin/hadoop jar ... -Dmapred.reduce.tasks=<num reduce tasks> 或者,在驱动程序代码中:conf.setNumReduceTasks(int num);

推荐阅读: https://wiki.apache.org/hadoop/HowManyMapsAndReduces