介绍 AWS Glue 无服务器 Spark UI,以便更好地监控和故障排除 大数据博客

  • 2026-01-27 12:27:57

新版 AWS Glue Serverless Spark UI 方便监控与故障排除

关键要点

AWS Glue 新增了内置的 Serverless Spark UI,用户可以更轻松地监控和故障排除作业运行。无需额外基础设施设置,只需单击即可访问 Spark UI。该功能支持 AWS Glue 30 及更高版本,适用于 2023 年 11 月 20 日后的作业。

在 AWS 中,数十万用户使用 AWS Glue 这种无服务器数据集成服务来发现、组合和准备数据供分析和机器学习使用。当面临复杂的数据集及高负载的 Apache Spark 工作时,您可能会在 Spark 作业运行过程中遭遇性能瓶颈或错误,解决这些问题往往比较困难,可能会导致生产作业延迟。用户通常会借助 Apache Spark Web UI 这个常用的调试工具来修复问题以及优化作业性能。但 AWS Glue 对 Spark UI 的支持有两种不同方式,用户需要自行设置,这需要花费时间和精力来管理网络和 EC2 实例,或在 Docker 容器中进行反复试验。

今天,我们很高兴地宣布,AWS Glue 控制台内置了 Serverless Spark UI。现在,您可以通过简单的单击快速访问 Spark UI,无需任何基础设施的设置或拆除。AWS Glue 的无服务器 Spark UI 是一个完全托管的无服务器服务,通常在几秒钟内启动。Serverless Spark UI 使得作业在生产环境中工作的速度和便捷性大大提高,因为您可以随时获取关于作业运行的低级详细信息。

本文将介绍 AWS Glue 无服务器 Spark UI 如何帮助您监控和故障排除 AWS Glue 作业的运行。

开始使用无服务器 Spark UI

您可以通过 AWS Glue 控制台中的作业页面轻松访问特定 AWS Glue 作业运行的无服务器 Spark UI。

在 AWS Glue 控制台,选择 ETL 作业。选择您的作业。选择 运行 标签。选择您想要调查的作业运行,然后选择 Spark UI。

Spark UI 将显示在下方,如下图所示:

您还可以通过在 AWS Glue 中导航到 作业运行监控 来直接访问特定作业运行的无服务器 Spark UI。

在 AWS Glue 控制台,选择 ETL 作业 下的 作业运行监控。选择您的作业运行,然后选择 查看运行详细信息。

向下滚动至底部即可查看该作业运行的 Spark UI。

前提条件

完成以下前提条件:

启用 Spark UI 事件日志,供您的作业运行使用。在 Glue 控制台中默认开启,启用后,将在作业运行期间创建并存储 Spark 事件日志文件于您的 S3 存储桶中。无服务器 Spark UI 会解析存储在您的 S3 存储桶中的 Spark 事件日志文件,以可视化运行和完成的作业运行的详细信息。进度条显示完成的百分比,解析时间通常少于一分钟。日志解析完成后,您可以:使用内置的 Spark UI 进行故障排除、调试和优化作业。

有关 Apache Spark UI 的更多信息,请参阅 Apache Spark 的 Web UI。

加速器网页版

使用无服务器 Spark UI 监控与故障排除

AWS Glue 对 Apache Spark 作业的典型工作负载是将数据从关系数据库加载到基于 S3 的数据湖。以下部分演示如何使用无服务器 Spark UI 监控和故障排除此类工作负载的示例作业运行。示例作业从 MySQL 数据库读取数据并以 Parquet 格式写入 S3,源表约有 7000 万条记录。

以下图像展示了在 AWS Glue Studio 可视化编辑器中创建的示例作业。这个示例中,源 MySQL 表已经在 AWS Glue 数据目录中进行了注册,可以通过 AWS Glue 爬虫或 AWS Glue 目录 API 进行注册。有关更多信息,请参见 AWS Glue 中的数据目录和爬虫。

现在可以运行作业了!第一次作业运行完成时长为 30 分钟 10 秒,如下所示:

介绍 AWS Glue 无服务器 Spark UI,以便更好地监控和故障排除 大数据博客

让我们使用 Spark UI 来优化这次作业的性能。打开 作业运行 页中的 Spark UI 标签。当您深入到各个阶段并查看 持续时间 列时,会发现 Stage Id=0 的运行时间为 2741 分钟,并且在 成功/总任务 列中只有一个 Spark 任务,这意味着在从源 MySQL 数据库加载数据时没有并行处理。

为了优化数据加载,我们需要在源表定义中引入 hashfield 和 hashpartitions 参数。有关更多信息,请参阅 使用 JDBC 表进行并行读取。继续到 Glue 目录表中,添加两个属性:在 表属性 中添加 hashfield=empno,和 hashpartitions=18。

这将意味着,新作业运行将在从源 MySQL 表读取数据时实现并行加载。

让我们再试运行同样的作业!这次作业的运行耗时为 9 分钟 9 秒,节省了 21 分钟的时间。

作为最佳实践,请查看 Spark UI,并比较优化前后的表现。深入到已完成的阶段,您会注意到此时有一个阶段和 18 个任务,而非原来的一个任务。

在第一次作业运行中,由于任务数量过少,AWS Glue 自动在多个执行器之间重新分配数据,而在第二次作业运行中,由于无需额外的重排,因此只需一个阶段和 18 个并行加载数据的任务。

注意事项

请注意以下事项:

Serverless Spark UI 从 AWS Glue 30 及后续版本支持。由于 AWS Glue 发出和存储 Spark 日志的方式的变化,Serverless Spark UI 将在 2023 年 11 月 20 日后运行的作业中可用。Serverless Spark UI 可以可视化大小为 512 MB 的 Spark 事件日志。由于 Serverless Spark UI 扫描您 S3 存储桶中的 Spark 事件日志文件,因此没有数据保留限制。Serverless Spark UI 不支持存储在 S3 存储桶中并且只能通过 VPC 访问的 Spark 事件日志。

结论

本文描述了 AWS Glue 的 Serverless Spark UI 如何帮助您监控和故障排除作业。通过提供直接在 AWS 管理控制台中对 Spark UI 的即时访问,您可以检查作业运行的低级详细信息,以识别和解决问题。借助 Serverless Spark UI,无需管理基础设施每次作业运行 UI 会自动启动,并在不再需要时拆卸。这种简化的体验相较于手动启动 Spark UI 节省了时间和精力。

欢迎您立即体验 Serverless Spark UI。我们相信,您会发现它在优化性能和快速排查错误方面极其有价值。我们期待听取您的反馈,以便我们持续改进 AWS Glue 控制台的体验。

关于作者

Noritaka Sekiyama 是 AWS Glue 团队的首席大数据架构师,工作地点在日本东京。他负责构建软件工件以帮助客户。在业余时间,他喜欢骑公路自行车。

Alexandra Tello 是 AWS Glue 团队在纽约市的高级前端工程师。她热衷于可用性和无障碍性。在闲暇时,她是浓缩咖啡爱好者,并享受制作机械键盘。

Matt Sampson 是 AWS Glue 团队的开发经理。他喜欢与 Glue 团队的其他成员一起工作,以为客户创造服务。在工作之余,他喜欢钓鱼和唱卡拉 OK。

Matt Su 是 AWS Glue 团队的高级产品经理。他享受帮助客户通过 AWS 分析服务发掘洞察并做出更好的决策。在业余时间,他喜欢滑雪和园艺。