映射器可以知道有多少映射器正在运行吗?

时间:2012-04-27 05:43:33

标签: hadoop mapreduce cloudera

在hadoop Map-Reduce框架中,当应用程序运行时,是否可以知道程序中运行的工作器数量。 worker的数量与文件拆分的数量相同,换句话说,是否可以动态地知道文件拆分的数量?

1 个答案:

答案 0 :(得分:1)

可以通过mapred.map.tasksmared.reduce.tasks配置属性(提交作业后)查询构成作业的地图任务和减速器任务的总数。

如果您查看来源,可以看到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