Hadoop хранит промежуточные данные - выходные данные разлитого картографа на локальный диск, как указано параметром mapreduce.cluster.local.dir
в здесь .
Итак, скажем, задание Hadoop находится в середине процесса сокращенияфаза, и машина в кластере умирает.Это означает, что:
- весь прогресс / данные по задачам редуктора потеряны
- все выходные данные промежуточного преобразователя, сохраненные в локальной файловой системе этого компьютера, потеряны
- вам нужно перезапустить все преобразователи, выходные данные которых были потеряны в (2), а затем повторить фазу перемешивания, чтобы передать все данные в редукторы, которые погибли в (1), и затем, конечно, перезапустить задачи редуктора.
У меня такой вопрос:
- Правильно ли это рассуждение?И означает ли это, что даже при сбое хотя бы одной машины в задании Hadoop вы существенно удваиваете общее время выполнения задания?
- Если часто встречаются сбои машины, например, если вы работаете в точечных инстансах (в AWS или других), которые часто прерываются, имеет ли смысл хранить промежуточный вывод не в локальной файловой системе, а в HDFS?
- Знает ли Hadoop о повторном запуске картографов, которые потеряли свою производительность?Если другие редукторы все еще извлекали данные из этих картографов после их смерти, они приостановят выполнение?
Спасибо,
Арвин