在hadoop Map-Reduce框架中,当应用程序运行时,是否可以知道程序中运行的工作器数量。 worker的数量与文件拆分的数量相同,换句话说,是否可以动态地知道文件拆分的数量?
答案 0 :(得分:1)
可以通过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