Подтвердить что ты не робот

Выполнение спекулятивных задач Hadoop

В документе Google MapReduce у них есть задача резервного копирования, я думаю, что это то же самое со спекулятивной задачей в Hadoop. Как реализуется спекулятивная задача? Когда я начинаю спекулятивную задачу, начинается ли задание с самого начала, как старшее и медленное, или просто начинаем с того, где достигнута старая задача (если это так, нужно ли копировать все промежуточные состояния и данные?)

4b9b3361

Ответ 1

Одной из проблем системы Hadoop является то, что, деля задачи на многие узлы, несколько медленных узлов могут ограничить скорость остальной части программы.

Задачи могут быть медленными по разным причинам, включая ухудшение аппаратного обеспечения или неправильную настройку программного обеспечения, но причины могут быть трудно обнаружить, поскольку задачи по-прежнему успешно завершены, хотя и после более длительного времени, чем ожидалось. Hadoop не пытается диагностировать и исправлять медленные задачи; вместо этого он пытается обнаружить, когда задача работает медленнее, чем ожидалось, и запускает другую, эквивалентную задачу в качестве резервной копии. Это называется спекулятивным выполнением задач.

Например, если один node имеет контроллер медленного диска, то он может считывать свой вход только на 10% скорости всех остальных узлов. Поэтому, когда 99 задач карты уже завершены, система все еще ждет завершения последней задачи карты, которая занимает гораздо больше времени, чем все остальные узлы.

Заставляя задачи работать изолированно друг от друга, отдельные задачи не знают, откуда берутся их исходные данные. Задачи доверяют платформе Hadoop, чтобы просто доставить соответствующий вход. Поэтому один и тот же ввод может обрабатываться несколько раз параллельно, чтобы использовать различия в возможностях машины. По мере того, как большинство задач в задании заканчиваются, платформа Hadoop будет планировать избыточные копии оставшихся задач на нескольких узлах, которые не выполняют другую работу. Этот процесс называется спекулятивным исполнением. Когда задачи завершены, они сообщают об этом факту JobTracker. Какая бы ни была завершена копия задачи, она становится окончательной копией. Если другие копии выполнялись спекулятивно, Hadoop сообщает TaskTrackers отказаться от задач и отбросить их результаты. Затем редукторы получают свои входные данные из того, что успешно завершил Mapper.

Спекулятивное исполнение включено по умолчанию. Вы можете отключить спекулятивное выполнение для картографов и редукторов, установив для параметров mapred.map.tasks.speculative.execution и mapred.reduce.tasks.speculative.execution JobConf значение false, соответственно, используя старый API, в то время как с более новым API вы можете рассмотреть возможность изменения mapreduce.map.speculative и mapreduce.reduce.speculative.

Таким образом, чтобы ответить на ваш вопрос, он начинает заново и не имеет никакого отношения к тому, насколько другая задача выполнена/завершена.

Ссылка: http://developer.yahoo.com/hadoop/tutorial/module4.html