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

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

使用 Amazon CloudWatch 指标监控 Amazon Glue

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

注意

启用任务指标并且创建 CloudWatch 自定义指标时,可能需要支付额外费用。有关更多信息,请参阅 Amazon CloudWatch 定价

Amazon Glue 指标概述

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

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

您可以查看作业的指标的摘要或详细图表,或作业运行的详细图表。

  1. 登录 Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

  2. 在导航窗格中,选择作业运行监控

  3. 作业运行中,选择操作以停止当前正在运行的作业、查看作业或倒回作业书签。

  4. 选择一个作业,然后选择查看运行详细信息以查看有关该作业运行的其他信息。

使用 CloudWatch 控制台控制面板查看指标

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

  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择指标

  3. 选择 Glue 命名空间。

使用 Amazon CLI 查看指标
  • 在命令提示符处,使用以下命令。

    aws cloudwatch list-metrics --namespace Glue

Amazon Glue 每隔 30 秒向 CloudWatch 报告一次指标,CloudWatch 指标控制面板配置为每分钟显示一次指标。Amazon Glue 指标表示先前报告的值的增量值。在适当时,指标控制面板会聚合(合计)30 秒值以获取整个最后一分钟的值。

Spark 作业的 Amazon Glue 指标行为

在脚本中初始化 GlueContext 时启用 Amazon Glue 指标,并且一般仅在 Apache Spark 任务结束时更新这些指标。它们表示迄今为止所有已完成的 Spark 任务的聚合值。

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

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

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

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

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

Amazon Glue 指标

Amazon Glue 会每隔 30 秒配置以下指标并将其发送到 CloudWatch,Amazon Glue 指标控制面板每分钟报告一次:

指标 描述

glue.driver.aggregate.bytesRead

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:字节

可用于监控:

  • 读取的字节数。

  • 任务进度。

  • JDBC 数据源。

  • 任务书签问题。

  • 任务运行之间的差异。

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

glue.driver.aggregate.elapsedTime

ETL 运行时间(以毫秒为单位,不包括任务的引导启动时间)。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:毫秒

可用于确定任务运行的平均时长。

数据的一些使用方式:

  • 为落后者设置警报。

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

glue.driver.aggregate.numCompletedStages

任务中已完成的阶段数量。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:计数

可用于监控:

  • 任务进度。

  • 每个阶段的任务执行时间线(与其他指标相关时)。

数据的一些使用方式:

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

  • 为任务运行之间的关联峰值(要求苛刻的阶段)设置警报。

glue.driver.aggregate.numCompletedTasks

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:计数

可用于监控:

  • 任务进度。

  • 某个阶段内的并行度。

glue.driver.aggregate.numFailedTasks

失败的任务数。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:计数

可用于监控:

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

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

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

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

glue.driver.aggregate.numKilledTasks

已终止的任务数量。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:计数

可用于监控:

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

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

数据的一些使用方式:

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

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

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

glue.driver.aggregate.recordsRead

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:计数

可用于监控:

  • 读取的记录数。

  • 任务进度。

  • JDBC 数据源。

  • 任务书签问题。

  • 几天内的任务运行偏斜。

此指标可以按 glue.ALL.s3.filesystem.read_bytes 指标的方式使用,不同之处在于此指标在 Spark 任务结束时更新。

glue.driver.aggregate.shuffleBytesWritten

自上次报告以来所有执行程序为在它们之间对数据进行随机排序而写入的字节数(由 Amazon Glue 指标控制面板聚合为前一分钟内为此目的写入的字节数)。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:字节

可用于监控:任务(大型联接、分组依据、重新分区、合并)中的数据随机排序。

数据的一些使用方式:

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

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

  • 在联接或分组依据操作之前预筛选数据。

glue.driver.aggregate.shuffleLocalBytesRead

自上次报告以来所有执行程序为在它们之间对数据进行随机排序而读取的字节数(由 Amazon Glue 指标控制面板聚合为前一分钟内为此目的读取的字节数)。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。

单位:字节

可用于监控:任务(大型联接、分组依据、重新分区、合并)中的数据随机排序。

数据的一些使用方式:

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

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

  • 在联接或分组依据操作之前预筛选数据。

glue.driver.BlockManager.disk.diskSpaceUsed_MB

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(量规)。

有效统计数据:平均值。这是 Spark 指标,报告为绝对值。

单位:兆字节

可用于监控:

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

  • 用于表示中间随机排序输出的数据块所用的磁盘空间。

  • 用于表示直播的数据块所用的磁盘空间。

数据的一些使用方式:

  • 识别因磁盘使用率增加而导致的任务故障。

  • 识别导致溢出或随机排序的大型分区。

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

glue.driver.ExecutorAllocationManager.executors.numberAllExecutors

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(量规)。

有效统计数据:平均值。这是 Spark 指标,报告为绝对值。

单位:计数

可用于监控:

  • 任务活动。

  • 落后的执行程序(只有几个执行程序在运行)

  • 当前执行程序级并行度。

数据的一些使用方式:

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

  • 识别因落后场景而导致的阶段或任务执行延迟。

  • • 与 numberMaxNeededExecutors 进行比较,了解用于预置更多 DPU 的积压。

glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors

为满足当前负载所需的最大(主动运行和待处理)任务执行程序的数量。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(量规)。

有效统计数据:最大值 这是 Spark 指标,报告为绝对值。

单位:计数

可用于监控:

  • 任务活动。

  • 因 DPU 容量导致执行程序不可用或执行程序终止/失败,尚未安排的待处理任务的当前执行级并行度和积压。

数据的一些使用方式:

  • 识别计划队列的待处理/积压。

  • 识别因落后场景而导致的阶段或任务执行延迟。

  • 与 numberAllExecutors 进行比较,了解用于预置更多 DPU 的积压。

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

glue.driver.jvm.heap.usage

glue.executorId.jvm.heap.usage

glue.ALL.jvm.heap.usage

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(量规)。

有效统计数据:平均值。这是 Spark 指标,报告为绝对值。

单位:百分比

可用于监控:

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

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

数据的一些使用方式:

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

  • 识别落后执行程序 ID 和阶段。

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

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

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

glue.driver.jvm.heap.used

glue.executorId.jvm.heap.used

glue.ALL.jvm.heap.used

驱动程序的 JVM 堆所用的内存字节数,executorId 表示的执行程序或所有执行程序。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(量规)。

有效统计数据:平均值。这是 Spark 指标,报告为绝对值。

单位:字节

可用于监控:

  • 驱动程序内存不足状况(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

自上次报告以来,驱动程序、executorId 标识的执行程序、所有执行程序从 Amazon S3 读取的字节数(由 Amazon Glue 指标控制面板聚合为上一分钟内读取的字节数)。

有效维度:JobNameJobRunIdType(量规)。

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

单位:字节。

可用于监控:

  • ETL 数据移动。

  • 任务进度。

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

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

  • 任务运行之间的差异。

生成的数据可用于:

  • DPU 容量规划。

  • 为任务运行和任务阶段的数据读取中的大型峰值或低谷设置警报。

glue.driver.s3.filesystem.write_bytes

glue.executorId.s3.filesystem.write_bytes

glue.ALL.s3.filesystem.write_bytes

自上次报告以来,驱动程序、executorId 标识的执行程序、所有执行程序从 Amazon S3 写入的字节数(由 Amazon Glue 指标控制面板聚合为上一分钟内写入的字节数)。

有效维度:JobNameJobRunIdType(量规)。

有效统计数据:SUM 此指标是上次报告值的增量值,因此,在 Amazon Glue 指标控制面板上,SUM 统计数据用于聚合。Amazon Glue 指标控制面板上曲线下面的区域可用于直观比较两个不同任务运行写入的字节。

单位:字节

可用于监控:

  • ETL 数据移动。

  • 任务进度。

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

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

  • 任务运行之间的差异。

数据的一些使用方式:

  • DPU 容量规划。

  • 为任务运行和任务阶段的数据读取中的大型峰值或低谷设置警报。

glue.driver.streaming.numRecords

微批处理中接收的记录数。此指标仅适用于 Amazon Glue 流式传输任务(采用 Amazon Glue 2.0 版及更高版本)。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:总计、最大值、最小值、平均值、百分比

单位:计数

可用于监控:

  • 读取的记录数。

  • 任务进度。

glue.driver.streaming.batchProcessingTimeInMs

处理批处理所需的时间(以毫秒为单位)。此指标仅适用于 Amazon Glue 流式传输任务(采用 Amazon Glue 2.0 版及更高版本)。

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(计数)。

有效统计数据:总计、最大值、最小值、平均值、百分比

单位:计数

可用于监控:

  • 任务进度。

  • 脚本性能。

glue.driver.system.cpuSystemLoad

glue.executorId.system.cpuSystemLoad

glue.ALL.system.cpuSystemLoad

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

有效维度:JobName(Amazon Glue 任务的名称)、JobRunId(JobRun ID 或 ALL)和 Type(量规)。

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

单位:百分比

可用于监控:

  • 驱动程序 CPU 负载。

  • 执行程序 CPU 负载。

  • 检测任务中的 CPU 绑定或 IO 绑定的执行程序或阶段。

数据的一些使用方式:

  • DPU 容量与 IO 指标(字节读取/随机排序字节、任务并行度)和所需最大执行程序数量指标一起规划。

  • 识别 CPU/IO 绑定比率。此操作允许使用 CPU 利用率较低的可拆分数据集,对长时间运行的任务进行重新分区并增加预置容量。

Amazon Glue 指标的维度

Amazon Glue 指标使用 Amazon Glue 命名空间并提供以下维度的指标。

维度 描述

JobName

此维度筛选特定 Amazon Glue 任务的所有任务运行的指标。

JobRunId

此维度按 JobRun ID 或 ALL 筛选特定 Amazon Glue 任务的所有任务运行的指标。

Type

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

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