Куда log4j записывает логи в режиме кластера? - PullRequest
0 голосов
/ 15 февраля 2019

Назначение - сохранить пользовательский журнал из потокового приложения в каталог HDFS или UNIX для потокового приложения

Я запускаю программу потокового воспроизведения в режиме кластера. Но журналы не записываются по указанному пути журнала.проверил как HDFS, так и локальный каталог. Отладочным свойством log4j я могу видеть файлы в действии.Я что-то пропустил?

- файлы log4j_driver.properties
--conf "spark.driver.extraJavaOptions = -Dlog4j.configuration = log4j_driver.properties -Dlog4j.debug = true"
--conf "spark.executor.extraJavaOptions = -Dlog4j.configuration = log4j_driver.properties -Dlog4j.debug = true "

Файл свойств Log4j

Файл свойств My Log4j-

log = / tmp / cc

log4j.rootLogger = INFO, переходящий
log4j.appender.rolling = org.apache.log4j.RollingFileAppender
log4j.appender.rolling.File = $ {log} /abc.log
log4j.appender.rolling.layout = org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.conversionPattern = [% d]% p% m(% c)% n
log4j.appender.rolling.maxFileSize = 2 КБ
log4j.appender.rolling.maxBackupIndex = 10
log4j.appender.rolling.encoding = UTF-8
log4j.logger.org.apache.spark = INFO
log4j.appender.rolling.ImmediateFlush = true
log4j.appender.rolling.Threshold = debug
log4j.appender.rolling.Append = true
log4j.logger.org.eclipse.jetty = INFO

Журнал драйвера кластера

log4j: переименование файла / tmp / cc / abc.log.2 в /tmp/cc/abc.log.3
log4j: переименование файла /tmp/cc/abc.log.1 в /tmp/cc/abc.log.2
log4j: переименование файла/tmp/cc/abc.log в /tmp/cc/abc.log.1
log4j: setFile вызывается: /tmp/cc/abc.log, false
log4j: setFile закончилась
log4j: переходover count = 5141
log4j: maxBackupIndex = 10
log4j: переименование файла /tmp/cc/abc.log.9 в /tmp/cc/abc.log.10
log4j: переименование файла / tmp /cc / abc.log.8 в /tmp/cc/abc.log.9
log4j: переименование файла /tmp/cc/abc.log.7 в /tmp/cc/abc.log.8
log4j: Переименование файла /tmp/cc/abc.log.6 в /tmp/cc/abc.log.7

Я читаю - мы можем указать - $ {spark.yarn.app.container.log.dir} /app.log в log4j, но не уверен, каков путь по умолчанию для этого свойства, или нам нужно также установить его вручную.Когда я запускал это приложение в режиме клиента - журналы отлично записываются в локальный каталог.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Лучший способ найти место записи журналов искры - использовать Spark UI, а в режиме кластера журналы драйверов находятся на одном из узлов кластера.

Spark UI предоставляет много информации.http://ashkrit.blogspot.com/2018/11/insights-from-spark-ui.html пост содержит некоторые детали.

0 голосов
/ 16 февраля 2019

Когда вы запускаете приложение Spark в режиме кластера (--deploy-mode cluster), log=/tmp/cc указывает на /tmp/cc, который находится в корне «контейнеров», которые запускают драйвер и исполнителя.Они будут на машинах в кластере.

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

Поскольку управлять им очень громоздкожурналы в распределенной среде, такие как Spark, менеджеры кластеров, поддерживаемые Spark (например, Hadoop YARN, Apache Mesos, Kubernetes), позволяют собирать журналы с компьютеров и делать их доступными для загрузки через веб-интерфейс или командную строку.В YARN это были бы журналы пряжи -applicationId .

0 голосов
/ 15 февраля 2019

В моем кластере пряжи журнал приложения потоковой передачи искры записывается на узле контейнера приложения. На самом деле есть словарь для записи журнала, который принадлежит приложению, и он настраивается полем с именем yarn.log.directory ?.Я не помню точное имя, чтобы вы могли проверить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...