Непонимание отказоустойчивости искры RDD

Многие говорят:

Spark не реплицирует данные в hdfs.

Spark упорядочивает операции в графе DAG. Spark строит линию RDD. Если RDD утерян, его можно восстановить с помощью графа происхождения. Таким образом, нет необходимости в репликации данных, поскольку RDDS можно пересчитать из графа происхождения.

И мой вопрос:

Если узел выходит из строя, spark только пересчитывает разделы RDD, потерянные на этом узле, но откуда берется источник данных, необходимый для процесса пересчета? Вы имеете в виду, что его родительский RDD все еще существует, когда узел выходит из строя? Что, если RDD, который потерял некоторые разделы, не имеет родительского RDD (например, RDD из приемника потоковой передачи искры)?


person Gary Gauh    schedule 06.09.2017    source источник


Ответы (2)


Что, если мы что-то потеряем во время вычислений?

  • Положитесь на ключевую информацию от MR! Детерминизм обеспечивает безопасное повторное вычисление.
  • Отслеживайте «происхождение» каждого RDD. При необходимости можно пересчитать от родителей.
  • Интересно: нужно только записать крошечное состояние, чтобы выполнить пересчет.

    Need parent pointer, function applied, and a few other bits.
    Log 10 KB per transform rather than re-output 1 TB -> 2 TB
    

Источник

Дочерний RDD — это метаданные, которые описывают, как вычислить RDD из родительского RDD. Подробнее читайте в Что такое зависимость RDD в Spark?

person gsamaras    schedule 06.09.2017

Если узел выходит из строя, spark только пересчитывает разделы RDD, потерянные на этом узле, но откуда берется источник данных, необходимый для процесса пересчета? Вы имеете в виду, что его родительский RDD все еще существует, когда узел выходит из строя?

Основная идея заключается в том, что вы можете использовать родословную для восстановления утерянных RDD, потому что RDD

  • построен из другого RDD или
  • построен из данных в стабильном хранилище.

(источник: документ RDD, начало раздела 2.1 )

Если какое-то СДР утеряно, вы можете просто вернуться в родословную, пока не дойдете до какого-нибудь СДР или исходной записи данных, которая все еще доступна.

Данные в стабильном хранилище реплицируются на несколько узлов, поэтому их потеря маловероятна.

В отличие от того, что я читал об потоковых приемниках, полученные данные также сохраняются в стабильном хранилище, поэтому они ведут себя так же, как и любой другой источник данных.

person carbeer    schedule 08.12.2019