使用 CloudWatch 指标监控 Amazon EMR 指标
指标每五分钟更新一次,然后自动收集并推送到每个 Amazon EMR 集群的 CloudWatch。此时间间隔是不可配置的。CloudWatch 中报告的 Amazon EMR 指标无需任何费用。这些五分钟的数据点指标会归档 63 天,之后数据将被丢弃。
如何使用 Amazon EMR 指标?
下表显示了 Amazon EMR 报告指标的常见用途。这些是入门建议,并不全面。有关由 Amazon EMR 报告的指标的完整列表,请参阅Amazon EMR 在 CloudWatch 中的报告指标。
如何? | 相关指标 |
---|---|
跟踪我的集群进展 | 查看 RunningMapTasks 、RemainingMapTasks 、RunningReduceTasks 和 RemainingReduceTasks 指标。 |
检测处于空闲状态的集群 | IsIdle 指标可跟踪某个集群 (非当前运行任务) 是否正在实时运行。您可以设置当集群闲置达到给定时长 (例如 30 分钟) 时便可引发的警报。 |
检测节点何时用尽存储空间 | MRUnhealthyNodes 指标跟踪一个或多个核心节点或任务节点何时用尽本地磁盘存储空间并转换到 UNHEALTHY YARN 状态。例如,核心节点或任务节点在磁盘中的运行空间不足,并将无法运行任务。 |
检测集群何时用尽存储空间 | HDFSUtilization 指标监控集群的组合 HDFS 容量,可能需要调整集群大小以添加更多核心节点。例如,HDFS 利用率较高,这可能会影响任务和集群运行状况。 |
检测集群何时以更少容量运行 | MRLostNodes 指标跟踪一个或多个核心节点或任务节点何时无法与主节点通信。例如,主节点无法访问核心节点或任务节点。 |
有关更多信息,请参阅 Amazon EMR 集群终止并显示 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 在 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 指标 使用案例:监控集群进度 单位:计数 |
MRActiveNodes |
当前正在运行 MapReduce 任务或作业的节点数。等效于 YARN 指标 使用案例:监控集群进度 单位:计数 |
MRLostNodes |
分配给 MapReduce 并且已标记为 LOST 状态的节点数。等效于 YARN 指标 使用案例:监控集群运行状况,监控集群进度 单位:计数 |
MRUnhealthyNodes |
当前可供 MapReduce 作业使用的标记为 UNHEALTHY 状态的节点数。等效于 YARN 指标 使用案例:监控集群进度 单位:计数 |
MRDecommissionedNodes |
分配给 MapReduce 应用程序并且已标记为 DECOMMISSIONED 状态的节点数。等效于 YARN 指标 使用案例:监控集群运行状况,监控集群进度 单位:计数 |
MRRebootedNodes |
可供 MapReduce 使用的已重新启动并标记为 REBOOTED 状态的节点数。等效于 YARN 指标 使用案例:监控集群运行状况,监控集群进度 单位:计数 |
MultiMasterInstanceGroupNodesRunning |
正在运行的主节点的数量。 使用案例:监控主节点故障和替换 单位:计数 |
MultiMasterInstanceGroupNodesRunningPercentage |
正在运行的主节点超过所请求的主节点实例计数的百分比。 使用案例:监控主节点故障和替换 单位:百分比 |
MultiMasterInstanceGroupNodesRequested |
请求的主节点数。 使用案例:监控主节点故障和替换 单位:计数 |
IO | |
S3BytesWritten |
写入 Amazon S3 的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其它工作负载。 使用案例:分析集群性能,监控集群进度 单位:计数 |
S3BytesRead |
从 Amazon S3 读取的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其它工作负载。 使用案例:分析集群性能,监控集群进度 单位:计数 |
HDFSUtilization |
当前使用的 HDFS 存储的百分率。 使用案例:分析集群性能 单位:百分比 |
HDFSBytesRead |
从 HDFS 读取的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon EMR 上的其它工作负载。 使用案例:分析集群性能,监控集群进度 单位:计数 |
HDFSBytesWritten |
写入 HDFS 的字节数。此指标仅聚合 MapReduce 任务,并不适用于 Amazon 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
中测量集群容量指标。对于由实例组组成的集群,将根据托管扩展策略中使用的单位类型在 Nodes
或 VCPU
中测量集群容量指标。有关更多信息,请参阅 《Amazon EMR 管理指南》中的使用 EMR 托管扩展。
指标 | 描述 |
---|---|
|
集群中由托管扩展确定的单位/节点/vCPU 的目标总数。 单位:计数 |
|
正在运行的集群中可用单位/节点/vCPU 的当前总数。当请求集群大小调整时,将在集群中添加或删除新实例后更新此指标。 单位:计数 |
|
集群中由托管扩展确定的核心单位/节点//vCPU 的目标数量。 单位:计数 |
|
集群中正在运行的核心单位/节点/vCPU 的当前数量。 单位:计数 |
|
集群中由托管扩展确定的任务单位/节点/vCPU 的目标数量。 单位:计数 |
|
集群中正在运行的任务单位/节点/vCPU 的当前数量。 单位:计数 |
Amazon EMR 指标的维度
Amazon EMR 数据可以使用下表中的任一维度进行筛选。
维度 | 描述 |
---|---|
JobFlowId | 与 集群 ID 相同,它是集群的唯一标识符(以 j-XXXXXXXXXXXXX 形式表示)。您可以通过在 Amazon EMR 控制台中单击集群来找到该值。 |