如何限制并发运行的map任务?

Hai*_*ang 7 jobs hadoop mapreduce map task

我的hadoop版本是1.0.2.现在我想要同时运行10个地图任务.我找到了2个与此问题相关的变量.

a)mapred.job.map.capacity

但在我的hadoop版本中,此参数似乎已被放弃.

b)mapred.jobtracker.taskScheduler.maxRunningTasksPerJob(http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.collector/1.0.2/mapred-default.xml)

我将此变量设置如下:

Configuration conf = new Configuration();
conf.set("date", date);
conf.set("mapred.job.queue.name", "hadoop");
conf.set("mapred.jobtracker.taskScheduler.maxRunningTasksPerJob", "10");

DistributedCache.createSymlink(conf);
Job job = new Job(conf, "ConstructApkDownload_" + date);
...
Run Code Online (Sandbox Code Playgroud)

问题是它不起作用.作业开始时,仍有超过50张地图正在运行.

查看hadoop文档后,我找不到另一个限制并发运行的map任务.希望有人可以帮助我,谢谢.

=====================

我找到了关于这个问题的答案,在这里与其他可能感兴趣的人分享.

使用公平调度程序,使用配置参数maxMaps在分配文件(fair-scheduler.xml)中设置池的最大并发任务槽.然后,当您提交作业时,只需将作业的队列设置为相应的池.

Dav*_*ave 5

您可以将值设置为mapred.jobtracker.maxtasks.per.job-1以外的值(默认值).这限制了作业可以使用的同时映射或减少任务的数量.

该变量描述为:

单个作业的最大任务数.值-1表示没有最大值.

我认为有计划添加mapred.max.maps.per.nodemapred.max.reduces.per.node工作配置,但他们从来没有让它发布.


Joe*_*oel 5

如果您使用的是 Hadoop 2.7 或更高版本,则可以使用mapreduce.job.running.map.limitmapreduce.job.running.reduce.limit来限制每个作业级别的映射和归约任务。

修复JIRA 票证


小智 1

mapred.tasktracker.map.tasks.maximum 是限制一次可以运行的地图任务数量的属性。在您的mapred-site.xml 中配置它。

请参阅http://wiki.apache.org/hadoop/FAQ中的 2.7

  • 我认为这个变量控制的是“在一个任务跟踪器中”运行的地图任务的数量,而不是“在一项作业中”。 (2认同)