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

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

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


person dOxxx    schedule 13.10.2016    source источник
comment
Вы выполняете свою работу в режиме клиента или кластера? Кроме того, какой менеджер кластера вы используете?   -  person Yuval Itzchakov    schedule 13.10.2016
comment
Я задал аналогичный вопрос здесь stackoverflow.com/q/35815386/6022341   -  person    schedule 13.10.2016
comment
@YuvalItzchakov Я запускаю драйвер в клиентском режиме.   -  person dOxxx    schedule 13.10.2016
comment
@YuvalItzchakov Как я уже упоминал в вопросе, это автономный кластер.   -  person dOxxx    schedule 13.10.2016


Ответы (1)


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

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

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

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

person Yuval Itzchakov    schedule 13.10.2016
comment
@dOxxx Добро пожаловать! Надеюсь, это помогло. - person Yuval Itzchakov; 13.10.2016