调试 Azure HDInsight 中运行的 Apache Spark 作业

在本文中,将了解如何使用 YARN UI、Spark UI 和 Spark History Server 来跟踪和调试 HDInsight 群集中运行的 Spark 作业。 将使用 Spark 群集中提供的笔记本启动 Spark 作业,相关信息请参阅“机器学习:使用 MLLib 对食物检测数据进行预测分析”。 也可以执行以下步骤来跟踪使用任何其他方法(例如 spark-submit)提交的应用程序。

先决条件

必须满足以下条件:

在 YARN UI 中跟踪应用程序

  1. 启动 YARN UI。 单击“群集仪表板”,再单击“YARN”。

    启动 YARN UI

    Tip

    或者,也可以从 Ambari UI 启动 YARN UI。 要启动 Ambari UI,请单击“群集仪表板”,并单击“HDInsight 群集仪表板”。 在 Ambari UI 中依次单击“YARN”、“快速链接”、活动的资源管理器和“资源管理器 UI”。

  2. 由于 Spark 作业是使用 Jupyter Notebook 启动的,因此应用程序的名称为 remotesparkmagics(这是从 Notebook 启动的所有应用程序的名称)。 单击应用程序名称旁边的应用程序 ID,以获取有关该作业的详细信息。 此时将启动应用程序视图。

    查找 Spark 应用程序 ID

    对于从 Jupyter Notebook 启动的应用程序,在退出 Notebook 之前,其状态始终是“正在运行”。

  3. 从应用程序视图中,可以进一步深入以找到与应用程序和日志 (stdout/stderr) 关联的容器。 也可以通过单击“跟踪 URL”对应的链接来启动 Spark UI,如下所示。

    下载容器日志

在 Spark UI 中跟踪应用程序

在 Spark UI 中,可以深入到前面启动的应用程序所产生的 Spark 作业。

  1. 若要启动 Spark UI,请在应用程序视图中,单击“跟踪 URL”旁边的链接,如上面的屏幕截图中所示。 可以看到,应用程序启动的所有 Spark 作业正在 Jupyter Notebook 中运行。

    查看 Spark 作业

  2. 单击“执行器”选项卡以查看每个执行器的处理和存储信息。 还可以通过单击“线程转储”链接来检索调用堆栈。

    查看 Spark 执行器

  3. 单击“阶段”选项卡以查看与应用程序关联的阶段。

    查看 Spark 阶段

    每个阶段可能有多个任务,你可以查看这些任务的执行统计信息,如下所示。

    查看 Spark 阶段

  4. 在阶段详细信息页上,可以启动 DAG 可视化。 展开页面顶部的“DAG 可视化”链接,如下所示。

    查看 Spark 阶段 DAG 可视化

    DAG (Direct Aclyic Graph) 呈现了应用程序中的不同阶段。 图形中的每个蓝框表示从应用程序调用的 Spark 操作。

  5. 在阶段详细信息页上,还可以启动应用程序时间线视图。 展开页面顶部的“事件时间线”链接,如下所示。

    查看 Spark 阶段事件时间线

    此时将以时间线形式显示 Spark 事件。 时间线视图提供三个级别:跨作业、作业内和阶段内。 上图中捕获了指定阶段的时间线视图。

    Tip

    如果选中“启用缩放”复选框,则可以在时间线视图中左右滚动。

  6. Spark UI 中的其他选项卡也提供了有关 Spark 实例的有用信息。

    • “存储”选项卡 - 如果应用程序创建了 RDD,你可以在“存储”选项卡中找到相关信息。
    • “环境”选项卡 - 此选项卡提供有关 Spark 实例的有用信息,例如
      • Scala 版本
      • 与群集关联的事件日志目录
      • 应用程序的执行器核心数
      • 等等

使用 Spark History Server 查找有关已完成的作业的信息

完成某个作业后,有关该作业的信息将保存在 Spark History Server 中。

  1. 若要启动 Spark History Server,请在群集边栏选项卡中单击“群集仪表板”,然后单击“Spark History Server”。

    启动 Spark History Server

    Tip

    或者,也可以从 Ambari UI 启动 Spark History Server UI。 要启动 Ambari UI,请在群集边栏选项卡中单击“群集仪表板”,并单击“HDInsight 群集仪表板”。 在 Ambari UI 中,依次单击“Spark”、“快速链接”和“Spark History Server UI”。

  2. 随后会看到已列出所有已完成的应用程序。 单击应用程序 ID 可深入到该应用程序以获取更多信息。

    启动 Spark History Server

另请参阅

适用于数据分析师

适用于 Spark 开发人员