2016-08-09 2 views
0

Я использую oozie в среде CDH5. Я также использую веб-консоль oozie. Я не вижу ни одного из журналов из моего приложения. Я могу видеть журналы сундуков, искровые журналы и т. Д .; но я не вижу конкретных журналов приложений.Почему мои журналы уровня приложений исчезают при выполнении в oozie?

В моем приложении я включил SRC/основной/ресурсы/log4j.properties

# Root logger option 
log4j.rootLogger=INFO, stdout 

# Direct log messages to stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

В моем oozie процессе У меня есть Java-действия и искровые действия.

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

ответ

3

Oozie запускает каждое действие в другой задаче «пусковая установка» - фактически работа YARN с одним картографом (см. Нижеприведенные исключения).

Всякий раз, когда вы видите «внешний идентификатор» в виде job_000000000_0000, то вы можете достичь бревна пряжи для application_000000_0000(да, «работа» является наследием именования от Hadoop 1, по-прежнему используются JobHistory службы, но ПРЯЖА имеет другое соглашение об именах).

Ваш выход приложения фактически сбрасывали в журналы пряжу для этого Oozie «запуска»

  • ваш Stderr сваливается как есть и могут быть получены в разделе «Stderr»
  • ваш StdOut сбрасывается с префиксом на каждой строке (этот префикс используется Oozie для управления своим трюком <capture_output/> для действий Shell и Pig) в конце ужасно подробно «stdout» раздел
  • и nothin г попадает в раздел «системного журнала» AFAIK

Итог:

  1. запустить oozie job -info ******, чтобы получить список действий и соответствующие «внешние идентификаторы» для вашего Oozie выполнения технологического процесса
  2. для каждого job_*****_** наследство ID, запустить yarn logs -applicationId application_*****_** | more обезжиренную глобальные журналы пряжи, а затем увеличить на конкретные журналах приложений
  3. теперь вы можете попытаться автоматизировать эту вещь ... получайте удовольствие                     B-)


Исключение из "запуска" Oozie принципа работы - по электронной почте Action/Действие файлсистемы просто API вызовы выполняются непосредственно из процесса сервера Oozie; и действие MapReduce запускает регулярное задание YARN с несколькими Mappers и Reducers.

+0

В качестве примечания, если вы хотите отправить свое приложение. войдите в систему мониторинга, тогда вы можете запустить Flume agent * (или пару агентов для HA) * и отправить свои журналы на провод через Log4J Flume appender. Это позволило бы избежать перекоса в журналы YARN * ex post *. –

+0

Еще одна вещь, которую я вижу, заключается в том, что если идентификатор задания для искрового приложения - job_000000000_0000, тогда мне нужно получить журналы для job_000000000_0001, чтобы увидеть журналы искровых приложений ... – hba

+1

Ах, это потому, что начинается работа «запуска» Оози Драйвер Spark ** **, но затем драйвер запускает другое задание YARN для своих ** исполнителей ** - вы должны снять первый журнал YARN, чтобы извлечь идентификатор второго журнала YARN. Тот же метод для действий Sqoop или Hive или Pig, которые также динамически генерируют свои собственные задания YARN - и у Oozie нет очевидного способа отслеживать их. –