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

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

将 Auto Scaling 用于 Amazon Glue

弹性伸缩现在可用于使用 Amazon Glue 版本 3.0 或更高版本的 Amazon Glue 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 可用于兼有 G.1XG.2XG.4XG.8XG.025X 或(仅用于流式处理作业)工件类型的 Amazon Glue 作业。不支持标准 DPU。

在 Amazon Glue Studio 中启用自动扩缩

在 Amazon 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(最大工件数量)以定义可提供给任务运行的最大工件数量。


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

使用 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 开发工具包配置启用自动扩缩的任务运行。

使用亚马逊 CloudWatch指标监控 Auto Scaling

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

  • lue.driver。 ExecutorAllocationManager.executors。 numberAllExecutors

  • lue.driver。 ExecutorAllocationManager.executors。 numberMaxNeeded遗嘱执行者


                使用亚马逊 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 创建静态的直播 DataFrame 联接ForEachBatch。在遗嘱中 DataFrame 创建的静态ForEachBatch可以按预期工作。