控制地图数量和减少作业产生了?

时间:2017-07-26 08:00:08

标签: hadoop mapreduce hdfs yarn hadoop2

我试图了解如何映射减少任务启动以及如何控制MR作业的数量。

假设我在HDFS中有一个1TB文件,我的块大小为128MB。 对于此1TB文件上的MR任务,如果我将输入拆分大小指定为256MB,那么将启动多少Map和Reduce作业。根据我的理解,这取决于分割大小。即地图作业的数量=文件的总大小/分割大小,在这种情况下,它可以是1024 * 1024 MB / 256 MB = 4096。因此,hadoop启动的地图任务数量为4096 1)我是对的吗?

2)如果我认为这是一个不合适的号码,我可以通知hadoop开始减少工作数量甚至更多的工作。 如果是,如何?

如果产生的减速机工作数量如何,我认为这完全由用户控制 3)但我应该如何以及在何处提及所需的减速机工作数量。

1 个答案:

答案 0 :(得分:2)

<强> 1。你是对的。没有mappers =(数据大小)/(输入分割大小)。所以,在你的情况下,它将是4096

  1. 根据我的理解,在hadoop-2.7之前你只能通过conf.setNumMapTasks(int num)暗示系统创建一些mapper,但mapper将由他们自己创建。从hadoop-2.7开始,您可以通过mapreduce.job.running.map.limit限制映射器的数量。请参阅此JIRA票证

  2. 默认情况下,reducer的数量为1.您可以通过 job.setNumReduceTasks(integer_numer);

  3. 进行更改

    您也可以从cli提供此参数 -Dmapred.reduce.tasks=<num reduce tasks>