更新时间:2026-09-10 GMT+08:00
分享

获取运行中Spark应用的Container日志

场景说明

在运行Spark应用时,用户可能遇到任务执行失败、数据倾斜、Container异常退出等问题,需要通过查看Container日志来定位原因。然而,Spark应用的Container日志分散在集群的多个节点上,手动逐台登录节点收集日志效率低下,尤其当集群规模较大时,定位问题Container的日志更加困难。YARN提供了yarn logs命令,可以快速聚合获取运行在YARN上的Spark应用Container日志,帮助用户高效排查问题。

本文适用于以下场景:

  • 排查Spark应用任务失败原因,需要查看特定Container的日志。
  • 监控Spark应用运行状态,需要批量获取所有Container的日志。
  • 应用运行过程中需要实时查看某个Container的日志输出。

使用yarn logs命令获取Container日志

可以通过yarn logs命令获取运行在Yarn上的应用的日志,针对不同的场景,可以使用以下命令获取需要的日志:

  1. 执行如下命令,获取application的完整日志:
    yarn logs --applicationId <appId> -out <outputDir>

    其中,<appId> 为Spark应用的ID,<outputDir>为输出日志路径。例如:

    yarn logs --applicationId application_1574856994802_0016 -out /opt/test

    执行结果:

    1. 如果该application处于运行状态,则无法获取dead状态的container日志。
    2. 如果该application处于结束状态,则可以获取全部归档的container日志。
  2. 执行如下命令,获取指定Container日志:
    yarn logs -applicationId <appId> -containerId <containerId>

    其中,<containerId>为查看日志的Container ID。例如:

    yarn logs -applicationId application_1574856994802_0018 -containerId container_e01_1574856994802_0018_01_000003

    执行结果:

    1. 如果该application处于运行状态,则无法获取dead状态的Container日志。
    2. 如果该application处于结束状态,则可获取任意Container的日志。
  3. 执行如下命令,获取任意状态的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的日志。

常见问题

Q:执行yarn logs命令提示“No aggregation enabled for”或日志为空如何处理?

A:该问题通常是因为YARN日志聚合功能未开启。请在yarn-site.xml中确认yarn.log-aggregation-enable参数设置为true,并重启Yarn服务使配置生效。

Q:使用--nodeAddress参数获取运行中Container日志时,提示连接超时怎么办?

A:请检查以下事项:

1. 确认节点IP和端口是否正确,可通过yarn node -list -all命令查看节点地址。

2. 确认客户端与目标节点之间的网络是否互通。

3. 确认目标节点的NodeManager HTTP端口(默认8041)是否开放。

相关文档

  • 如需了解YARN日志聚合功能的配置方法,请参见配置Container日志聚合功能
  • MRS集群创建成功后,用户可自行安装集群客户端,用于连接集群内组件服务端,进行组件连接、作业提交等任务。集群客户端可以安装在集群内的节点上,也可以安装在集群外的节点上,具体操作请参考安装MRS客户端
  • 了解Spark常用配置参数的含义和用法,请参考Spark常用配置参数

相关文档