Как сделать драйвер Spark устойчивым к перезагрузкам мастера?

У меня есть кластер Spark Standalone (не YARN/Mesos) и приложение драйвера, работающее (в режиме клиента), которое обращается к этому кластеру для выполнения своих задач. Тем не менее, если я выключаю и перезапускаю мастер и рабочих Spark, драйвер не подключается к мастеру и не возобновляет свою работу.

Возможно, я смущен отношениями между мастером Spark и водителем. В такой ситуации отвечает ли Мастер за повторное подключение к водителю? Если это так, мастер сериализует свое текущее состояние на диск где-то, что он может восстановить при перезагрузке?

1 ответ

Решение

В такой ситуации отвечает ли Мастер за повторное подключение к водителю? Если это так, мастер сериализует свое текущее состояние на диск где-то, что он может восстановить при перезагрузке?

Отношения между главным узлом и драйвером зависят от нескольких факторов. Во-первых, драйвер является тем хостом, на котором SparkContext/StreamingContext и отвечает за выполнение заданий. Это тот, кто создает DAG и содержит DAGScheduler а также TaskScheduler которые назначают этапы / задачи соответственно. Главный узел может служить хостом для драйвера в случае, если вы используете Spark Standalone и запускаете свою работу в "режиме клиента". Таким образом, мастер также размещает процесс драйвера, и если он умирает, драйвер умирает, как и с ним. В случае использования "режима кластера" драйвер находится на одном из рабочих узлов и часто связывается с мастером для получения статуса текущего выполняемого задания, отправки метаданных о состоянии завершенных пакетов и т. Д.

Запуск в автономном режиме: если мастер умирает и вы перезапускаете его, мастер не выполняет повторно выполненные ранее задания. Чтобы добиться этого, вы можете создать и снабдить кластер дополнительным главным узлом и настроить его так, чтобы ZooKeeper мог сохранять состояние мастеров и обмениваться между ними в случае сбоя. Когда вы настраиваете кластер таким образом, Мастер узнает о ранее выполненных заданиях и возобновляет их от вашего имени, а новый Мастер берет на себя инициативу.

Вы можете прочитать, как создать резервный узел Spark Master в документации.

Другие вопросы по тегам