Что происходит в Hadoop, когда промежуточные данные (т. Е. Выход разлива картографа) теряются? - PullRequest
0 голосов
/ 01 декабря 2018

Hadoop хранит промежуточные данные - выходные данные разлитого картографа на локальный диск, как указано параметром mapreduce.cluster.local.dir в здесь .

Итак, скажем, задание Hadoop находится в середине процесса сокращенияфаза, и машина в кластере умирает.Это означает, что:

  1. весь прогресс / данные по задачам редуктора потеряны
  2. все выходные данные промежуточного преобразователя, сохраненные в локальной файловой системе этого компьютера, потеряны
  3. вам нужно перезапустить все преобразователи, выходные данные которых были потеряны в (2), а затем повторить фазу перемешивания, чтобы передать все данные в редукторы, которые погибли в (1), и затем, конечно, перезапустить задачи редуктора.

У меня такой вопрос:

  • Правильно ли это рассуждение?И означает ли это, что даже при сбое хотя бы одной машины в задании Hadoop вы существенно удваиваете общее время выполнения задания?
  • Если часто встречаются сбои машины, например, если вы работаете в точечных инстансах (в AWS или других), которые часто прерываются, имеет ли смысл хранить промежуточный вывод не в локальной файловой системе, а в HDFS?
  • Знает ли Hadoop о повторном запуске картографов, которые потеряли свою производительность?Если другие редукторы все еще извлекали данные из этих картографов после их смерти, они приостановят выполнение?

Спасибо,

Арвин

...