我试图了解如何开始任务的地图减少作业以及如何控制MR作业的数量。
假设我在 HDFS 中有一个 1TB 的文件,我的块大小是 128MB。 对于此 1TB 文件上的 MR 任务,如果我将输入拆分大小指定为 256MB,则启动多少个 Map 和 Reduce 作业。据我了解,这取决于拆分大小。即地图作业的数量=文件的总大小/拆分大小,在这种情况下,它算是1024 * 1024 MB / 256 MB = 4096
.所以 hadoop 启动的地图任务数量是 4096。
1(我说得对吗?
2(如果我认为这是一个不合适的数字,我可以通知Hadoop开始更少的工作数量甚至更多的工作吗?如果是,如何?
以及产生的减速器作业数量如何,我认为这完全由用户控制。
3(但是我应该如何以及在哪里提及所需的减速机工作数量。
1. 是的,你是对的。映射器数量=(数据大小(/(输入拆分大小(。所以,在你的情况下,它将是4096
-
根据我的理解,在hadoop-2.7之前,您只能提示系统通过
conf.setNumMapTasks(int num)
创建映射器的数量,但映射器将由自己创建。从Hadoop-2.7开始,您可以通过mapreduce.job.running.map.limit
限制映射器的数量。查看此 JIRA 门票 -
默认情况下,减速器的数量为 1。您可以通过job.setNumReduceTasks(integer_numer(进行更改;
您也可以从 cli 提供此参数-Dmapred.reduce.tasks=<num reduce tasks>