在基于 Windows 的 HDInsight 上访问 YARN 应用程序日志

本文档介绍了如何访问 Azure HDInsight 中基于 Windows 的 Hadoop 群集上已完成的 YARN 应用程序的日志。

Important

本文档中的信息仅适用于基于 Windows 的 HDInsight 群集。 Linux 是 HDInsight 3.4 或更高版本上使用的唯一操作系统。 有关详细信息,请参阅 HDInsight 在 Windows 上停用。 有关在基于 Linux 的 HDInsight 群集上访问 YARN 日志的信息,请参阅在 HDInsight 上基于 Linux 的 Hadoop 中访问 YARN 应用程序日志

先决条件

YARN Timeline Server

YARN Timeline Server 通过两个不同接口提供完成应用程序的通用信息,以及架构特定应用程序信息。 具体而言:

  • 已通过 3.1.1.374 版或更高版本启用存储和检索 HDInsight 群集的通用应用程序信息。
  • Timeline Server 的架构特定应用程序信息组件目前不适用于 HDInsight 群集。

通用应用程序信息包含以下类型的数据:

  • 应用程序 ID(应用程序的唯一标识符)
  • 启动应用程序的用户
  • 尝试完成应用程序的相关信息
  • 任何给定应用程序尝试所用的容器

在 HDInsight 群集中,此信息是由 Azure 资源管理器存储的。 信息将保存到群集的默认存储中的历史记录存储区。 可以通过 REST API 检索有关完成应用程序的此类通用数据:

GET on https://<cluster-dns-name>.azurehdinsight.cn/ws/v1/applicationhistory/apps

YARN 应用程序和日志

YARN 通过将资源管理与应用程序计划/监视相分离,来支持多种编程模型。 YARN 使用全局 ResourceManager (RM)、按辅助角色节点 NodeManagers (NM) 和按应用程序 ApplicationMasters (AM)。 按应用程序 AM 与 RM 协商用于运行应用程序的资源(CPU、内存、磁盘、网络)。 RM 与 NM 合作来授予这些资源(以容器的形式授予)。 AM 负责跟踪 RM 为其分配容器的进度。 根据应用程序性质,应用程序可能需要多个容器。

  • 每个应用程序可能包含多个 应用程序尝试
  • 容器授予给应用程序的特定尝试。
  • 容器为基本工作单元提供了上下文。
  • 在容器的上下文中执行的工作是在容器分配到的单个工作节点上执行的。

有关详细信息,请参阅 YARN 概念

应用程序日志(和关联的容器日志)在对有问题的 Hadoop 应用程序进行调试上相当重要。 YARN 提供一个良好的框架,通过使用日志聚合功能收集、聚合和存储应用程序日志。 日志聚合功能让访问应用程序日志更具确定性,因为该功能可聚合辅助节点上所有容器的日志,并在应用程序完成后,将它们按每个辅助节点一个聚合日志的方式存储在默认文件系统上。 应用程序可能使用数百或数千个容器,但在单个工作节点上运行的所有容器的日志将聚合成单个文件,也就是为应用程序所用的每个工作节点生成一个文件。 默认情况下,日志聚合已在 HDInsight 群集(3.0 和更高版本)上启用,在群集的默认容器中,可以找到聚合的日志,位置如下:

wasb:///app-logs/<user>/logs/<applicationId>

在该位置中,user 是启动应用程序的用户名,applicationId 是 YARN RM 分配的应用程序唯一标识符。

无法直接阅读聚合日志,因为它们是以 TFile(由容器编制索引的二进制格式)编写。 YARN 提供 CLI 工具,针对感兴趣的应用程序或容器,将这些日志转储成纯文本。 可以直接在群集节点上(通过 RDP 连接到节点之后)运行以下 YARN 命令之一,以纯文本格式查看这些日志:

yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application>
yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application> -containerId <containerId> -nodeAddress <worker-node-address>

YARN ResourceManager UI

YARN ResourceManager UI 在群集头节点上运行,可以通过 Azure 门户仪表板进行访问:

  1. 登录到 Azure 门户
  2. 在左侧菜单中,依次单击“浏览”、“HDInsight 群集”和要在其上访问 YARN 应用程序日志的基于 Windows 的群集。
  3. 在顶部菜单中,单击“仪表板” 。 将会看到在新的浏览器选项卡上打开名为“HDInsight 查询控制台”页面。
  4. 在“HDInsight 查询控制台”中单击“Yarn UI”。