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

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

使用 CloudWatch 监控指标

指标每五分钟更新一次,然后自动收集并推送到每个 Amazon EMR 群集的 CloudWatch。此时间间隔是不可配置的。CloudWatch 中报告的 Amazon EMR 指标是免费的。这些 5 分钟的数据点指标会存档 63 天,之后数据将被丢弃。

如何使用 Amazon EMR 指标?

下表显示了 Amazon EMR 报告的指标的常见用途。下面列出的是能够带您入门的启发式问题,但并不全面。有关 Amazon EMR 报告的指标的完整列表,请参阅亚马逊 EMR 在云监视中报告的指标.

如何? 相关指标
跟踪我的集群进展 查看 RunningMapTasksRemainingMapTasksRunningReduceTasksRemainingReduceTasks 指标。
检测处于空闲状态的集群 IsIdle 指标可跟踪某个集群 (非当前运行任务) 是否正在实时运行。您可以设置当集群闲置达到给定时长 (例如 30 分钟) 时便可引发的警报。
检测节点何时用尽存储空间 HDFSUtilization 指标是目前所用磁盘空间的百分比。如果此值高于应用程序的可接受水平 (如使用了 80% 的容量)。您可能需要重新调整集群的大小并添加更多核心节点。

访问 Amazon EMR 的 CloudWatch 指标

您可以使用 Amazon EMR 控制台或 CloudWatch 控制台查看 Amazon EMR 报告给 CloudWatch 的指标。您还可以使用 CloudWatch CLI 命令检索指标mon-get-stats或 CloudWatchGetMetricStatisticsAPI。有关使用 CloudWatch 查看或检索 Amazon EMR 指标的更多信息,请参阅Amazon CloudWatch 用户指南.

在 Amazon EMR 控制台中查看指标

  1. 从打开 Amazon EMR 控制台https://console.aws.amazon.com/elasticmapreduce/.

  2. 要查看集群的指标,请选择集群以显示 Summary (摘要) 窗格。

  3. 选择监控以查看有关该集群的信息。选择任意一个名为集群状态映射/减少节点状态,或者IO加载有关集群的进度和运行状况的报告。

  4. 选择要查看的指标之后,您可以选取图表大小。编辑 Start (开始)End (结束) 字段以按特定时间范围筛选指标。

设置指标警报

Amazon EMR 会将指标推送到 CloudWatch,这意味着您可以使用 CloudWatch 设置有关 Amazon EMR 指标的警报。例如,您可以在 CloudWatch 中配置警报,用于在 HDFS 使用率上升到 80% 以上时立即向您发送电子邮件。有关详细说明,请参阅创建或编辑 CloudWatch 警报中的Amazon CloudWatch 用户指南.

亚马逊 EMR 在云监视中报告的指标

下表列出了 Amazon EMR 在控制台中报告并推送到 CloudWatch 的指标。

Amazon EMR 指标

Amazon EMR 会将数种指标的数据发送到 CloudWatch。所有 Amazon EMR 群集会以每五分钟一次的间隔自动发送指标。指标会存档两周。两周后,数据会被丢弃。

AWS/ElasticMapReduce 命名空间包括以下指标。

注意

Amazon EMR 从集群提取指标。如果集群无法连接到,则在集群再次变成可用状态之前,不会报告任何指标。

以下指标适用于 Hadoop 2.x 版本上运行的集群。

指标 说明
集群状态

处于空闲状态

指示集群不再执行任务,但仍处于活动状态并会产生费用。如果没有任何任务和作业处于运行状态,则此指标设置为 1;否则设置为 0。系统每隔五分钟检查一次该值,值为 1 仅表示在检查时集群处于空闲状态,并不表示它整个五分钟内都处于空闲状态。为避免误报,当多次连续 5 分钟检查获得的值均为 1 时,您应提出警报。例如,当该值在三十分钟或更长时间内都为 1 时,您应提出警报。

使用案例:监控集群性能

单位:Boolean

ContainerAllocated

ResourceManager 分配的资源容器数。

使用案例:监控集群进度

单位:计数

ContainerReserved

预留的容器数。

使用案例:监控集群进度

单位:计数

ContainerPending

队列中尚未分配的容器数。

使用案例:监控集群进度

单位:计数

ContainerPendingRatio

待处理的容器与已分配的容器的比值 (ContainerPendingRatio = ContainerPending/ContainerAllocated)。如果 ContainerAllocated = 0,则 ContainerPendingRatio = ContainerPending。值 ContainerPendingRatio 表示数字,而不是百分比。此值对基于容器分配行为扩展集群资源很有用。

单位:计数

AppsCompleted

提交给 YARN 并且已完成的应用程序数。

使用案例:监控集群进度

单位:计数

AppsFailed

提交给 YARN 并且未能完成的应用程序数。

使用案例:监视群集进度,监视群集运行状况

单位:计数

AppsKilled

提交给 YARN 并且已终止的应用程序数。

使用案例:监视群集进度,监视群集运行状况

单位:计数

AppsPending

提交给 YARN 并且处于挂起状态的应用程序数。

使用案例:监控集群进度

单位:计数

AppsRunning

提交给 YARN 并且正在运行的应用程序数。

使用案例:监控集群进度

单位:计数

AppsSubmitted

提交给 YARN 的应用程序数。

使用案例:监控集群进度

单位:计数

节点状态

正在运行的核心节点

处于运行状态的核心节点的数量。仅当对应的实例组存在时,才会报告此指标的数据点。

使用案例:监控群集运行状况

单位:计数

待处理的核心节点

等待分配的核心节点的数量。请求的所有核心节点可能不会立即可用;此指标报告挂起的请求。仅当对应的实例组存在时,才会报告此指标的数据点。

使用案例:监控群集运行状况

单位:计数

实时数据节点

从 Hadoop 接收任务的数据节点的百分率。

使用案例:监控群集运行状况

单位:百分比

MRTotalNodes

当前可供 MapReduce 作业使用的节点数。等效于 YARN 指标 mapred.resourcemanager.TotalNodes

使用案例:监控集群进度

单位:计数

MRActiveNodes

当前正在运行 MapReduce 任务或作业的节点数。等效于 YARN 指标 mapred.resourcemanager.NoOfActiveNodes

使用案例:监控集群进度

单位:计数

MRLostNodes

分配给 MapReduce 并且已标记为 LOST 状态的节点数。等效于 YARN 指标 mapred.resourcemanager.NoOfLostNodes

使用案例:监视群集运行状况,监视群集进度

单位:计数

MRUnhealthyNodes

当前可供 MapReduce 作业使用的标记为 UNHEALTHY 状态的节点数。等效于 YARN 指标 mapred.resourcemanager.NoOfUnhealthyNodes

使用案例:监控集群进度

单位:计数

MRDecommissionedNodes

分配给 MapReduce 应用程序并且已标记为 DECOMMISSIONED 状态的节点数。等效于 YARN 指标 mapred.resourcemanager.NoOfDecommissionedNodes

使用案例:监视群集运行状况,监视群集进度

单位:计数

MRRebootedNodes

可供 MapReduce 使用的已重新启动并标记为 REBOOTED 状态的节点数。等效于 YARN 指标 mapred.resourcemanager.NoOfRebootedNodes

使用案例:监视群集运行状况,监视群集进度

单位:计数

MultiMasterInstanceGroupNodesRunning

正在运行的主节点的数量。

使用案例:监控主节点故障和替换

单位:计数

MultiMasterInstanceGroupNodesRunningPercentage

正在运行的主节点超过所请求的主节点实例计数的百分比。

使用案例:监控主节点故障和替换

单位:百分比

MultiMasterInstanceGroupNodesRequested

请求的主节点数。

使用案例:监控主节点故障和替换

单位:计数

IO

写入到 S3 的字节数

写入 Amazon S3 的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其他工作负载。

使用案例:分析群集性能,监控群集进度

单位:计数

从 S3 读取的字节数

从 Amazon S3 读取的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其他工作负载。

使用案例:分析群集性能,监控群集进度

单位:计数

HDFS 利用率

当前使用的 HDFS 存储的百分率。

使用案例:分析集群性能

单位:百分比

从 HDFS 读取的字节数

从 HDFS 读取的字节数。此指标仅聚合 MapReduce 任务,并不适用于 EMR 上的其他工作负载。

使用案例:分析群集性能,监控群集进度

单位:计数

写入 HDFS 的字节数

写入 HDFS 的字节数。此指标仅聚合 MapReduce 任务,并不适用于 EMR 上的其他工作负载。

使用案例:分析群集性能,监控群集进度

单位:计数

缺少块

HDFS 在其中没有副本的数据块的数量。这些数据块可能已损坏。

使用案例:监控集群运行状况

单位:计数

CorruptBlocks

HDFS 报告的受损数据块的数量。

使用案例:监控集群运行状况

单位:计数

总负载

并发数据传输的总数。

使用案例:监控集群运行状况

单位:计数

MemoryTotalMB

集群中的总内存量。

使用案例:监控集群进度

单位:计数

MemoryReservedMB

预留内存量。

使用案例:监控集群进度

单位:计数

MemoryAvailableMB

可供分配的内存量。

使用案例:监控集群进度

单位:计数

YARNMemoryAvailablePercentage

可用于 YARN 的剩余内存的百分比 (YARNMemoryAvailablePercentage = MemoryAvailableMB / MemoryTotalMB)。此值对基于 YARN 内存使用量扩展集群资源很有用。

单位:百分比

MemoryAllocatedMB

分配给集群的内存量。

使用案例:监控集群进度

单位:计数

PendingDeletionBlocks

标记为进行删除的数据块数。

使用案例:监视群集进度,监视群集运行状况

单位:计数

UnderReplicatedBlocks

需要复制一次或多次的数据块数。

使用案例:监视群集进度,监视群集运行状况

单位:计数

DfsPendingReplicationBlocks

数据块复制状态:所复制的数据块、复制请求的存在时间以及不成功的复制请求。

使用案例:监视群集进度,监视群集运行状况

单位:计数

CapacityRemainingGB

剩余 HDFS 磁盘容量。

使用案例:监视群集进度,监视群集运行状况

单位:计数

Hadoop 1 指标如下:

指标 说明
集群状态

处于空闲状态

指示集群不再执行任务,但仍处于活动状态并会产生费用。如果没有任何任务和作业处于运行状态,则此指标设置为 1;否则设置为 0。系统每隔五分钟检查一次该值,值为 1 仅表示在检查时集群处于空闲状态,并不表示它整个五分钟内都处于空闲状态。为避免误报,当多次连续 5 分钟检查获得的值均为 1 时,您应提出警报。例如,当该值在三十分钟或更长时间内都为 1 时,您应提出警报。

使用案例:监控集群性能

单位:Boolean

正在运行的作业

集群中当前处于运行状态的任务数量。

使用案例:监控集群运行状况

单位:计数

作业失败

集群中失败的任务数量。

使用案例:监控集群运行状况

单位:计数

映射/减少

MapTasksRunning

每个作业处于运行中的映射任务的数量。如果您安装了计划程序并且有多个作业在运行,那么会生成多个图表。

使用案例:监控集群进度

单位:计数

MapTasksRemaining

每个作业的剩余映射任务的数量。如果您安装了计划程序并且有多个作业在运行,那么会生成多个图表。剩余映射任务是指未处于任何以下状态的任务:正在运行、已终止或已完成。

使用案例:监控集群进度

单位:计数

打开的映射槽位

未使用的映射任务容量。该指标将计算为给定集群的最大映射任务数与该集群中当前运行的映射任务总数之差。

使用案例:分析集群性能

单位:计数

每个槽位剩余的映射任务

剩余映射任务的总数与集群中可用映射插槽总数之比。

使用案例:分析集群性能

单位:Ratio

ReduceTasksRunning

每个作业处于运行中的缩减任务的数量。如果您安装了计划程序并且有多个作业在运行,那么会生成多个图表。

使用案例:监控集群进度

单位:计数

ReduceTasksRemaining

每个作业的剩余缩减任务的数量。如果您安装了计划程序并且有多个作业在运行,那么会生成多个图表。

使用案例:监控集群进度

单位:计数

打开的减少槽位

未使用的缩减任务容量。该指标将计算为给定集群的最大缩减任务容量与该集群中当前运行的缩减任务数之差。

使用案例:分析集群性能

单位:计数

节点状态

正在运行的核心节点

处于运行状态的核心节点的数量。仅当对应的实例组存在时,才会报告此指标的数据点。

使用案例:监控集群运行状况

单位:计数

待处理的核心节点

等待分配的核心节点的数量。请求的所有核心节点可能不会立即可用;此指标报告挂起的请求。仅当对应的实例组存在时,才会报告此指标的数据点。

使用案例:监控集群运行状况

单位:计数

实时数据节点

从 Hadoop 接收任务的数据节点的百分率。

使用案例:监控集群运行状况

单位:百分比

正在运行的任务节点

处于运行状态的任务节点的数量。仅当对应的实例组存在时,才会报告此指标的数据点。

使用案例:监控集群运行状况

单位:计数

待处理的任务节点

等待分配的任务节点的数量。请求的所有任务节点可能不会立即可用;此指标报告挂起的请求。仅当对应的实例组存在时,才会报告此指标的数据点。

使用案例:监控集群运行状况

单位:计数

实时任务跟踪程序

处于运行状态的任务跟踪程序的百分率。

使用案例:监控集群运行状况

单位:百分比

IO

写入到 S3 的字节数

写入 Amazon S3 的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其他工作负载。

使用案例:分析群集性能,监控群集进度

单位:计数

从 S3 读取的字节数

从 Amazon S3 读取的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其他工作负载。

使用案例:分析群集性能,监控群集进度

单位:计数

HDFS 利用率

当前使用的 HDFS 存储的百分率。

使用案例:分析集群性能

单位:百分比

从 HDFS 读取的字节数

从 HDFS 读取的字节数。

使用案例:分析群集性能,监控群集进度

单位:计数

写入 HDFS 的字节数

写入 HDFS 的字节数。

使用案例:分析群集性能,监控群集进度

单位:计数

缺少块

HDFS 在其中没有副本的数据块的数量。这些数据块可能已损坏。

使用案例:监控集群运行状况

单位:计数

总负载

集群中的所有 DataNode 报告的读取器和写入器的当前总数。

使用案例:诊断高 I/O 可能导致作业执行性能低的程度。运行 DataNode 守护程序的工作线程节点还必须执行映射并减少任务。随着时间的推移,持续的高 TotalLoad 值可能指示高 I/O 可能是导致性能低的因素。此值的偶尔峰值属于常见情况,通常不指示问题。

单位:计数

集群容量指标

以下指标指示集群的当前容量或目标容量。仅当启用了托管扩展时,这些指标才可用。对于由实例队列组成的集群,将在 Units 中测量集群容量指标。对于由实例组组成的集群,将根据托管扩展策略中使用的单元类型在 NodesVCPU 中测量集群容量指标。有关更多信息,请参阅 。使用 EMR 管理的扩展中的Amazon EMR 管理指南.

指标 说明
  • TotalUnitsRequested

  • TotalNodesRequested

  • TotalVCPURequested

集群中由托管扩展确定的单元/节点/vCPU 的目标总数。

单位:计数

  • TotalUnitsRunning

  • TotalNodesRunning

  • TotalVCPURunning

正在运行的集群中可用单元/节点/vCPU 的当前总数。当请求集群大小调整时,将在集群中添加或删除新实例后更新此指标。

单位:计数

  • CoreUnitsRequested

  • CoreNodesRequested

  • CoreVCPURequested

集群中由托管扩展确定的核心单元/节点//vCPU 的目标数量。

单位:计数

  • CoreUnitsRunning

  • CoreNodesRunning

  • CoreVCPURunning

集群中正在运行的核心单元/节点/vCPU 的当前数量。

单位:计数

  • TaskUnitsRequested

  • TaskNodesRequested

  • TaskVCPURequested

集群中由托管扩展确定的任务单元/节点/vCPU 的目标数量。

单位:计数

  • TaskUnitsRunning

  • TaskNodesRunning

  • TaskVCPURunning

集群中正在运行的任务单元/节点/vCPU 的当前数量。

单位:计数

Amazon EMR 指标的维度

Amazon EMR 数据可使用下表中的任一维度进行筛选。

维度 说明
JobFlowId 与集群 ID 相同,它是集群的唯一标识符(以形式表示)j-XXXXXXXXXXXXX. 您可以通过在 Amazon EMR 控制台中单击集群来找到此值。
JobId 集群中作业的标识符。您可以使用此标识符从集群返回的指标中筛选出那些适用于集群中单个任务的指标。JobId 的形式为 job_XXXXXXXXXXXX_XXXX。