2015-11-30 5 views
0

Я программирую свой собственный спекулянт, я просмотрел документацию и по умолчанию является «DefaultSpeculator.java» и установлен в классе "MRAppMaster.java" (function createSpeculator()) в ядре Hadoop. Я хочу знать, можете ли вы обновить/изменить спекулянт во время выполнения при выполнении моей работы, потому что мне нужно протестировать около 5 спекулянтов.Запуск специального спекулянта в Hadoop 2.6.0

Спасибо !!!

ответ

1

Спекулятивное выполнение может быть включено и выключено для задач карты и сокращения задач на уровне кластера или на основе работы.

Спекулянт создается в 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, чтобы увидеть, если спекулятивное выполнение включенного либо карты или уменьшить задачи, а затем создает спекулянт.

Поскольку спекулянт создан внутри MRAppMaster, вы можете включить свой специализированный спекулянт для каждой работы.

Ниже приведен умозрительные свойства исполнения:

  • mapreduce.map.speculative: Включить рискованное выполнение для карты задач
  • mapreduce.reduce.speculative: Включить спекулятивное выполнение для уменьшения задач
  • yarn.app.mapreduce.am.job.speculator.class: Категория спекулянта
  • yarn.app.mapreduce.am.job.task.estimator.class: класс оценщика. Это используется спекулятором для оценки времени выполнения задачи.
+0

благодарит за ответ! – WilD

Смежные вопросы