Apache Spark: журналы сбора мусора для водителя

java apache-spark garbage-collection google-cloud-dataproc

2000 просмотра

1 ответ

Мой драйвер Spark исчерпал память после 10 часов работы с ошибкой Exception in thread "dispatcher-event-loop-17" java.lang.OutOfMemoryError: GC overhead limit exceeded. Для дальнейшей отладки я включил режим G1GC, а также опцию GC logs, spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties -XX:+PrintFlagsFinal -XX:+PrintReferenceGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy -XX:+UnlockDiagnosticVMOptions -XX:+G1SummarizeConcMark -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp но похоже, что это не влияет на драйвер.

Работа снова застряла на драйвере через 10 часов, и я не вижу никаких журналов GC под stdout на узле драйвера под /var/log/hadoop-yar/userlogs/[application-id]/[container-id]/stdout- так что не уверен, где еще искать. Согласно документации по настройке Spark GC , похоже, что эти настройки происходят только на рабочих узлах (что я вижу в этом случае, а также у рабочих есть журналы GC в stdout после того, как я использовал те же самые конфигурации под spark.executor.extraJavaOptions). Есть ли способ включить / получить журналы GC от драйвера? В Spark UI -> Environment я вижу эти параметры, spark.driver.extraJavaOptionsпоэтому я предположил, что это будет работать.

Среда: кластер работает на Google Dataproc, и я использую /usr/bin/spark-submit --master yarn --deploy-mode cluster ...мастер для отправки работ.

РЕДАКТИРОВАТЬ Установка тех же параметров для драйвера во время spark-submitработы команды, и я могу видеть журналы GC на стандартный вывод для драйвера. Просто то, что установка параметров через SparkConf программным путем, кажется, не вступает в силу по какой-то причине.

Автор: noobNeverything Источник Размещён: 30.09.2019 12:35

Ответы (1)


3 плюса

Я считаю, spark.driver.extraJavaOptionsчто обрабатывается SparkSubmit.scalaи должен быть передан при вызове. Для этого с Dataproc вы можете добавить это в поле свойств ( --propertiesв gcloud dataproc jobs submit spark).

Также вместо этого -Dlog4j.configuration=log4j.propertiesвы можете использовать это руководство для настройки подробного ведения журнала.

Я мог видеть журналы драйвера GC с: gcloud dataproc jobs submit spark --cluster CLUSTER_NAME --class org.apache.spark.examples.SparkPi --jars file:///usr/lib/spark/examples/jars/spark-examples.jar --driver-log-levels ROOT=DEBUG --properties=spark.driver.extraJavaOptions="-XX:+PrintFlagsFinal -XX:+PrintReferenceGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy -XX:+UnlockDiagnosticVMOptions -XX:+G1SummarizeConcMark -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp" --

Вы, вероятно, не нуждаетесь --driver-log-levels ROOT=DEBUG, но можете скопировать в вашу конфигурацию регистрации из log4j.properties. Если вы действительно хотите использовать log4j.properties, вы можете использовать--files log4j.properties

Автор: Patrick Clay Размещён: 25.07.2017 05:30
Вопросы из категории :
32x32