将 Auto Scaling 用于 Amazon Glue - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

将 Auto Scaling 用于 Amazon Glue

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

注意

弹性伸缩通常适用于 ETL 任务。串流任务的弹性伸缩处于预览状态,可能会发生更改。

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

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

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

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

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

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

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

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

要求

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

Auto Scaling 可用于兼有 G1.XG2.X 工件类型的 Amazon Glue 任务。不支持标准 DPU。

在 Amazon Glue Studio 中启用 Auto Scaling

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

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

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


            在 Amazon Glue Studio 中启用和配置 Auto Scaling。

使用 Amazon CLI 或开发工具包启用弹性伸缩

要通过 Amazon 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 内任务运行的实际资源使用情况。请注意:为 Amazon 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 } }

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

使用 Amazon CloudWatch 指标监控 Auto Scaling。

如果您启用了 Auto Scaling,则 CloudWatch 执行程序指标可用于您的 Amazon Glue 3.0 任务。这些指标可以用于监控使用 Auto Scaling 启用的 Spark 应用程序中执行程序的需求和优化使用情况。有关更多信息,请参阅 使用 Amazon CloudWatch 指标监控 Amazon 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 监控根据 Amazon Glue 任务中的需求借助动态纵向 扩展及 缩减添加和删除的执行程序。有关更多信息,请参阅 为 Amazon Glue 作业启用 Apache Spark Web UI


            使用 Spark UI 监控 Auto Scaling。

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

您可以使用 Amazon Glue Studio 任务运行视图以检查弹性伸缩任务的 DPU 使用情况。

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

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

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

限制

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