运行 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。这被投机者用来估计任务的 运行 时间。
我正在编写我的自定义推测器,我查看了文档,默认情况下是“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。这被投机者用来估计任务的 运行 时间。