Найти трассировку стека для задания рабочего процесса, запущенного из координатора Oozie - PullRequest
0 голосов
/ 16 января 2019

У меня есть координатор Oozie с этой спецификацией:

<coordinator-app name="my-coord" frequency="${coord:days(1)}"
                 start="${startDate}" end="${endDate}" timezone="UTC"
                 xmlns="uri:oozie:coordinator:0.4">
    <controls>
        <timeout>${timeout}</timeout>
    </controls>
    <action>
        <workflow>
            <app-path>${workflow}</app-path>
        </workflow>
    </action>
</coordinator-app>

Запущено задание рабочего процесса с запланированным номинальным временем запуска. Но позже журналы показали, что задание рабочего процесса перешло в состояние сбоя. Чтобы получить информацию о работе, я запустил:

oozie job -info 0000909-190113225141152-oozie-oozi-W

, которая предоставила полезную информацию, включая следующую трассировку исключения:

] Launcher exception: org.apache.spark.SparkException: Application application_1547448533998_26676 finished with failed status
org.apache.oozie.action.hadoop.JavaMainException: org.apache.spark.SparkException: Application application_1547448533998_26676 finished with failed status
        at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:59)
        at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:51)
        at org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:35)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:242)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1724)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: org.apache.spark.SparkException: Application application_1547448533998_26676 finished with failed status
        at org.apache.spark.deploy.yarn.Client.run(Client.scala:1122)
        at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1169)
        at org.apache.spark.deploy.yarn.Client.main(Client.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:56)
        ... 15 more

К сожалению, эта трассировка стека - очевидно, полученная из SparkSubmit - ничего не говорит о том, почему мое задание рабочего процесса (программа Scala) действительно провалилось.

Это кажется достаточно распространенным сценарием - сбой логики рабочего процесса и запуск собственной трассировки стека.

Есть ли какое-то другое место для поиска таких следов стека в настройке Hadoop / Oozie / Coordinator / Workflow?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Используйте yarn applications -list для просмотра списка заданий, запущенных в кластере Hadoop. Затем выполните следующие действия:

  1. Поиск в результирующем списке приложений ссылок на имя вашей программы Scala (запущенной из задания рабочего процесса Oozie).
  2. Получите идентификатор приложения, показанный для программы Scala.
  3. Затем запустите yarn logs -applicationId <application_ID>.

Результирующие журналы должны показывать журналы вашей программы Scala, перемежающиеся с другими журналами, не созданными программой Scala. Помогает, если ваша Scala-программа встраивает уникальный префикс в каждую директиву регистрации, чтобы вы могли отфильтровывать журналы своей программы от других.

0 голосов
/ 18 января 2019

В среде Hadoop вы можете получить доступ ко всем журналам приложений из представления Yarn Resource Manager.Он должен показать вам список всех запущенных приложений и связанных с ними журналов.Если вы работаете с этой системой в кластере HDInsight в Azure, дополнительную информацию вы найдете по этой ссылке https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-access-yarn-app-logs-linux. Здесь журналы можно найти в веб-представлении Ambari View -> Yarn -> Resource Manager.В противном случае, возможно, у вас может быть что-то похожее в вашей среде.

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