Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 CloudWatch 监控指标

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

如何使用 Amazon EMR 指标?

Amazon EMR 报告的指标为您提供了可通过不同方式分析的信息。下表显示了这些指标的一些常见用途。这些内容是带您入门的建议,并不是全面的列表。有关由 Amazon EMR 报告的指标的完整列表,请参见CloudWatch 中由 Amazon EMR 报告的指标

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

访问 CloudWatch 指标

可以通过很多方式访问 Amazon EMR 推送到 CloudWatch 的指标。您可以通过 Amazon EMR 控制台或 CloudWatch 控制台查看它们,或者您也可以使用 CloudWatch CLI 或 CloudWatch API 检索它们。以下步骤向您介绍了如何使用这些不同工具访问指标。

在 Amazon EMR 控制台中查看指标。

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

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

  3. 选择 Monitoring 以查看有关该集群的信息。选择 Cluster StatusMap/ReduceNode StatusIOHBase 选项卡中的任何一个来加载有关集群的进程和运行状况的报告。

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

     指标警报教程

在 CloudWatch 控制台中查看指标

  1. Open the CloudWatch console at https://console.amazonaws.cn/cloudwatch/.

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

  3. 向下滚动到图形的指标。您可以搜索要监控的集群的集群标识符。

     指标警报教程
  4. 打开指标显示图形。

     指标警报教程

从 CloudWatch CLI 访问指标

从 CloudWatch API 访问指标

设置指标警报

Amazon EMR 会将指标推送到 CloudWatch,这意味着您可以使用 CloudWatch 设置 Amazon EMR 指标警报。例如,您可以配置 CloudWatch 警报,用于在 HDFS 使用率上升到 80% 以上时立即向您发送电子邮件。

以下主题从较高层面上概括介绍了如何使用 CloudWatch 设置警报。有关详细说明,请参阅 Amazon CloudWatch User Guide 中的创建或编辑 CloudWatch 警报

使用 CloudWatch 控制台设置警报

  1. Open the CloudWatch console at https://console.amazonaws.cn/cloudwatch/.

  2. 选择 Create AlarmCreate Alarm Wizard (创建警报向导) 将随即启动。

  3. 选择 EMR Metrics 并滚动 Amazon EMR 指标以找到要为其设置警报的指标。在此对话框中仅显示 Amazon EMR 指标的简单方法是,搜索集群的集群标识符。选择要创建警报的指标,然后选择 Next

  4. 填写指标的 Name (名称)Description (说明)Threshold (阈值)Time (时间) 值。

  5. 如果您希望 CloudWatch 在达到警报状态时向您发送一封电子邮件,请在 Whenever this alarm: (每当此警报:) 字段中,选择 State is ALARM (状态为“警报”)。对于 Send notification to:,选择一个现有 SNS 主题。如果您选择 Create topic,则可以为新电子邮件订阅列表设置名称和电子邮件地址。此列表将保存下来并会在将来的警报字段中显示出来。

    注意

    如果您使用 Create topic (创建主题) 创建一个新 Amazon SNS 主题,那么电子邮件地址在接收通知之前必须通过验证。当警报进入警报状态时,才会发送电子邮件。如果在验证电子邮件地址之前警报状态发生了变化,那么它们不会接收到通知。

  6. 这时,Define Alarm 屏幕会让您检查要创建的警报。选择 Create Alarm

注意

有关如何使用 CloudWatch 控制台设置警报的详细信息,请参见 Amazon CloudWatch User Guide 中的 Create an Alarm that Sends Email

使用 CloudWatch API 设置警报

使用 CloudWatch API 设置警报

CloudWatch 中由 Amazon EMR 报告的指标

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

Amazon EMR 指标

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

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

注意

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

Hadoop 1 指标如下:

指标 说明
群集状态

处于空闲状态

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

使用案例:监控cluster性能

单位:布尔值

正在运行的作业

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

使用案例:监控cluster的运行状况

单位:计数

作业失败

群集中失败的任务数量。

使用案例:监控cluster的运行状况

单位:计数

Map/Reduce

MapTasksRunning

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

使用案例:监控cluster的进度

单位:计数

MapTasksRemaining

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

使用案例:监控cluster的进度

单位:计数

打开的映射槽位

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

使用案例:分析cluster性能

单位:计数

每个槽位剩余的映射任务

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

使用案例:分析cluster性能

单位:比率

ReduceTasksRunning

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

使用案例:监控cluster的进度

单位:计数

ReduceTasksRemaining

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

使用案例:监控cluster的进度

单位:计数

打开的减少槽位

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

使用案例:分析cluster性能

单位:计数

节点状态

正在运行的核心节点

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

使用案例:监控cluster的运行状况

单位:计数

待处理的核心节点

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

使用案例:监控cluster的运行状况

单位:计数

实时数据节点

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

使用案例:监控cluster的运行状况

单位:百分比

正在运行的任务节点

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

使用案例:监控cluster的运行状况

单位:计数

待处理的任务节点

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

使用案例:监控cluster的运行状况

单位:计数

实时任务跟踪程序

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

使用案例:监控cluster的运行状况

单位:百分比

IO

写入到 S3 的字节数

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

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

单位:计数

从 S3 读取的字节数

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

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

单位:计数

HDFS 利用率

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

使用案例:分析cluster性能

单位:百分比

从 HDFS 读取的字节数

从 HDFS 读取的字节数。

使用案例:分析cluster性能,监控cluster的进度

单位:字节

写入 HDFS 的字节数

写入 HDFS 的字节数。

使用案例:分析cluster性能,监控cluster的进度

单位:字节

缺少块

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

使用案例:监控cluster的运行状况

单位:计数

总负载

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

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

单位:计数

HBase

BackupFailed

最后一次备份是否失败。默认设置为 0,如果上一次备份尝试失败,则更新为 1。仅为 HBase cluster报告此指标。

使用案例:监控 HBase 备份

单位:计数

MostRecentBackupDuration

完成上一次备份所需的时长。无论最后完成的备份成功或失败,都会设置此指标。进行备份的同时,此指标返回备份开始之后的分钟数。仅为 HBase cluster报告此指标。

使用案例:监控 HBase 备份

单位:分钟

TimeSinceLastSuccessfulBackup

在您的群集上,最后一次成功 HBase 备份开始之后经过的分钟数。仅为 HBase cluster报告此指标。

使用案例:监控 HBase 备份

单位:分钟

以下指标可用于 Hadoop 2 AMI:

指标 说明
群集状态

处于空闲状态

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

使用案例:监控cluster性能

单位:布尔值

ContainerAllocated

ResourceManager 分配的资源容器数。

使用案例:监控cluster的进度

单位:计数

ContainerReserved

预留的容器数。

使用案例:监控cluster的进度

单位:计数

ContainerPending

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

使用案例:监控cluster的进度

单位:计数

ContainerPendingRatio

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

单位:计数

AppsCompleted

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

使用案例:监控cluster的进度

单位:计数

AppsFailed

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

使用案例:监控cluster的进度,监控cluster运行状况

单位:计数

AppsKilled

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

使用案例:监控cluster的进度,监控cluster运行状况

单位:计数

AppsPending

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

使用案例:监控cluster的进度

单位:计数

AppsRunning

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

使用案例:监控cluster的进度

单位:计数

AppsSubmitted

提交给 YARN 的应用程序数。

使用案例:监控cluster的进度

单位:计数

节点状态

正在运行的核心节点

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

使用案例:监控cluster的运行状况

单位:计数

待处理的核心节点

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

使用案例:监控cluster的运行状况

单位:计数

实时数据节点

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

使用案例:监控cluster的运行状况

单位:百分比

MRTotalNodes

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

使用案例:监控cluster的进度

单位:计数

MRActiveNodes

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

使用案例:监控cluster的进度

单位:计数

MRLostNodes

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

使用案例:监控cluster运行状况,监控cluster的进度

单位:计数

MRUnhealthyNodes

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

使用案例:监控cluster的进度

单位:计数

MRDecommissionedNodes

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

使用案例:监控cluster运行状况,监控cluster的进度

单位:计数

MRRebootedNodes

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

使用案例:监控cluster运行状况,监控cluster的进度

单位:计数

IO

写入 S3 的字节数

写入 Amazon S3 的字节数。

使用案例:分析cluster性能,监控cluster的进度

单位:计数

从 S3 读取的字节数

从 Amazon S3 读取的字节数。

使用案例:分析cluster性能,监控cluster的进度

单位:计数

HDFS 利用率

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

使用案例:分析cluster性能

单位:百分比

从 HDFS 读取的字节数

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

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

单位:计数

写入 HDFS 的字节数

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

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

单位:计数

缺少块

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

使用案例:监控cluster的运行状况

单位:计数

CorruptBlocks

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

使用案例:监控cluster的运行状况

单位:计数

总负载

并发数据传输的总数。

使用案例:监控cluster的运行状况

单位:计数

MemoryTotalMB

群集中的总内存量。

使用案例:监控cluster的进度

单位:字节

MemoryReservedMB

预留内存量。

使用案例:监控cluster的进度

单位:字节

MemoryAvailableMB

可供分配的内存量。

使用案例:监控cluster的进度

单位:字节

YARNMemoryAvailablePercentage

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

MemoryAllocatedMB

分配给群集的内存量。

使用案例:监控cluster的进度

单位:字节

PendingDeletionBlocks

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

使用案例:监控cluster的进度,监控cluster运行状况

单位:计数

UnderReplicatedBlocks

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

使用案例:监控cluster的进度,监控cluster运行状况

单位:计数

DfsPendingReplicationBlocks

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

使用案例:监控cluster的进度,监控cluster运行状况

单位:计数

CapacityRemainingGB

剩余 HDFS 磁盘容量。

使用案例:监控cluster的进度,监控cluster运行状况

单位:字节

HBase

HbaseBackupFailed

最后一次备份是否失败。默认设置为 0,如果上一次备份尝试失败,则更新为 1。仅为 HBase cluster报告此指标。

使用案例:监控 HBase 备份

单位:计数

MostRecentBackupDuration

完成上一次备份所需的时长。无论最后完成的备份成功或失败,都会设置此指标。进行备份的同时,此指标返回备份开始之后的分钟数。仅为 HBase cluster报告此指标。

使用案例:监控 HBase 备份

单位:分钟

TimeSinceLastSuccessfulBackup

在您的群集上,最后一次成功 HBase 备份开始之后经过的分钟数。仅为 HBase cluster报告此指标。

使用案例:监控 HBase 备份

单位:分钟

Amazon EMR 指标的维度

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

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