我正在为我的自定义投机者编程,我查看了文档,默认情况下是“ DefaultSpeculator.java “而且是在课堂上 "MRAppMaster.java" (function createSpeculator()) 在hadoop的核心。我想知道在执行我的作业时是否可以在运行时更新/更改投机者,因为我需要在大约5个投机者之间进行测试。谢谢!!!
DefaultSpeculator.java
"MRAppMaster.java" (function createSpeculator())
bpsygsoo1#
可以在集群范围内或每个作业的基础上为map任务和reduce任务打开和关闭推测执行。投机者在 MRAppMaster (map reduce应用程序主机)。正如您在问题中提到的,下面是 MRAppMaster::serviceInit() 函数,它示例化投机者:
MRAppMaster
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:估计器类。投机者使用它来估计任务的运行时间。
JobConfig
1条答案
按热度按时间bpsygsoo1#
可以在集群范围内或每个作业的基础上为map任务和reduce任务打开和关闭推测执行。
投机者在
MRAppMaster
(map reduce应用程序主机)。正如您在问题中提到的,下面是MRAppMaster::serviceInit()
函数,它示例化投机者:它检查
JobConfig
,以查看是否为map或reduce任务启用了推测执行,然后创建推测程序。因为投机者是在
MRAppMaster
,您可以为每个作业启用自定义投机者。以下是推测执行属性:
mapreduce.map.思辨:为Map任务启用思辨执行
mapreduce.reduce.思辨:为reduce任务启用思辨执行
yarn.app.mapreduce.am.job.投机者.class:投机者类
yarn.app.mapreduce.am.job.task.estimator.class:估计器类。投机者使用它来估计任务的运行时间。