更新时间:2025-05-28 GMT+08:00
获取运行中Spark应用的Container日志
场景说明
在运行Spark应用时,获取Container日志对于排查问题、监控应用状态非常重要。运行中Spark应用的Container日志分散在多个节点中,本章节用于说明如何快速获取Spark应用的Container日志。
获取日志
可以通过yarn logs命令获取运行在Yarn上的应用的日志,针对不同的场景,可以使用以下命令获取需要的日志:
- 执行如下命令,获取application的完整日志:
yarn logs --applicationId <appId> -out <outputDir>
其中,<appId> 为Spark应用的ID,<outputDir>为输出日志路径。例如:
yarn logs --applicationId application_1574856994802_0016 -out /opt/test
执行结果:
- 如果该application处于运行状态,则无法获取dead状态的container日志。
- 如果该application处于结束状态,则可以获取全部归档的container日志。
- 执行如下命令,获取指定Container日志:
yarn logs -applicationId <appId> -containerId <containerId>
其中,<containerId>为查看日志的Container ID。例如:
yarn logs -applicationId application_1574856994802_0018 -containerId container_e01_1574856994802_0018_01_000003
执行结果:
- 如果该application处于运行状态,则无法获取dead状态的Container日志。
- 如果该application处于结束状态,则可获取任意Container的日志。
- 执行如下命令,获取任意状态的Container日志:
yarn logs -applicationId <appId> -containerId <containerId> -nodeAddress <nodeAddress>
其中<nodeAddress>为节点IP和端口,可通过以下命令获取:
yarn node -list -all
例如:
yarn logs -applicationId application_1574856994802_0019 -containerId container_e01_1574856994802_0019_01_000003 -nodeAddress 192-168-1-1:8041
执行结果:可获取任意Container的日志。
父主题: Spark运维管理