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

了解如何访问 Azure HDInsight 中 Hadoop 群集上的 YARN (Yet Another Resource Negotiator) 应用程序日志。

Important

本文档中的步骤需要使用 Linux 的 HDInsight 群集。 Linux 是 HDInsight 3.4 或更高版本上使用的唯一操作系统。 有关详细信息,请参阅 HDInsight 组件版本控制

YARN Timeline Server

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

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

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

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

YARN 应用程序和日志

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

每个应用程序可能包含多个 应用程序尝试。 如果应用程序失败,可能会重试进行新的尝试。 每次尝试都在容器中运行。 在某种意义上,容器提供了由 YARN 应用程序执行的基本工作单位的上下文。 在容器的上下文中完成的所有工作均在分配了容器的单个辅助角色节点上执行。 请参阅 YARN 的概念,以获取更多参考信息。

应用程序日志(和关联的容器日志)在对有问题的 Hadoop 应用程序进行调试上相当重要。 YARN 提供一个良好的框架,通过使用日志聚合功能收集、聚合和储应用程序日志。 日志聚合功能让应用程序日志的访问更具确定性。 它聚合辅助角色节点上所有容器的日志,并将其存储为一个聚合日志文件(每个辅助角色节点)。 应用程序完成后,日志存储在默认文件系统上。 应用程序可能使用数百或数千个容器,但在单个辅助角色节点上运行的所有容器的日志始终聚合成单个文件。 因此,在每个辅助角色节点上,应用程序只使用 1 个日志。 在 HDInsight 群集版本 3.0 和更高版本上,日志聚合默认已启用。 聚合日志位于群集的默认存储中。 下面的路径是日志的 HDFS 路径:

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

在此路径中,user 是启动应用程序的用户的名称。 applicationId 是 YARN RM 分配给应用程序的唯一标识符。

无法直接阅读聚合日志,因为它们是以 TFile(由容器编制索引的二进制格式)编写。 使用 YARN ResourceManager 日志或 CLI 工具以纯文本的形式查看感兴趣的应用程序或容器的日志。

YARN CLI 工具

若要使用 YARN CLI 工具,则必须首先使用 SSH 连接到 HDInsight 群集。 有关信息,请参阅将 SSH 与 HDInsight 配合使用

可通过运行下列命令之一以纯文本格式查看这些日志:

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>

运行这些命令时,请指定 <applicationId>、<user-who-started-the-application>、<containerId> 和 <worker-node-address> 信息。

YARN ResourceManager UI

YARN ResourceManager UI 在群集头节点上运行。 可通过 Ambari web UI 访问它。 使用以下步骤查看 YARN 日志:

  1. 在 Web 浏览器中,导航到 https://CLUSTERNAME.azurehdinsight.cn。 将 CLUSTERNAME 替换为 HDInsight 群集的名称。
  2. 从左侧的服务列表中,选择“YARN” 。

    选中的 Yarn 服务

  3. 在“快速链接”的下拉列表中,选择其中一个群集头节点,并选择“ResourceManager 日志”。

    Yarn 快速链接

    系统会显示 YARN 日志的链接列表。