Что происходит, когда ошибка OutOfMemory происходит на спарк-контейнере - PullRequest
0 голосов
/ 23 октября 2018

Мое искровое приложение, которое работает на кластере пряжи, упало, и я пытаюсь определить основную причину.В журналах, которые я получил из пряжи с помощью yarn logs -applicationId <application_id>, я вижу, что целая группа соединений отказалась во время выборок блоков и одна ошибка нехватки памяти.Трудно сказать, что является основной причиной.У меня вопрос, что происходит, когда контейнер убит из-за исключения OutOfMemory.Таким образом, в журналах контейнера я вижу, как исполнитель запускается на контейнере

exec / bin / bash -c "LD_LIBRARY_PATH =" / usr / hdp / current / hadoop-client / lib /native: / usr / hdp / current / hadoop-client / lib / native / Linux-amd64-64: $ LD_LIBRARY_PATH "$ JAVA_HOME / bin / java -server -Xmx5120m '-DENVIRONMENT = pt' -Djava.io.tmpdir = $PWD / tmp '-Dspark.history.ui.port = 18081' -Dspark.driver.port = 39112 '-Dspark.yarn.app.container.log.dir = / hadoop / hdfs / drive5 / hadoop / yarn / log/ application_1539650094881_0116 / container_e111_1539650094881_0116_01_000024 -XX: OnOutOfMemoryError = 'kill% p' org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url искатель - в узле - ловушка для 133-го клиента.hadoop.tsl.com --cores 5 --app-id application_1539650094881_0116 - файл пути к классу пользователя: $ PWD / app .jar 1> / hadoop / hdfs / drive5 / hadoop / yarn / log/ application_1539650094881_0116 / container_e111_1539650094881_0116_01_000024 / stdout 2> / hadoop / hdfs / drive5 / hadoop / yarn /log / application_1539650094881_0116 / container_e111_1539650094881_0116_01_000024 / stderr "

Таким образом, данный контейнер получает OutOfMemory на более позднем этапе.Будет ли в этом случае возникать попытка получить новый контейнер или это приведет к сбою приложения?

Я также вижу много Container killed by YARN for exceeding memory limits. 6.0 GB of 6 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.Кажется, их много, пока приложение не рухнуло.Искра повторяет ли пороговое количество раз, чтобы перезапустить контейнер?

1 Ответ

0 голосов
/ 23 октября 2018

Обычно это происходит, когда распределение памяти по драйверу и исполнителям некорректно. Вы можете попробовать явно выделить память драйвера, используя spark.driver.memory в искровой конфигурации.

см. https://spark.apache.org/docs/latest/configuration.html#application-properties для дополнительных настроек

...