Перезапускается ли все задание при сбое одной задачи

#apache-flink

#apache-flink

Вопрос:

У меня есть задание, в котором есть операторы с отслеживанием состояния, а также включена контрольная точка. Одна из задач оператора staful по какой-либо причине завершается с ошибкой и должна быть перезапущена и восстановить контрольное состояние.

Я бы спросил, какое из следующих действий является поведением при перезапуске:

  1. перезапускается и восстанавливается только сбойная задача
  2. все задачи оператора (содержащие неудачную задачу) перезапускаются и восстанавливаются
  3. все задание перезапускается и восстанавливается

Ответ №1:

Перезапускается ли все задание при сбое одной задачи?

tldr: для потоковых заданий ответ обычно «да», но не обязательно.

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

Перезапуск только сбойной задачи приведет к несоответствиям и сделает невозможным предоставление семантики «ровно один раз», если только сбойная задача не зависела ни от каких вышестоящих задач, и от нее не зависели никакие нижестоящие задачи.

Что может сделать Flink, так это восстановить состояние и перезапустить обработку на основе областей отработки отказа, которые учитывают эти зависимости в графе заданий. В случае потокового задания, только если задание смущающе параллельное, можно выполнить меньше, чем восстановление и перезапуск всего задания. Таким образом, в случае смущающе параллельного задания восстанавливается и перезапускается только сбойная область (которая включает в себя все ее подзадачи от источника до приемника), в то время как другие регионы продолжают работать.

Этот подход используется, если jobmanager.execution.failover-strategy установлено значение region , которое было по умолчанию с Flink 1.10.

Чтобы узнать больше об этом, см. FLIP-1: детальное восстановление после сбоев задачи и объявление о выпуске Apache Flink 1.9.0, в котором была представлена эта функция.

Комментарии:

1. спасибо @david-anderson за четкий ответ1