使用 CloudWatch 监控指标 - Amazon EMR

使用 CloudWatch 监控指标

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

如何使用 Amazon EMR 指标?

下表显示了 Amazon EMR 报告指标的常见用途。这些是入门建议,并不全面。有关由 Amazon EMR 报告的指标的完整列表,请参阅Amazon EMR 在 CloudWatch 中的报告指标

如何? 相关指标
跟踪我的集群进展 查看 RunningMapTasksRemainingMapTasksRunningReduceTasksRemainingReduceTasks 指标。
检测处于空闲状态的集群 IsIdle 指标可跟踪某个集群 (非当前运行任务) 是否正在实时运行。您可以设置当集群闲置达到给定时长 (例如 30 分钟) 时便可引发的警报。
检测节点何时用尽存储空间 MRUnhealthyNodes 指标跟踪一个或多个核心节点或任务节点何时用尽本地磁盘存储空间并转换到 UNHEALTHY YARN 状态。例如,核心节点或任务节点在磁盘中的运行空间不足,并将无法运行任务。
检测集群何时用尽存储空间 HDFSUtilization 指标监控集群的组合 HDFS 容量,可能需要调整集群大小以添加更多核心节点。例如,HDFS 利用率较高,这可能会影响任务和集群运行状况。
检测集群何时以更少容量运行 MRLostNodes 指标跟踪一个或多个核心节点或任务节点何时无法与主节点通信。例如,主节点无法访问核心节点或任务节点。

有关更多信息,请参阅 集群因 NO_SLAVE_LEFT 和核心节点 FAILED_BY_MASTER 而终止AWSSupport-AnalyzeEMRLogs

访问 Amazon EMR 的 CloudWatch 指标

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

在 Amazon EMR 控制台中查看指标

  1. 通过以下链接打开 Amazon EMR 控制台:https://console.aws.amazon.com/elasticmapreduce/

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

  3. 选择监控以查看有关该集群的信息。选择 Cluster Status(集群状态)、Map/Reduce(映射/化简)、Node Status(节点状态)或 IO 选项卡中的任何一个,从而加载有关集群进度和运行状况的报告。

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

设置指标警报

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

Amazon EMR 在 CloudWatch 中的报告指标

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

Amazon EMR 指标

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

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

注意

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

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

指标 描述
集群状态

处于空闲状态

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

使用案例:监控集群性能

单位:布尔值

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 的应用程序数。

使用案例:监控集群进度

单位:计数

节点状态

CoreNodesRunning

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

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

单位:计数

CoreNodesPending

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

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

单位:计数

LiveDataNodes

从 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

S3BytesWritten

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

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

单位:计数

S3BytesRead

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

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

单位:计数

HDFSUtilization

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

使用案例:分析集群性能

单位:百分比

HDFSBytesRead

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

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

单位:计数

HDFSBytesWritten

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

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

单位:计数

MissingBlocks

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

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

单位:计数

CorruptBlocks

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

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

单位:计数

TotalLoad

并发数据传输的总数。

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

单位:计数

MemoryTotalMB

集群中的总内存量。

使用案例:监控集群进度

单位:计数

MemoryReservedMB

预留内存量。

使用案例:监控集群进度

单位:计数

MemoryAvailableMB

可供分配的内存量。

使用案例:监控集群进度

单位:计数

YARNMemoryAvailablePercentage

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

单位:百分比

MemoryAllocatedMB

分配给集群的内存量。

使用案例:监控集群进度

单位:计数

PendingDeletionBlocks

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

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

单位:计数

UnderReplicatedBlocks

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

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

单位:计数

DfsPendingReplicationBlocks

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

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

单位:计数

CapacityRemainingGB

剩余 HDFS 磁盘容量。

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

单位:计数

Hadoop 1 指标如下:

指标 描述
集群状态

处于空闲状态

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

使用案例:监控集群性能

单位:布尔值

JobsRunning

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

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

单位:计数

JobsFailed

集群中失败的任务数量。

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

单位:计数

映射/减少

MapTasksRunning

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

使用案例:监控集群进度

单位:计数

MapTasksRemaining

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

使用案例:监控集群进度

单位:计数

MapSlotsOpen

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

使用案例:分析集群性能

单位:计数

RemainingMapTasksPerSlot

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

使用案例:分析集群性能

单位:比率

ReduceTasksRunning

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

使用案例:监控集群进度

单位:计数

ReduceTasksRemaining

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

使用案例:监控集群进度

单位:计数

ReduceSlotsOpen

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

使用案例:分析集群性能

单位:计数

节点状态

CoreNodesRunning

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

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

单位:计数

CoreNodesPending

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

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

单位:计数

LiveDataNodes

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

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

单位:百分比

TaskNodesRunning

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

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

单位:计数

TaskNodesPending

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

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

单位:计数

LiveTaskTrackers

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

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

单位:百分比

IO

S3BytesWritten

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

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

单位:计数

S3BytesRead

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

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

单位:计数

HDFSUtilization

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

使用案例:分析集群性能

单位:百分比

HDFSBytesRead

从 HDFS 读取的字节数。

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

单位:计数

HDFSBytesWritten

写入 HDFS 的字节数。

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

单位:计数

MissingBlocks

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

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

单位:计数

TotalLoad

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

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

单位:计数

集群容量指标

以下指标指示集群的当前容量或目标容量。仅当启用了托管扩展或自动终止时,这些指标才可用。

对于由实例集组成的集群,将在 Units 中测量集群容量指标。对于由实例组组成的集群,将根据托管扩展策略中使用的单位类型在 NodesVCPU 中测量集群容量指标。有关更多信息,请参阅 《Amazon EMR 管理指南》中的使用 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 版本 6.4.0 及更高版本。要了解有关自动终止的更多信息,请参阅 使用自动终止策略

指标 描述
TotalNotebookKernels 集群上运行和空闲笔记本内核的总数。

此指标仅可用于 Amazon EMR 版本 6.4.0 及更高版本。

AutoTerminationIsClusterIdle 表示集群是否正被使用。

值为 0 表示集群当前正被以下组件之一使用:

  • YARN 应用程序

  • HDFS

  • 笔记本

  • 群集上的 UI,例如 Spark 历史记录服务器

值为 1 表示集群处于空闲状态。Amazon EMR 检查是否存在持续处于闲置状态的集群 (AutoTerminationIsClusterIdle = 1)。当某一集群的空闲时间等于自动终止策略中的 IdleTimeout 值时,Amazon EMR 将终止该集群。

Amazon EMR 指标的维度

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

维度 描述
JobFlowId 与 集群 ID 相同,它是集群的唯一标识符(以 j-XXXXXXXXXXXXX 形式表示)。您可以通过在 Amazon EMR 控制台中单击集群来找到该值。