运行 Hadoop 2.6.0 中的自定义推测器

Run custom Speculator in Hadoop 2.6.0

我正在编写我的自定义推测器,我查看了文档,默认情况下是“DefaultSpeculator.java”,并且在 Hadoop 核心的 class "MRAppMaster.java" (function createSpeculator()) 中设置。我想知道在执行我的工作时你是否可以在运行时 update/change 投机者,因为我需要在大约 5 个投机者之间进行测试。

谢谢!!!

可以在集群范围或每个作业的基础上为 map 任务和 reduce 任务打开和关闭推测执行。

推测器在MRAppMaster(Map-Reduce Application Master)中实例化。正如您在问题中提到的,以下是 MRAppMaster::serviceInit() 函数中的一段代码,它实例化了投机者:

if (conf.getBoolean(MRJobConfig.MAP_SPECULATIVE, false)
      || conf.getBoolean(MRJobConfig.REDUCE_SPECULATIVE, false)) {
    //optional service to speculate on task attempts' progress
    speculator = createSpeculator(conf, context);
    addIfService(speculator);
}

它检查 JobConfig,以查看是否为 Map 或 Reduce 任务打开了推测执行,然后创建推测器。

由于推测器是在 MRAppMaster 中创建的,您可以为每个作业启用自定义推测器。

以下是推测执行属性:

  • mapreduce.map.speculative: 启用映射任务的推测执行
  • mapreduce.reduce.speculative:为reduce启用推测执行 任务
  • yarn.app.mapreduce.am.job.speculator.class:投机者class
  • yarn.app.mapreduce.am.job.task.estimator.class:估算器class。这被投机者用来估计任务的 运行 时间。