使用扩展的 Apache Spark History Server 调试和诊断 Apache Spark 应用程序
本文指导如何使用扩展的 Apache Spark History Server 来调试和诊断已完成的和正在运行的 Apache Spark 应用程序。
访问 Apache Spark History Server
Apache Spark History Server 是已完成的和正在运行的 Spark 应用程序的 Web 用户界面。 可以从进度指示器笔记本或 Apache Spark 应用程序详细信息页打开 Apache Spark Web 用户界面 (UI)。
从进度指示器笔记本打开 Spark Web UI
触发 Apache Spark 作业时,用于打开 Spark Web UI 的按钮位于进度指示器的“更多操作”选项内。 选择“Spark Web UI”并等待几秒钟,然后会显示“Spark UI”页。
从 Apache Spark 应用程序详细信息页打开 Spark Web UI
还可以通过 Apache Spark 应用程序详细信息页打开 Spark Web UI。 选择页面左侧的“监视中心”,然后选择一个 Apache Spark 应用程序。 将显示应用程序的详细信息页。
对于状态为正在运行的 Apache Spark 应用程序,按钮将显示“Spark UI”。 选择“Spark UI”,此时会显示“Spark UI”页。
对于状态为已结束的 Apache Spark 应用程序,结束状态可以是“已停止”、“失败”、“已取消”或“已完成”。 按钮会显示“Spark History Server”。 选择“Spark History Server”,此时会显示“Spark UI”页。
Apache Spark History Server 中的“图形”选项卡
选择要查看的作业的作业 ID。 然后选择工具菜单中的“图形”以获取作业图视图。
概述
你可以在生成的作业图中查看作业概况。 默认情况下,该图将显示所有作业。 可按作业 ID 筛选此视图。
显示
默认情况下,“进度”显示处于选中状态。 通过在“显示”下拉列表中选择“已读取”或“已写入”,可查看数据流 。
图形节点显示热度地图图例中所示的颜色。
播放
若要播放作业,请选择“播放”。 你可以随时选择“停止”以停止播放。 任务颜色显示播放时的不同状态:
颜色 | 含义 |
---|---|
绿色 | 成功:作业已成功完成。 |
橙色 | 已重试:失败但不影响作业最终结果的任务实例。 这些任务包括可能稍后会成功的重复或重试实例。 |
蓝色 | 正在运行:任务正在运行。 |
White | 正在等待或已跳过:任务正在等待运行,或已跳过该阶段。 |
Red | 失败:任务失败。 |
下图显示了绿色、橙色和蓝色状态颜色。
下图显示了绿色和白色状态颜色。
下图显示了红色和绿色状态颜色。
注意
Apache Spark History Server 允许播放每个已完成的作业(但不允许播放未完成的作业)。
Zoom
使用鼠标滚轮放大和缩小作业图,或者选择“缩放到合适大小”使图形适合屏幕大小。
工具提示
如果存在失败的任务,将鼠标悬停在图形节点上可查看工具提示;选择阶段可打开阶段页。
在作业图选项卡上,如果阶段具有满足以下条件的任务,则会显示工具提示和小图标:
条件 | 说明 |
---|---|
数据倾斜 | 数据读取大小 > 此阶段内所有任务的平均数据读取大小 * 2 且数据读取大小 > 10 MB。 |
时间倾斜 | 执行时间 > 此阶段内所有任务的平均执行时间 * 2 且执行时间 > 2 分钟。 |
图形节点说明
作业图节点显示每个阶段的以下信息:
- ID
- 名称或说明
- 总任务数
- 读取的数据:输入大小和随机读取大小之和
- 数据写入:输出大小和随机写入大小之和
- 执行时间:从第一次尝试的开始时间到最后一次尝试的完成时间的时间和
- 行计数:输入记录、输出记录、随机读取记录和随机写入记录的总和
- 进度
注意
默认情况下,作业图节点将显示每个阶段最后一次尝试的相关信息(阶段执行时间除外)。 但是,在播放期间,图形节点将显示每次尝试的相关信息。
读取和写入的数据大小为 1MB = 1000 KB = 1000 * 1000 字节。
提供反馈
选择“向我们提供反馈”发送问题反馈。
阶段数目限制
出于性能考虑,默认情况下,该图仅在 Spark 应用程序少于 500 个阶段时可用。 如果阶段过多,则它会失败并出现如下错误:
The number of stages in this application exceeds limit (500), graph page is disabled in this case.
作为一个解决方法,在启动 Spark 应用程序之前,请应用此 Spark 配置来增大上限:
spark.ui.enhancement.maxGraphStages 1000
但请注意,这可能会导致页面和 API 的性能不佳,因为内容可能太大,以至于浏览器无法提取和呈现。
浏览 Apache Spark History Server 中的“诊断”选项卡
若要访问“诊断”选项卡,请选择作业 ID。 然后选择工具菜单中的“诊断”以获取作业的“诊断”视图。 诊断选项卡包括“数据倾斜”、“时间偏差”和“执行程序使用情况分析” 。
分别选择“数据倾斜”、“时间偏差”和“执行程序使用情况分析”,以选中这些选项卡 。
数据倾斜
选择“数据倾斜”选项卡时,系统会根据指定的参数显示相应的倾斜任务。
指定参数 - 第一部分显示用于检测数据倾斜的参数。 默认规则如下:读取的任务数据比读取的平均任务数据多三倍,读取的任务数据超过 10 MB。 若要为倾斜任务定义自己的规则,可以选择参数。 “倾斜阶段”和“倾斜图表”部分会相应地刷新 。
倾斜阶段 - 第二部分显示其任务满足上面指定的条件的阶段。 如果一个阶段中存在多个倾斜任务,则倾斜阶段表仅显示倾斜程度最高的任务(例如,数据倾斜的最大数据)。
倾斜图表 - 选中倾斜阶段表中的行时,倾斜图表会根据数据读取和执行时间显示更多任务分布详细信息。 倾斜任务标记为红色,普通任务标记为蓝色。 该图表最多显示 100 个示例任务,并且任务详细信息显示在右下方面板中。
时间倾斜
“时间倾斜”选项卡根据任务执行时间显示倾斜任务。
指定参数 - 第一部分显示用于检测时间倾斜的参数。 用于检测时间倾斜的默认条件是:任务执行时间是平均执行时间的三倍,任务执行时间大于 30 秒。 可以按需更改相关参数。 与上面所述的“数据倾斜”选项卡一样,“倾斜阶段”和“倾斜图表”显示相应的阶段和任务信息。
选择“时间偏斜”,然后筛选的结果就会根据在“指定参数”部分设置的参数显示在“偏斜的阶段”部分。 选择“倾斜的阶段”部分的一个项目,然后相应的图表就会在第 3 部分绘制,任务详细信息显示在右下面板中。
执行程序使用情况分析
Fabric 已弃用此功能。 如果仍想使用此功能作为解决方案,请在 URL 中路径“/diagnostic”之后明确添加“/executorusage”以访问此页面,如下所示: