在Hadoop的Map-Reduce框架中,当应用程序运行时,是否可以知道程序中运行的工作器数量。工作器的数量与文件拆分的数量相同,换句话说,是否可以动态地知道文件拆分的数量?
可以通过mapred.map.tasks
和mared.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