DPU 容量规划监控 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

DPU 容量规划监控

您可以使用 AWS Glue 中的作业指标估算可用于扩展 AWS Glue 作业的数据处理单元 (DPU) 的数量。

已分析代码

以下脚本读取包含 428 个 gzip 类型 JSON 文件的 Amazon Simple Storage Service (Amazon S3) 分区。该脚本应用映射来更改字段名称,以 Apache Parquet 格式转换这些名称并将其写入 Amazon S3。您提供10 DPUs 按照默认值执行此作业。

datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json") applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec]) datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")

在 AWS Glue 控制台上可视化分析指标

作业运行1: 在此作业运行中,我们将展示如何查找配置不足的情况 DPUs 群集中的。AWS Glue 中的作业执行功能显示主动运行的执行程序的总数已完成的阶段数所需的最大执行程序数

通过添加正在运行的任务和待处理任务的总数,并将其除以每个执行程序的任务数来计算所需的最大执行程序数。此结果衡量满足当前负载所需的执行程序总数。

相反,主动运行的执行程序的数量衡量运行活动 Apache Spark 任务的执行程序数量。随着作业的运行,所需的最大执行程序数可能发生变化,并且通常会在待处理任务队列减少时向下移动到作业的末尾。

下图中的水平红线显示分配的最大执行器数,这取决于 DPUs 分配的工作。在这种情况下,你分配10 DPUs 作业运行。为主实例预留一个 DPU。九 DPUs 每个运行两个执行器,并为Spark驱动程序保留一个执行器。Spark 驱动程序在应用程序主实例内部运行。因此,最大已分配执行程序数为 2*9 - 1 = 17 个执行程序。


        显示活动执行程序和最大所需执行程序的作业指标。

如图所示,所需的最大执行程序数在作业开始时从 107 开始,而活动执行程序数保持为 17。这与分配的最大执行器数量相同,其中有10个 DPUs。最大所需执行器和最大分配执行器之间的比率(为Spark驱动程序将1加到两者)为您提供了配置不足因素:108/18=6x。可配置6(配置比例下)*9(当前DPU容量-1)+1 DPUs =55间 DPUs 以扩展作业以以最大并行性运行它并更快地完成。

AWS Glue 控制台将详细的作业指标显示为表示原始最大已分配执行程序数的静态行。控制台从指标的作业定义计算最大已分配执行程序数。简而言之,对于详细的作业运行指标,控制台根据作业运行配置计算分配的最大执行器,特别是 DPUs 分配给作业运行。要查看各个作业运行的指标,请选择作业运行并选择 View run metrics (查看运行指标)


        显示 ETL 数据移动的作业指标。

查看读取写入的 Amazon S3 字节,请注意,该作业花费全部六分钟时间流式传输来自 Amazon S3 的数据并将其并行写出。已分配的所有核心 DPUs 正在阅读和写入 Amazon S3. 所需最大执行程序数为 107,同样与输入 Amazon S3 路径 — 428 中的文件数相匹配。每个执行程序可以启动四个 Spark 任务来处理四个输入文件(JSON gzip 类型)。

确定最佳 DPU 容量

根据上次作业运行的结果,您可以增加分配的 DPUs 至55,并查看作业如何执行。该作业在不到三分钟的时间内完成 — 是之前所需时间的一半。在这种情况下,作业扩展不是线性的,因为它是一个短时间运行作业。具有长期任务或大量任务(所需最大执行程序数)的作业受益于接近线性的 DPU 扩展性能加速。


        显示增加分配总数的图表 DPUs

如上图所示,活动执行程序的总数达到 107 — 这一最大已分配执行程序数。同样,所需的最大执行程序数永远不会超过最大已分配执行程序数。所需的最大执行程序数根据主动运行和待处理任务计数计算,因此可能小于活动执行程序的数量。这是因为可能有执行程序在短时间内部分或完全空闲且尚未停用。


        显示活动执行程序总数达到已分配最大数的图表。

此作业运行使用 6 倍以上的执行程序来并行地在 Amazon S3 中读取和写入。因此,此作业运行使用更多 Amazon S3 带宽进行读取和写入,并且完成得更快。

识别过度供应 DPUs

接下来,您可以确定是否使用100 DPUs (99*2=198个执行器)有助于进一步扩展任何。如下图所示,该作业仍需要三分钟才能完成。同样,作业不会超出107个执行器(55 DPUs 配置),其余91个执行器配置过多,根本不使用。这表明,增加 DPUs 可能并不总是能提高性能,从所需的执行器中可以明显看出。


          图表显示,作业绩效并不总是通过增加 DPUs.

比较时间差异

下表所示的三次作业运行汇总了10次的作业执行时间 DPUs,55 DPUs、和100 DPUs。您可以使用通过监控第一次作业运行建立的估计值来查找DPU容量,以改善作业执行时间。

作业 ID DPUs的数量 执行时间
jr_c894524c8ef5048a4d9... 10 6 分钟
jr_1a466cf2575e7ffe6856... 55 3 分钟
jr_34fa1ed4c6aa9ff0a814... 100 3 分钟