Spark web UI 介绍
Spark Web UI 是排查 Spark 应用运行状态、任务耗时、Shuffle、SQL 执行计划和资源使用的重要入口。
Spark 应用运行失败或执行效率不理想时,Spark Web UI 往往是最直接的排查入口。它把应用、Job、Stage、Task、Executor、SQL、Storage 等信息以页面形式展示出来,帮助开发者理解任务到底慢在哪里、失败在哪里、资源是否被合理使用。
Spark Web UI 能看什么
应用运行期间,通常可以通过 Driver 暴露的 Web UI 查看实时状态。应用结束后,如果配置了事件日志和 History Server,也可以回看历史任务。不同部署方式和版本下入口会有所差异,但核心页面大体类似。
Jobs 页面展示作业级别的执行情况,可以看到每个 Job 的状态、耗时、关联 Stage 和触发 Action。Stages 页面更细,能看到每个 Stage 的任务数量、输入输出、Shuffle 读写、失败次数和任务耗时分布。Executors 页面用于观察各执行器的 CPU、内存、GC、输入输出和任务分布。
SQL 页面适合排查 Spark SQL 和 DataFrame 作业。它通常展示 SQL 执行计划、各节点耗时和扫描数据量。Storage 页面则用于查看缓存数据集的存储情况。
如何从 UI 排查慢任务
第一步看 Job 和 Stage 的耗时分布,找出最慢的阶段。第二步进入 Stage 详情页,观察 Task 是否存在明显长尾。如果少数 Task 远慢于其他 Task,可能存在数据倾斜、读取热点或资源异常。
第三步查看 Shuffle Read 和 Shuffle Write。大量 Shuffle 可能来自 join、groupBy、distinct、repartition 等操作。Shuffle 数据量过大时,可以考虑优化分区、过滤时机、join 策略或预聚合。
第四步观察 Executor 页面。如果某些 Executor 任务特别多或特别慢,可能存在资源不均衡。如果 GC 时间占比很高,可能需要调整内存、减少对象创建或优化数据结构。
SQL 页面怎么看
对于 Spark SQL,执行计划非常关键。可以关注扫描的数据源、过滤条件是否下推、join 类型、聚合节点和交换节点。若计划中出现不必要的全表扫描或大规模 shuffle,往往是优化重点。
需要注意,Web UI 展示的是运行时线索,不是自动答案。比如一个 Stage 慢,可能是数据倾斜,也可能是上游小文件太多、资源不足、外部存储慢或代码逻辑低效。排查时应结合日志、数据分布和配置一起判断。
常见指标解释
Duration 表示耗时,Input/Output 表示读写数据量,Shuffle Read/Write 表示网络和磁盘交换数据量,Spill 表示内存不足时溢写到磁盘,GC Time 表示垃圾回收耗时。失败任务和重试次数也要重点关注,因为频繁重试会放大整体耗时。
使用建议
每次优化 Spark 作业前,先保留一份 Web UI 或 History Server 的基线信息。调整代码或参数后,再对比同一数据规模下的耗时、Shuffle、Task 分布和资源使用。Spark Web UI 介绍的核心价值,就是让性能问题从“感觉很慢”变成可以定位、可以比较、可以复盘的证据。


