Мне интересно узнать, как Spark реализует отказоустойчивость. В своей бумаге они описывают, как они сделайте это для «узких зависимостей», таких как карта, которая довольно прямолинейна. Однако они не указывают, что они делают, если узел выходит из строя после широкой зависимости, такой как операция сортировки. Единственное, что я смог найти, это:
Напротив, в графе происхождения с широкими зависимостями один неисправный узел может привести к потере некоторого раздела из всех предков RDD, что потребует полного повторного выполнения.
Чего на самом деле недостаточно для понимания происходящего.
После сортировки невозможно сказать, откуда взялись данные, хранящиеся на узле, где произошел сбой, без сохранения какой-либо дополнительной информации. Итак, если после сортировки происходит сбой, выполняется ли заново вся родословная или есть какой-то механизм, уменьшающий вычислительные затраты? А как насчет других широких зависимостей?