我试图了解may map reduce jobs是如何开始一项任务的,以及如何控制mr jobs的数量。
假设我有一个1tb的hdfs文件,我的块大小是128mb。对于这个1tb文件上的mr任务,如果我将输入拆分大小指定为256mb,那么会启动多少map和reduce作业。据我所知,这取决于分割大小。i、 eMap作业的数量=文件的总大小/拆分大小,在本例中,计算结果为 1024 * 1024 MB / 256 MB = 4096
. 所以hadoop启动的map任务数是4096。
1) 我说得对吗?
2) 如果我认为这是一个不合适的数字,我可以通知hadoop开始更少的工作,甚至更多的工作。如果是,怎么做?
那么产生的减速机作业的数量呢,我认为这完全是由用户控制的。
3) 但是我应该如何以及在哪里提及所需的减速机工作的数量。
1条答案
按热度按时间rjzwgtxy1#
1是的,你说得对。Map器数量=(数据大小)/(输入拆分大小)。所以,你的情况是4096
据我了解,在hadoop-2.7之前,您只能提示系统通过创建Map器的数量
conf.setNumMapTasks(int num)
但Map绘制者将自己创建。在hadoop-2.7中,可以通过mapreduce.job.running.map.limit
. 看到这张吉拉的票了吗默认情况下,减速器的数量为1。您可以按job.setnumreducetasks(integer\u numer)更改它;
也可以从cli提供此参数
-Dmapred.reduce.tasks=<num reduce tasks>