В настоящее время мы сталкиваемся с проблемой, когда рабочие места Spark видят, как несколько контейнеров погибают за превышение пределов памяти при работе на YARN.SPARK: YARN убивает контейнеры для превышения пределов памяти
16/11/18 17:58:52 WARN TaskSetManager: Lost task 53.0 in stage 49.0 (TID 32715, XXXXXXXXXX):
ExecutorLostFailure (executor 23 exited caused by one of the running tasks)
Reason: Container killed by YARN for exceeding memory limits. 12.4 GB of 12 GB physical memory used.
Consider boosting spark.yarn.executor.memoryOverhead.
Следующие аргументы пропускают через искру подать:
--executor-memory=6G
--driver-memory=4G
--conf "spark.yarn.executor.memoryOverhead=6G"`
Я использую Спарк 2.0.1.
Мы увеличили значение memoryOverhead до этого значения после прочтения нескольких сообщений о контейнерах для уничтожения YARN (например, How to avoid Spark executor from getting lost and yarn container killing it due to memory limit?).
Учитывая мои параметры и сообщение журнала, кажется, что «Yarn убивает исполнителей, когда его использование памяти больше, чем (executor-memory + executor.memoryOverhead)».
Нецелесообразно продолжать увеличивать эти накладные расходы в надежде, что в итоге мы найдем значение, при котором эти ошибки не будут возникать. Мы рассматриваем эту проблему на нескольких разных работах. Я был бы признателен за любые предложения по параметрам, которые я должен изменить, вещи, которые я должен проверить, где я должен начинать искать отладки и т. Д. Могу предоставить дополнительные параметры конфигурации и т. Д.
Вы используете Spark SQL? –
Да, экстенсивно – user2682459
Когда вы используете огромные наборы данных, вы можете попытаться увеличить 'spark.default.parallelism' и' spark.sql.shuffle.partitions' в 'spark-defaults.conf' до более высокого значения. Это уменьшит использование памяти. –