使用 Amazon CloudWatch 指标监控 AWS Glue - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 Amazon CloudWatch 指标监控 AWS Glue

您可以使用 AWS Glue 作业分析器分析和监控 AWS Glue 操作。它从收集 AWS Glue 作业收集原始数据,并将数据处理为存储在 Amazon CloudWatch 中的易读且近乎实时的指标。这些统计数据将保留并聚合在 CloudWatch 中,以便您可以访问历史信息以更好地了解您的应用程序的运行状况。

AWS Glue 指标概述

当您与 AWS Glue 交互时,它向 CloudWatch 发送指标。您可以使用 AWS Glue 控制台(首选方法)、CloudWatch 控制台控制面板或 AWS Command Line Interface (AWS CLI) 查看这些指标。

使用 AWS Glue 控制台控制面板查看指标

您可以查看作业的指标的摘要或详细图表,或作业运行的详细图表。有关您可以在 AWS Glue 控制台控制面板中访问的图表和指标的详细信息,请参阅。在 AWS Glue 控制台上处理作业

  1. 登录 AWS 管理理事务台然后打开 AWS Glue 控制台,地址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中,选择作业

  3. 作业列表中选择作业。

  4. 选择 Metrics (指标) 选项卡。

  5. 选择查看其他指标以查看更多详细指标。

使用 CloudWatch 控制面板查看指标

指标的分组首先依据服务命名空间,然后依据每个命名空间内的各种维度组合。

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,选择 Metrics

  3. 选择 Glue 命名空间。

使用 AWS CLI 查看指标

  • 在命令提示符处,使用以下命令。

    aws cloudwatch list-metrics --namespace "Glue"

AWS Glue 每隔 30 秒向 CloudWatch 报告一次指标,CloudWatch 指标控制面板配置为每分钟显示一次指标。AWS Glue 指标表示先前报告的值的增量值。在适当时,指标控制面板聚合(合计)30 秒值以获取整个最后一分钟的值。AWS Glue 指标在初始化GlueContext,并且一般仅在 Apache Spark 任务结束时更新这些信息。它们表示迄今为止所有已完成的 Spark 任务的聚合值。

但是,AWS Glue 传递给 CloudWatch 的 Spark 指标通常是表示在报告它们时的当前状态的绝对值。AWS Glue 每隔 30 秒向 CloudWatch 报告一次指标,并且指标控制面板通常会显示在最后 1 分钟收到的数据点的平均值。

AWS Glue 指标名称均采用以下类型的前缀之一:

  • glue.driver.— 其名称以此前缀开头的指标表示从 Spark 驱动程序上的所有执行程序聚合的 AWS Glue 指标,或对应于 Spark 驱动程序的 Spark 指标。

  • glue.executorId.executorId是特定 Spark 执行程序的编号。它与日志中列出的执行程序相对应。

  • glue.ALL. – 其名称以此前缀开头的指标聚合来自所有 Spark 执行程序的值。

AWS Glue 指标

AWS Glue 配置文件并每 30 秒向 CloudWatch 发送一次以下指标,AWS Glue 指标仪表板每分钟报告一次:

指标 描述

glue.driver.aggregate.bytesRead

在所有执行程序中运行的所有已完成的 Spark 任务从所有数据源读取的字节数。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):字节

可用于监控:

  • 读取字节数

  • Job 进度

  • JDBC 数据源。

  • Job 书签问题。

  • Job 运行之间的差异。

此指标的使用方式与glue.ALL.s3.filesystem.read_bytes度量,不同之处在于此指标在 Spark 任务结束时更新并捕获非 S3 数据源。

glue.driver.aggregate.elapsedTime

ETL 经过的时间(以毫秒为单位)(不包括作业引导时间)。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):毫秒

可用于确定作业运行平均需要多长的时间。

使用数据的一些方法:

  • 为流浪者设置警报。

  • 测量任务运行之间的差异。

glue.driver.aggregate.numCompletedStages

作业中已完成的阶段数量。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):计数

可用于监控:

  • Job 进度

  • 每个阶段的作业执行时间线,当与其他指标相关时。

使用数据的一些方法:

  • 识别作业执行过程中要求苛刻的阶段。

  • 为跨作业运行的相关峰值(要求苛刻的阶段)设置警报。

glue.driver.aggregate.numCompletedTasks

作业中已完成的任务的数量。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):计数

可用于监控:

  • Job 进度

  • 阶段内的并行性。

glue.driver.aggregate.numFailedTasks

失败的任务的数量。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):计数

可用于监控:

  • 导致作业任务失败的数据异常。

  • 导致作业任务失败的群集异常。

  • 导致作业任务失败的脚本异常。

这些数据可用于设置警报,以防出现数据、集群或脚本异常的故障增加。

glue.driver.aggregate.numKilledTasks

已终止的任务的数量。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):计数

可用于监控:

  • 数据偏斜中的异常,导致终止任务的异常 (OOM)。

  • 导致终止任务的异常 (OOM) 的脚本异常。

使用数据的一些方法:

  • 为指示数据异常的故障增加设置警报。

  • 为指示集群异常的失败增加设置警报。

  • 为指示脚本异常的失败增加设置警报。

glue.driver.aggregate.recordsRead

在所有执行程序中运行的所有已完成的 Spark 任务从所有数据源读取的记录数。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):计数

可用于监控:

  • 记录已读。

  • Job 进度

  • JDBC 数据源。

  • Job 书签问题。

  • Job 中的偏斜运行数天。

此指标的使用方式与glue.ALL.s3.filesystem.read_bytes量度,差异在于此指标在 Spark 任务结束时更新。

glue.driver.aggregate.shuffleBytesWritten

自上一次报告以来,所有执行程序写入的用于在它们之间洗牌数据的字节数(由 AWS Glue 指标仪表板聚合为前一分钟内为此目的写入的字节数)。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):字节

可用于监控:作业中的数据随机化(大型联接、GroupBy、重新分区、合并)。

使用数据的一些方法:

  • 在进一步处理之前,重新分区或解压缩大型输入文件。

  • 更均匀地重新分区数据以避免热键。

  • 在连接或 GroupBy 操作之前预过滤数据。

glue.driver.aggregate.shuffleLocalBytesRead

自上一次报告以来,所有执行程序读取的用于在它们之间洗牌数据的字节数(由 AWS Glue 指标仪表板聚合为前一分钟为此目的读取的字节数)。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(计数).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此,在 AWS Glue 指标仪表板中,SUM 统计数据用于聚合。

Unit (单位):字节

可用于监控:作业中的数据随机化(大型联接、GroupBy、重新分区、合并)。

使用数据的一些方法:

  • 在进一步处理之前,重新分区或解压缩大型输入文件。

  • 使用热键更均匀地重新分区数据。

  • 在连接或 GroupBy 操作之前预过滤数据。

glue.driver.BlockManager.disk.diskSpaceUsed_MB

在所有执行程序中使用的磁盘空间的兆字节数。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(仪表).

有效统计数据:平均值。这是一个 Spark 度量,报告为绝对值。

Unit (单位):兆字节

可用于监控:

  • 用于表示缓存 RDD 分区的块的磁盘空间。

  • 用于表示中间随机输出的块的磁盘空间。

  • 用于表示广播的块的磁盘空间。

使用数据的一些方法:

  • 识别由于磁盘使用率增加而导致的作业故障。

  • 识别导致溢出或洗牌的大型分区。

  • 增加预配置的 DPU 容量以纠正这些问题。

glue.driver.ExecutorAllocationManager.executors.numberAllExecutors

主动运行的作业执行程序的数量。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(仪表).

有效统计数据:平均值。这是一个 Spark 度量,报告为绝对值。

Unit (单位):计数

可用于监控:

  • Job 活动。

  • 错误的执行程序(只有几个执行程序运行)

  • 当前执行器级并行机制。

使用数据的一些方法:

  • 如果集群未充分利用,请事先重新分区或解压缩大型输入文件。

  • 识别由于错误情景而导致的阶段或作业执行延迟。

  • • 与数量进行比较,以了解预配置更多的 DPU 的积压。

glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors

满足当前负载所需的最大(主动运行和挂起)作业执行程序数。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(仪表).

有效统计数据:最大值。这是一个 Spark 度量,报告为绝对值。

Unit (单位):计数

可用于监控:

  • Job 活动。

  • 由于 DPU 容量或基本/失败的执行程序不可用,因此当前执行级别的并行性和尚未安排的挂起任务的积压。

使用数据的一些方法:

  • 确定计划队列的待处理/积压。

  • 识别由于错误情景而导致的阶段或作业执行延迟。

  • 与数量进行比较,以了解预配更多 DPU 的积压工作。

  • 增加预配置的 DPU 容量,以纠正待处理的执行程序积压。

glue.driver.jvm.heap.usage

glue.executorId.jvm.heap.usage

glue.ALL.jvm.heap.usage

驱动程序的 JVM 堆用于此驱动程序的内存量(比例:0-1),executorId 标识的执行程序,或所有执行程序。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(仪表).

有效统计数据:平均值。这是一个 Spark 度量,报告为绝对值。

Unit (单位):百分比

可用于监控:

  • 驱动程序内存不足状况 (OOM) 使用glue.driver.jvm.heap.usage

  • 使用执行程序内存不足状况 (OOM)glue.ALL.jvm.heap.usage

使用数据的一些方法:

  • 识别占用内存的执行程序 ID 和阶段。

  • 识别错误的执行程序 ID 和阶段。

  • 识别驱动程序内存不足状况 (OOM)。

  • 识别执行程序内存不足情况 (OOM) 并获取相应的执行程序 ID,以便能够从执行程序日志中获取堆栈跟踪。

  • 识别可能有数据偏差导致错误程序或内存不足情况 (OOM) 的文件或分区。

glue.driver.jvm.heap.used

glue.executorId.jvm.heap.used

glue.ALL.jvm.heap.used

驱动程序的 JVM 堆用于驱动程序的内存字节数,这是由executorId或所有执行程序。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(仪表).

有效统计数据:平均值。这是一个 Spark 度量,报告为绝对值。

Unit (单位):字节

可用于监控:

  • 驱动程序内存不足状况 (OOM)。

  • 执行程序内存不足状况 (OOM)。

使用数据的一些方法:

  • 识别占用内存的执行程序 ID 和阶段。

  • 识别错误的执行程序 ID 和阶段。

  • 识别驱动程序内存不足状况 (OOM)。

  • 识别执行程序内存不足情况 (OOM) 并获取相应的执行程序 ID,以便能够从执行程序日志中获取堆栈跟踪。

  • 识别可能有数据偏差导致错误程序或内存不足情况 (OOM) 的文件或分区。

glue.driver.s3.filesystem.read_bytes

glue.executorId.s3.filesystem.read_bytes

glue.ALL.s3.filesystem.read_bytes

驱动程序从 Amazon S3 读取的字节数,这是一个由executorId或自上一次报告以来的所有执行程序(由 AWS Glue 指标仪表板聚合为前一分钟读取的字节数)。

有效维度:JobNameJobRunId, 和Type(仪表).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此在 AWS Glue 指标仪表板上,SUM 统计数据用于聚合。AWS Glue 指标控制面板上曲线下的区域可用于直观地比较两个不同作业运行读取的字节。

Unit (单位):字节数

可用于监控:

  • ETL 数据移动。

  • Job 进度

  • Job 书签问题(数据已处理、重新处理和跳过)。

  • 从外部数据源读取和摄入速率的比较。

  • 任务运行之间的差异。

生成的数据可用于:

  • DPU 的能力规划。

  • 为作业运行和作业阶段读取数据的大峰值或下降设置警报。

glue.driver.s3.filesystem.write_bytes

glue.executorId.s3.filesystem.write_bytes

glue.ALL.s3.filesystem.write_bytes

驱动程序写入 Amazon S3 的字节数,这是一个由executorId或自上一次报告以来的所有执行程序(由 AWS Glue 指标仪表板聚合为前一分钟写入的字节数)。

有效维度:JobNameJobRunId, 和Type(仪表).

有效统计数据:SUM. 此指标是上次报告值的增量值,因此在 AWS Glue 指标仪表板上,SUM 统计数据用于聚合。AWS Glue 指标仪表板上曲线下的区域可用于直观地比较由两个不同作业运行写入的字节。

Unit (单位):字节

可用于监控:

  • ETL 数据移动。

  • Job 进度

  • Job 书签问题(数据已处理、重新处理和跳过)。

  • 从外部数据源读取和摄入速率的比较。

  • 任务运行之间的差异。

使用数据的一些方法:

  • DPU 的能力规划。

  • 为作业运行和作业阶段读取数据的大峰值或下降设置警报。

glue.driver.system.cpuSystemLoad

glue.executorId.system.cpuSystemLoad

glue.ALL.system.cpuSystemLoad

驱动程序使用的 CPU 系统负载量(比例:0-1),这是一个由executorId或所有执行程序。

有效维度:JobName(AWS Glue Job 的名称)、JobRunId(JobRun ID。或ALL) 和Type(仪表).

有效统计数据:平均值。此度量报告为绝对值。

Unit (单位):百分比

可用于监控:

  • 驱动程序 CPU 负载。

  • 执行程序 CPU 负载。

  • 检测 Job 业中的 CPU 绑定或 IOO 绑定的执行程序或阶段。

使用数据的一些方法:

  • DPU 容量规划以及 IO 度量(读取字节/随机播放字节、任务并行度)和所需最大执行程序数量度量。

  • 识别 CPU /IOO 绑定比率。这允许对具有较低 CPU 利用率的可拆分数据集的长时间运行的作业进行重新分区并增加预配置容量。

AWS Glue 指标的维度

AWS Glue 指标使用 AWS Glue 命名空间,并为以下维度提供指标:

维度 描述

JobName

此维度筛选特定 AWS Glue 作业的所有作业运行指标。

JobRunId

此维度筛选由 JobRun ID 运行的特定 AWS Glue 作业的指标,或ALL

Type

此维度按count(总数)或gauge(在某个时间点的值)。

有关更多信息,请参阅 Amazon CloudWatch 用户指南