Apache Spark: журналы сбора мусора для водителя
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 программным путем, кажется, не вступает в силу по какой-то причине.
Ответы (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
Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- apache-spark Как сделать акулу / искру очистить кеш?
- apache-spark (PySpark) Вложенные списки после reduByKey
- apache-spark Spark java.lang.OutOfMemoryError: пространство кучи Java
- apache-spark Apache Spark: map vs mapPartitions?
- apache-spark Spark: лучшая практика для извлечения больших данных из RDD на локальный компьютер
- garbage-collection Что такого плохого в использовании GC.Collect ()?
- garbage-collection Есть ли деструктор для Java?
- garbage-collection Лучшая практика для принудительного сбора мусора в C #
- garbage-collection Влияет ли назначение объектов на null в Java на сборку мусора?
- garbage-collection Когда можно позвонить в GC.Collect?
- google-cloud-dataproc Примеры Dataproc + BigQuery - есть ли в наличии?
- google-cloud-dataproc Гуава версия при использовании спарк-оболочки
- google-cloud-dataproc Pausing Dataproc cluster - Google Compute engine
- google-cloud-dataproc SparkR на Dataproc (Spark 1.5.x) не работает
- google-cloud-dataproc Мониторинг сеансов Spark-Shell или PySpark-Shell в кластере Dataproc