Spark продолжает перезапускать исполнителей после того, как пряжа убивает их - PullRequest
3 голосов
/ 21 мая 2019

Я тестировал с режимом кластера искровой нити.Задание на запуск выполняется в очереди с более низким приоритетом.И его контейнеры выгружаются, когда приходит задание с более высоким приоритетом.Однако он перезапускает контейнеры сразу после того, как их убили.И приложение с более высоким приоритетом убивает их снова.Так что приложения застряли в этом тупике.

Бесконечная повторная попытка исполнителей обсуждается здесь .Найденная ниже трассировка в логах.

2019-05-20 03:40:07 [dispatcher-event-loop-0] INFO TaskSetManager :54 Task 95 failed because while it was being computed, its executor exited for a reason unrelated to the task. Not counting this failure towards the maximum number of failures for the task.

Так что, кажется, любое количество повторов, которое я установил, даже не учитывается.Есть ли флаг, указывающий, что все сбои в executor должны быть учтены, и задание должно завершиться неудачей, когда произойдет maxFailures?

spark версия 2.11

1 Ответ

1 голос
/ 27 июня 2019

Spark проводит различие между кодом, генерирующим исключение, и внешними проблемами, т.е. ошибками кода и контейнерами. Но искра не рассматривает вытеснение как отказ контейнера.

См. ApplicationMaster.scala, здесь искра решает выйти, если достигнут предел отказа контейнера. Получает количество неудачных исполнителей от YarnAllocator. YarnAllocator обновляет свои отказавшие контейнеры в некоторых случаях. Но не для преимуществ, смотрите case ContainerExitStatus.PREEMPTED в той же функции.

Мы используем spark 2.0.2, где код немного отличается, но логика та же. Исправление, по-видимому, также обновляет сбойную коллекцию контейнеров.

...