如何在EMR上设置并行减速器的数量?

时间:2015-02-26 12:20:42

标签: hadoop emr mrjob

我正在使用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实例)。 / p>

我甚至看到该选项已在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没有选择该选项?或者是否有不同的方法可以在实例上强制使用更多数量的reducer?

1 个答案:

答案 0 :(得分:2)

使用Hadoop 1,每个节点的map和reduce插槽都设置在守护进程级别,因此如果值发生更改,则需要重新启动TaskTracker守护进程。

在EMR上,可以在http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/HadoopMemoryDefault_H1.0.3.html找到每种实例类型的默认插槽数。

为了更改这些默认值,您需要使用configure-hadoop之类的引导操作在Hadoop守护程序启动之前修改集群上的mapred.tasktracker.reduce.tasks.maximum。有关详细信息,请参阅http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html#PredefinedbootstrapActions_ConfigureHadoop

示例(需要进行修改以匹配用于创建集群的任何接口):

s3://<region>.elasticmapreduce/bootstrap-actions/configure-hadoop -m mapred.tasktracker.reduce.tasks.maximum=24

请注意,如果更改每个节点的插槽数,请务必调整mapred.child.java.opts以提供适用于可用内存量的高端内存量。