如何告诉MapReduce使用多少个映射器?

时间:2011-09-14 14:45:29

标签: java hadoop mapreduce

我正在尝试加速优化MapReduce作业。

有什么办法可以告诉hadoop使用特定数量的mapper / reducer进程吗?或者,至少是最少数量的映射器进程?

在文档中,指定了您可以使用方法

执行此操作
public void setNumMapTasks(int n)
JobConf类的

这种方式并不过时,所以我用Job类开始Job。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

地图任务的数量由输入中的块数决定。如果输入文件为100MB且HDFS块大小为64MB,则输入文件将占用2个块。因此,将产生2个地图任务。 JobConf.setNumMapTasks()(1)提示框架。

Reducer的数量由JboConf.setNumReduceTasks()函数设置。这确定了作业的reduce任务总数。此外,mapred.tasktracker.tasks.maximum参数确定可以在单个作业跟踪器节点上并行运行的reduce任务的数量。

您可以在此处找到有关地图数量和减少作业的更多信息(2)

(1) - http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/JobConf.html#setNumMapTasks%28int%29
(2) - http://wiki.apache.org/hadoop/HowManyMapsAndReduces