我用mrjob在emr上运行一个作业;我使用的是ami版本2.4.7和hadoop版本1.0.3。
我想为一个作业指定减速器的数量,因为我想为下一个作业提供更高的并行性。在阅读本网站上其他问题的答案时,我想我应该设置这些参数,所以我做了: mapred.reduce.tasks=576 mapred.tasktracker.reduce.tasks.maximum=24
然而,第二种选择似乎没有被采纳:emr和hadoop接口都报告有576个reduce任务要运行,但是集群的容量仍然保持在72(r3.8xlarge示例)。
我甚至看到这个选项已经设定好了 var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_XXX/job.xml:<property><name>mapred.tasktracker.reduce.tasks.maximum</name><value>24</value></property>
. 但是,只有默认数量(9)的实际减速器同时运行。
为什么emr不接受该选项?或者有没有不同的方法来强制在一个示例上使用更多的减速器?
1条答案
按热度按时间uhry853o1#
在hadoop1中,每个节点的map和reduce插槽都是在守护程序级别设置的,因此如果值发生更改,则需要重新启动tasktracker守护程序。
在emr上,每个示例类型的默认插槽数可以在以下位置找到:http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/hadoopmemorydefault_h1.0.3.html.
为了更改这些默认值,您需要使用如下引导操作
configure-hadoop
修改mapred.tasktracker.reduce.tasks.maximum
在hadoop守护进程启动之前。看到了吗http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/emr-plan-bootstrap.html#predefinedbootstrapactions_configurehadoop 更多细节。示例(需要修改以匹配用于创建集群的任何接口):
请注意,如果更改每个节点的插槽数,请务必进行调整
mapred.child.java.opts
为可用内存量提供合理的上限内存量。