将 Auto Scaling 用于 AWS Glue - AWS Glue

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Auto Scaling 用于 AWS Glue

弹性伸缩现在可用于使用 AWS Glue 版本 3.0 或更高版本的 AWS Glue ETL 和串流任务。

启用 Auto Scaling 后,您将获得以下优势:

  • AWS Glue 将根据各个阶段的并行性或任务运行的微批处理,向集群中自动添加工件,以及从集群中自动删除工件。

  • 它将使您无需试验和决定要为您的 AWS Glue ETL 任务分配的工件数量。

  • 如果您选择最大工件数量,AWS Glue 将为工作负载选择适当大小的资源。

  • 您可以通过查看 AWS Glue Studio 中任务运行详细信息页面上的 CloudWatch 指标,了解集群大小在任务运行过程中如何变化。

AWS Glue ETL 的 Auto Scaling 和串流任务可使您的 AWS Glue 任务的计算资源实现按需纵向扩展和缩减。按需纵向扩展可帮助您最初只在任务运行启动时分配所需的计算资源,还可以在任务期间根据需求预配所需的资源。

Auto Scaling 还支持在任务过程中动态缩减 AWS Glue 任务资源。在任务运行过程中,当 Spark 应用程序请求更多执行程序时,将向集群添加更多工件。当执行程序在没有活动计算任务的情况下处于空闲状态时,则将删除该执行程序和相应的工件。

Auto Scaling 帮助 Spark 应用程序优化成本和利用率的常见场景包括:Spark 驱动程序列出 Amazon S3 中的大量文件,或在执行程序处于非活动状态时执行负载,Spark 阶段由于过度配置而仅运行数个执行程序,以及在 Spark 各个阶段的数据偏差或不均衡的计算需求。

要求

Auto Scaling 仅适用于 AWS Glue 版本 3.0 或更高版本。要使用 Auto Scaling,您可以按照迁移指南将现有任务迁移到 AWS Glue 版本 3.0 或更高版本,或者使用 AWS Glue 版本 3.0 或更高版本创建新作业。

Auto Scaling 可用于兼有 G.1XG.2XG.4XG.8XG.025X 或(仅用于流式处理作业)工件类型的 AWS Glue 作业。不支持标准 DPU。

在 AWS Glue Studio 中启用自动扩缩

在 AWS Glue Studio 中的 Job details(任务详细信息)选项卡上,将类型选择为 SparkSpark Streaming,并将 Glue version(Glue 版本)选择为 Glue 3.0Glue 4.0。随后将在 Worker type(工件类型)下方出现一个复选框。

  • 选择 Automatically scale the number of workers(自动扩展工件数量)选项。

  • 设置 Maximum number of workers(最大工件数量)以定义可提供给任务运行的最大工件数量。

在 AWS Glue Studio 中启用和配置自动扩缩。

使用 AWS CLI 或开发工具包启用自动扩缩

要通过 AWS CLI 为任务运行启用自动扩缩,使用以下配置运行 start-job-run

{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X and G.2X are allowed for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }

在 ETL 任务运行完成后,您还可以调用 get-job-run 以检查 DPU-seconds 内任务运行的实际资源使用情况。请注意:为 AWS Glue 3.0 或更高版本上运行的批处理任务启用自动扩缩时,才会显示新字段 DPUSeconds。流式处理任务不支持此字段。

$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }

您还可以使用具有相同配置的 AWS Glue 开发工具包配置启用弹性伸缩的任务运行。

使用 Amazon CloudWatch 指标监控 Auto Scaling

如果您启用了 Auto Scaling,则 CloudWatch 执行程序指标可用于您的 AWS Glue 3.0 或更高版本任务。这些指标可以用于监控使用 Auto Scaling 启用的 Spark 应用程序中执行程序的需求和优化使用情况。有关更多信息,请参阅 使用 Amazon CloudWatch 指标监控 AWS Glue

  • glue.driver.ExecutorAllocationManager.executors.numberAllExecutors

  • glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors

使用 Amazon CloudWatch 指标监控 Auto Scaling。

有关这些指标的更多详细信息,请参阅 监控 DPU 容量规划

使用 Spark UI 监控 Auto Scaling

启用 Auto Scaling 后,您还可以使用 Glue Spark UI 监控根据 AWS Glue 任务中的需求借助动态纵向扩展及缩减添加和删除的执行程序。有关更多信息,请参阅 为 AWS Glue 作业启用 Apache Spark Web UI

使用 Spark UI 监控 Auto Scaling。

监控弹性伸缩任务运行的 DPU 使用情况

您可以使用 AWS Glue Studio 作业运行视图以检查自动扩缩作业的 DPU 使用情况。

  1. 从 AWS Glue Studio 导航窗格中选择监控。此时将显示 Monitoring(监控)页面。

  2. 向下滚动到任务运行图表。

  3. 导航到您感兴趣的任务运行,然后滚动到 DPU 小时列以检查特定任务运行的使用情况。

限制

AWS Glue 串流 Auto Scaling 目前不支持串流 DataFrame 与在 ForEachBatch 外部创建的静态 DataFrame 联接。在 ForEachBatch 内部创建的静态 DataFrame 将按预期方式工作。