进入 Yarn 的原木。
就我而言,我有一个自定义 java 操作。如果您查看 Yarn UI,您必须深入了解 java 操作所在的映射器任务。所以在我的情况下,oozie wf 项目是 0070083-200420161025476-oozie-xxx-W 和 oozie job -log ${wf_id} 显示 java 操作 0070083-200420161025476-oozie-xxx-W@java1 失败并出现 Java 异常。我看不到任何背景。在 oozie Web UI 上,仅根据命令行上显示的内容填充“作业错误日志”。未显示实际的日志记录。 ooize job -info ${wf_id} 状态显示失败:
Actions
------------------------------------------------------------------------------------------------------------------------------------
ID Status Ext ID Ext Status Err Code
------------------------------------------------------------------------------------------------------------------------------------
0070083-200420161025476-oozie-xxx-W@:start: OK - OK -
------------------------------------------------------------------------------------------------------------------------------------
0070083-200420161025476-oozie-xxx-W@java1 ERROR job_1587370152078_1090 FAILED/KILLEDJA018
------------------------------------------------------------------------------------------------------------------------------------
0070083-200420161025476-oozie-xxx-W@fail OK - OK E0729
------------------------------------------------------------------------------------------------------------------------------------
您可以在 Web 控制台 Yarn Resource Manager UI 上搜索实际的纱线(不是在“纱线日志”Web 控制台中,这是纱线自己的日志,而不是它所托管的日志)。您可以通过查找 ooize wf 作业 id 在命令行上轻松地 grep 找到正确的 id:
user@host:~/apidemo$ yarn application --list -appStates FINISHED | grep 0070083-200420161025476
20/04/22 20:42:12 INFO client.AHSProxy: Connecting to Application History server at your.host.com/130.178.58.221:10200
20/04/22 20:42:12 INFO client.RequestHedgingRMFailoverProxyProvider: Looking for the active RM in [rm1, rm2]...
20/04/22 20:42:12 INFO client.RequestHedgingRMFailoverProxyProvider: Found active RM [rm2]
application_1587370152078_1090 oozie:launcher:T=java:W=java-whatever-sql-task-wf:A=java1:ID=0070083-200420161025476-oozie-xxx-W MAPREDUCE kerberos-id default FINISHED SUCCEEDED 100% https://your.host.com:8090/jobhistory/job/job_1587370152078_1090
user@host:~/apidemo$
请注意,oozie 说事情失败了。然而,动作的状态是“FINISHED”,而纱线应用状态是“SUCCESS”,这看起来很奇怪。
命令行输出还显示了作业历史记录的 URL。这将打开一个网页,将您带到运行您的 java 的父应用程序。如果您单击页面中的小日志链接,您会看到一些日志。如果您仔细查看该页面,它会运行 1 次“任务类型映射”操作。如果您单击该行中的链接,它会将您带到实际任务,在我的例子中是task_1587370152078_1090_m_000000。你必须点击它才能看到第一次尝试是attempt_1587370152078_1090_m_000000_0,然后在右侧你有一个很小的日志链接,它显示了一些更具体的日志记录。
你也可以在知道应用程序 id 后向 yarn 询问日志:
yarn logs -applicationId application_1587370152078_1090
这向我展示了非常详细的日志,包括我在控制台上看不到的自定义 java 日志记录,在那里我可以看到真正发生的事情。
请注意,如果您正在编写自定义代码,您希望让 yarn 设置 log4j 属性文件,而不是提供您自己的版本,以便 yarn 工具可以找到您的日志。代码将使用标志运行:
-Dlog4j.configuration=container-log4j.properties
详细日志显示添加到类路径的所有 jar。您应该确保您的自定义代码使用相同的 jar 和 log4j 版本。