【问题标题】:Can a mapper know how many mappers are running?一个映射器能知道有多少个映射器在运行吗?
【发布时间】:2012-04-27 05:43:32
【问题描述】:

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

【问题讨论】:

    标签: hadoop mapreduce cloudera


    【解决方案1】:

    可以通过mapred.map.tasksmared.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
    

    【讨论】:

    • 这个程序会给出程序中运行的mapper和reducer的数量吗?我们将在哪里编写这个程序?
    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多