Auto Scaling 可供你使用 AWS Glue ETL、互动会话和直播作业 AWS Glue 3.0 或更高版本。
启用 Auto Scaling 后,您将获得以下优势:
-
AWS Glue 根据作业运行的每个阶段或微批次的并行度,自动在集群中添加和移除工作人员。
-
它减少了您进行实验和决定要为其分配的工作人员数量的需求 AWS Glue ETL工作。
-
在给定的最大工人人数下,AWS Glue 将为工作负载选择大小合适的资源。
-
您可以通过查看任务运行详细信息页面上的 CloudWatch 指标来查看任务运行期间集群的大小是如何变化的 AWS Glue 工作室。
Auto Scaling 适用于 AWS Glue ETL而且,流媒体作业支持按需扩展和缩小您的计算资源 AWS Glue 工作。按需纵向扩展可帮助您最初只在任务运行启动时分配所需的计算资源,还可以在任务期间根据需求预配所需的资源。
Auto Scaling 还支持动态缩小 AWS Glue 工作过程中的工作资源。在任务运行过程中,当 Spark 应用程序请求更多执行程序时,将向集群添加更多工件。当执行程序在没有活动计算任务的情况下处于空闲状态时,则将删除该执行程序和相应的工件。
自动扩缩帮助您的 Spark 应用程序降低成本和提高利用率的常见场景包括:
-
Spark 驱动程序在 Amazon S3 中列出大量文件或在执行程序处于非活动状态时执行加载
-
由于过度预置,Spark 阶段仅使用少量执行程序运行
-
数据偏差或 Spark 各阶段间的计算需求不均衡
要求
Auto Scaling 仅适用于 AWS Glue 3.0 或更高版本。要使用 Auto Scaling,您可以按照迁移指南将现有任务迁移到 AWS Glue 3.0 或更高版本或使用创建新作业 AWS Glue 3.0 或更高版本。
Auto Scaling 可用于 AWS Glue 工作器类型为G.1X
、G.2X
、G.4X
G.8X
、或G.025X
(仅适用于流媒体作业)的作业。DPUs不支持标准。
在中启用 Auto Scaling AWS Glue Studio
在 Job 详情选项卡上 AWS Glue Studio,选择类型为 Spark 或 Spar k Streamin g,将 Glue 版本选择为Glue 3.0
或更高版本。随后将在工作线程类型下方出现一个复选框。
-
选择 Automatically scale the number of workers(自动扩展工件数量)选项。
-
设置 Maximum number of workers(最大工件数量)以定义可提供给任务运行的最大工件数量。

使用 AWS CLI或启用 Auto Scaling SDK
要从 AWS CLI为您的作业运行启用 Auto Scaling,请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内运行的实际资源使用情况。注意:新字段DPUSeconds仅适用于启用 Auto Scaling 的 AWS Glue 4.0 或更高版本的批处理作业。流式处理任务不支持此字段。
$ 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
}
}
您也可以使用具有相同配置的 Auto Scaling 配置作业运行。AWS Glue SDK
使用交互式会话启用自动扩缩
要在使用交互式会话构建 AWS Glue 作业时启用 Auto Scaling,请参阅配置 AWS Glue 交互式会话。
提示和注意事项
微调 A AWS Glue uto Scaling 的提示和注意事项:
-
如果您对最大工人人数的初始值一无所知,则可以从估算中解释的粗略计算开始 AWS Glue DPU。对于数据量非常小的情况,不应配置过大的最大工作线程数值。
-
AWS Glue Auto Scaling
spark.default.parallelism
根据作业中配置spark.sql.shuffle.partitions
的最大数量DPU(使用最大工作人员数量和工作器类型计算)来配置和。如果您希望在这些配置中使用固定值,则可以使用以下作业参数覆盖这些参数:-
键:
--conf
-
值:
spark.sql.shuffle.partitions=200 --conf spark.default.parallelism=200
-
-
对于流式处理作业,默认情况下, AWS Glue 不会在微批次内自动缩放,并且需要多个微批才能启动自动缩放。如果您想在微批次内启用自动扩缩,请提供
--auto-scale-within-microbatch
。有关更多信息,请参阅作业参数参考。
使用亚马逊 CloudWatch指标监控 Auto Scaling
CloudWatch 执行者指标可供您使用 AWS Glue 3.0 或更高版本的作业(如果您启用了 Auto Scaling)。这些指标可以用于监控使用 Auto Scaling 启用的 Spark 应用程序中执行程序的需求和优化使用情况。有关更多信息,请参阅 使用 Amazon CloudWatch 指标监控 AWS Glue。
您还可以利用可 AWS Glue 观测性指标来深入了解资源利用率。例如,通过监控 glue.driver.workerUtilization
,您可以监控在使用和不使用自动扩缩时实际分别使用了多少资源。再举一个例子,通过监控 glue.driver.skewness.job
和 glue.driver.skewness.stage
,您可以了解数据的偏差情况。这些见解将帮助您决定是否启用自自动扩缩并微调配置。有关更多信息,请参阅使用 使用 AWS Glue 可观测性指标进行监控进行监控。
-
lue.driver。 ExecutorAllocationManager.executors。 numberAllExecutors
-
lue.driver。 ExecutorAllocationManager.executors。 numberMaxNeeded遗嘱执行者
有关这些指标的更多详细信息,请参阅 监控 DPU 容量规划。
注意
CloudWatch 执行者指标不适用于交互式会话。

使用 Amazon CloudWatch 日志监控 Auto Scaling
如果您使用的是交互式会话,则可以通过启用连续的 Amazon CloudWatch 日志并在日志中搜索 “执行者”,或者使用 Spark UI 来监控执行者的数量。为此,请使用 %%configure
指令来启用连续日志记录并enable auto scaling
。
%%configure{
"--enable-continuous-cloudwatch-log": "true",
"--enable-auto-scaling": "true"
}
在 Amazon CloudWatch Logsevents 中,在日志中搜索 “执行者”:

使用 Spark UI 监控 Auto Scaling
启用 Auto Scaling 后,您还可以根据自己的需求通过动态放大和缩小来监控正在添加和删除的执行器 AWS Glue 使用 Glue Spark 用户界面的作业。有关更多信息,请参阅 为 AWS Glue 作业启用 Apache Spark Web UI。
当您使用 Jupyter Notebook 中的交互式会话时,您可以运行以下指令来启用自动扩缩和 Spark UI:
%%configure{
"--enable-auto-scaling": "true",
"--enable-continuous-cloudwatch-log": "true"
}

监控 Auto Scaling 作业运行DPU使用情况
您可以使用AWS Glue Studio 作业运行视图来检查 Auto Scaling 作业的DPU使用情况。
-
从 AWS Glue Studio 导航窗格中选择 “监控”。此时将显示 Monitoring(监控)页面。
-
向下滚动到任务运行图表。
-
导航到您感兴趣的作业运行并滚动到DPU工时列以查看特定作业运行的使用情况。
限制
AWS Glue 流式传输 Auto Scaling 目前不支持在外部 DataFrame 创建静态的直播 DataFrame 联接ForEachBatch
。在遗嘱中 DataFrame 创建的静态ForEachBatch
可以按预期工作。