在hadoop2.6.0中运行自定义投机者

lnvxswe2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(512)

我正在为我的自定义投机者编程,我查看了文档,默认情况下是“ DefaultSpeculator.java “而且是在课堂上 "MRAppMaster.java" (function createSpeculator()) 在hadoop的核心。我想知道在执行我的作业时是否可以在运行时更新/更改投机者,因为我需要在大约5个投机者之间进行测试。
谢谢!!!

bpsygsoo

bpsygsoo1#

可以在集群范围内或每个作业的基础上为map任务和reduce任务打开和关闭推测执行。
投机者在 MRAppMaster (map reduce应用程序主机)。正如您在问题中提到的,下面是 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.思辨:为Map任务启用思辨执行
mapreduce.reduce.思辨:为reduce任务启用思辨执行
yarn.app.mapreduce.am.job.投机者.class:投机者类
yarn.app.mapreduce.am.job.task.estimator.class:估计器类。投机者使用它来估计任务的运行时间。

相关问题