【发布时间】:2012-04-27 05:43:32
【问题描述】:
在hadoop Map-Reduce 框架中,当应用程序运行时,是否可以知道程序中运行的worker 数量。 worker 的数量与文件拆分的数量相同,也就是说,是否可以动态知道文件拆分的数量?
【问题讨论】:
在hadoop Map-Reduce 框架中,当应用程序运行时,是否可以知道程序中运行的worker 数量。 worker 的数量与文件拆分的数量相同,也就是说,是否可以动态知道文件拆分的数量?
【问题讨论】:
可以通过mapred.map.tasks 和mared.reduce.tasks 配置属性查询构成作业的map 任务和reducer 任务的总数(一旦您的作业已提交)。
如果您查看源代码,您可以看到这是在 org.apache.hadoop.mapred.JobClient:784 中设置的(是的,它的拆分数量相同)
// Create the splits for the job
LOG.debug("Creating splits at " + fs.makeQualified(submitSplitFile));
int maps;
if (job.getUseNewMapper()) {
maps = writeNewSplits(context, submitSplitFile);
} else {
maps = writeOldSplits(job, submitSplitFile);
}
job.set("mapred.job.split.file", submitSplitFile.toString());
job.setNumMapTasks(maps); // here is where mapred.map.tasks is set
【讨论】: