本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Glue 直播自动缩放
Amazon Glue 流式处理ETL作业持续消耗来自流媒体源的数据,清理和转换传输中的数据,并使其可供分析。通过监控作业运行的每个阶段, Amazon Glue AutoScaling 可以在工作线程空闲时将其关闭,或者如果可以进行额外的并行处理,则可以添加工作人员。
以下各节提供了有关 Amazon Glue 流式自动缩放的信息
在 Amazon Glue Studio中启用自动扩缩
在 Amazon Glue Studio 的 “任务详情” 选项卡上,选择类型为 Spark 或 Spar k Streamin g,将 Glue 版本选择为Glue 3.0
或Glue 4.0
。随后将在 Worker type(工件类型)下方出现一个复选框。
-
选择 Automatically scale the number of workers(自动扩展工件数量)选项。
-
设置 Maximum number of workers(最大工件数量)以定义可提供给任务运行的最大工件数量。
使用 Amazon CLI或启用 Auto Scaling SDK
要 Amazon CLI为作业运行启用 Auto Scaling From,请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 的 Amazon Glue 3.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 配置作业运行。Amazon Glue SDK
工作方式
跨微批次扩缩
以下示例描述了自动扩缩的工作原理。
-
你有一 Amazon Glue 份以 50 开头的工作DPUs。
-
自动扩缩已启用。
在此示例中, Amazon Glue 查看几个微型批次的 batchProcessingTime InMs “” 指标,并确定您的任务是否在您确定的窗口大小内完成。如果您的作业完成得较早,根据完成的速度, Amazon Glue 可能会缩减。可以监视这个用 numberAllExecutors “” 绘制的指标, Amazon CloudWatch 以了解自动缩放的工作原理。
只有在每个微批次完成后,执行程序的数量才会呈指数级扩缩。从 Amazon CloudWatch 监控日志中可以看出, Amazon Glue 查看所需的执行者数量(橙线),并自动缩放执行者(蓝线)以使其与之匹配。
一旦 Amazon Glue 缩小执行者的数量并观察到数据量增加,从而增加微批处理时间, Amazon Glue 就会扩展到50DPUs,这是指定的上限。
微批次内扩缩
在上面的示例中,系统会监控几个已完成的微批次,以决定是扩大还是缩小规模。如果窗口较长,则需要在微批次内更快地响应,而不是等待几个微批次。对于此类情况,您可以使用一个额外配置 --auto-scaIe-within-microbatch
并将其设置为 true
。您可以将其添加到中的 Amazon Glue 作业属性中, Amazon Glue Studio 如下所示。