更新时间:2024-05-11 GMT+08:00

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

运行中Spark应用的Container日志分散在多个节点中,本章节用于说明如何快速获取Container日志。

场景说明

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

  1. 获取application的完整日志:yarn logs --applicationId <appId> -out <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>

    例如: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>

    例如:yarn logs -applicationId application_1574856994802_0019 -containerId container_e01_1574856994802_0019_01_000003 -nodeAddress 192-168-1-1:8041

    执行结果:可获取任意Container的日志

    此命令的参数中需要填入nodeAddress,可通过以下命令获取:

    yarn node -list -all