

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 CloudWatch 來監控 Amazon EMR 指標
<a name="UsingEMR_ViewingMetrics"></a>

指標會每五分鐘更新一次，並自動收集和推送到每個 Amazon EMR 叢集的 CloudWatch。此間隔無法設定。在 CloudWatch 中報告的 Amazon EMR 指標不收取任何費用。這些五分鐘資料點指標會封存 63 天，之後會捨棄這些資料。

## 如何使用 Amazon EMR 指標？
<a name="UsingEMR_ViewingMetrics_HowDoI"></a>

下表顯示 Amazon EMR 報告的指標常見用法。這些是協助您開始的建議，而不是完整清單。若需 Amazon EMR 報告的指標完整清單，請參閱 [CloudWatch 中的 Amazon EMR 報告的指標](#UsingEMR_ViewingMetrics_MetricsReported)。


****  

| 運作方式？ | 相關指標 | 
| --- | --- | 
| 追蹤我的叢集進度 | 查看 RunningMapTasks、RemainingMapTasks、RunningReduceTasks，和 RemainingReduceTasks 指標。 | 
| 偵測閒置叢集 | IsIdle 指標會追蹤叢集是否處於活動狀態，而非目前正在執行的任務。當叢集已閒置一段指定時間 (例如 30 分鐘) 時，您可以設置警示以將其觸發。 | 
| 偵測節點何時耗盡儲存空間 | MRUnhealthyNodes 指標會追蹤一個或多個核心節點或任務節點何時耗盡本機磁碟儲存空間並轉換為 UNHEALTHY YARN 狀態。例如，核心節點或任務節點的磁碟空間不足，將無法執行任務。 | 
| 偵測叢集何時耗盡儲存空間 | 該 HDFSUtilization 指標會監控叢集的合併 HDFS 容量，並且可能需要調整叢集大小才能新增更多核心節點。例如，HDFS 使用率很高，可能會影響作業和叢集運作狀態。 | 
| 偵測叢集何時在容量減少的情況下執行 | MRLostNodes 指標會追蹤一個或多個核心節點或任務節點無法與主節點通訊。例如，主節點無法存取核心節點或任務節點。 | 

如需詳細資訊，請參閱 [Amazon EMR 叢集終止 NO\$1SLAVE\$1LEFT 和核心節點 FAILED\$1BY\$1MASTER](emr-cluster-NO_SLAVE_LEFT-FAILED_BY_MASTER.md) 和 [AWSSupport-AnalyzeEMRLogs](https://docs.aws.amazon.com//systems-manager-automation-runbooks/latest/userguide/automation-awssupport-analyzeemrlogs.html)。

## 存取 Amazon EMR 的 CloudWatch 指標
<a name="UsingEMR_ViewingMetrics_Access"></a>

可以使用 Amazon EMR 主控台或 CloudWatch 主控台來檢視 Amazon EMR 向 CloudWatch 報告的指標。也可以使用 CloudWatch CLI 命令 `[mon-get-stats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-get-stats.html)` 或 CloudWatch `[GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)` API 來擷取指標。如需有關使用 CloudWatch 來檢視或擷取 Amazon EMR 指標的詳細資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)。

------
#### [ Console ]

**使用主控台檢視指標**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格的 **EMR on EC2** 下，選擇**叢集**，然後選擇您要檢視其指標的叢集。這會開啟叢集詳細資訊頁面。

1. 選取叢集詳細資訊頁面中的**監控**索引標籤。選擇**叢集狀態**、**節點狀態**或**輸入和輸出**選項中的任何一個，載入有關叢集進度和運作狀態的報告。

1. 選擇要檢視的指標後，可以放大每個圖形。若要篩選圖形的時間範圍，請選取預先填入的選項或選擇**自訂**。

------

## CloudWatch 中的 Amazon EMR 報告的指標
<a name="UsingEMR_ViewingMetrics_MetricsReported"></a>

下表列出 Amazon EMR 在主控台中報告並推送至 CloudWatch 的指標。

### Amazon EMR 指標
<a name="emr-metrics-reported"></a>

Amazon EMR 會將多個指標的資料傳送到 CloudWatch。所有 Amazon EMR 叢集每隔五分鐘自動傳送一次指標。指標將封存兩週，之後即會捨棄資料。

`AWS/ElasticMapReduce` 命名空間包含下列指標。

**注意**  
Amazon EMR 從叢集中提取指標。如果叢集無法連接，則不會報告指標，除非叢集再次可用。

以下指標可用於執行 Hadoop 2.x 版本的叢集。


| 指標 | Description | 
| --- | --- | 
| 叢集狀態 | 
| IsIdle  | 指出叢集不再執行工作，但仍然處於作用中狀態並會產生費用。如果未執行任何任務，而且未執行任何工作，則會設為 1，否則設為 0。每隔五分鐘檢查一次此值，值 1 表示叢集只在檢查時為閒置狀態，而不是整個五分鐘都閒置。為了避免誤判，此值已為 1 且持續多個連續 5 分鐘檢查時，您應該發出警示。例如，如果此值已為 1 且持續 30 分鐘 (含) 以上，則您可以對此值發出警示。 使用案例：監控叢集效能 單位：*布林值*  | 
| 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`。 使用案例：監控叢集進度 單位：*計數* 注意：MRTotalNodes 只會計數系統中目前作用中的節點。YARN 會自動從此計數中移除終止的節點，並停止追蹤它們，因此不會在 MRTotalNodes 指標中考慮它們。  | 
| MRActiveNodes  | 目前執行 MapReduce 任務或工作的節點數目。相當於 YARN 指標 `mapred.resourcemanager.NoOfActiveNodes`。 使用案例：監控叢集進度 單位：*計數*  | 
| MRLostNodes  | 配置給已標記為 LOST 狀態之 MapReduce 的節點數目。相當於 YARN 指標 `mapred.resourcemanager.NoOfLostNodes`。 使用案例：監控叢集運作狀態、監控叢集進度 單位：*計數*  | 
| MRUnhealthyNodes  | 可供標記為 UNHEALTHY 狀態之 MapReduce 工作使用的節點數目。相當於 YARN 指標 `mapred.resourcemanager.NoOfUnhealthyNodes`。 使用案例：監控叢集進度 單位：*計數*  | 
| MRDecommissionedNodes  | 配置給已標記為 DECOMMISSIONED 狀態之 MapReduce 應用程式的節點數目。相當於 YARN 指標 `mapred.resourcemanager.NoOfDecommissionedNodes`。 使用案例：監控叢集運作狀態、監控叢集進度 單位：*計數*  | 
| MRRebootedNodes  | 可供已重新啟動與標記為 REBOOTED 狀態之 MapReduce 使用的節點數目。相當於 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 作業，並不適用於 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 指標：


| 指標 | Description | 
| --- | --- | 
| 叢集狀態 | 
| IsIdle  | 指出叢集不再執行工作，但仍然處於作用中狀態並會產生費用。如果未執行任何任務，而且未執行任何工作，則會設為 1，否則設為 0。每隔五分鐘檢查一次此值，值 1 表示叢集只在檢查時為閒置狀態，而不是整個五分鐘都閒置。為了避免誤判，此值已為 1 且持續多個連續 5 分鐘檢查時，您應該發出警示。例如，如果此值已為 1 且持續 30 分鐘 (含) 以上，則您可以對此值發出警示。 使用案例：監控叢集效能 單位：*布林值*  | 
| 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  | 叢集中所有 DataNodes 所報告的目前讀取者與寫入者總數。 使用案例：診斷高 I/O 可能造成工作執行效能不佳的程度。執行 DataNode 協助程式的工作者節點也必須執行對應與降低任務。一段時間持續具有高 TotalLoad 值，可能表示高 I/O 或為效能不佳的影響因素。此值偶而爆增為正常現象，不一定表示發生問題。 單位：*計數*  | 

#### 叢集容量指標
<a name="emr-metrics-managed-scaling"></a>

下列指標可指出叢集的目前或目標容量。只有在啟用受管擴展或自動終止後，才能使用這些指標。

對於由執行個體機群組成的叢集，叢集容量指標會搭配 `Units` 測量。對於由執行個體群組組成的叢集，叢集容量指標則搭配 `Nodes` 或 `VCPU`，根據受管擴展原則中使用的單位類型為單位進行測量。如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的[使用 EMR 受管擴展](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-scaling.html)。


| 指標 | Description | 
| --- | --- | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html) | 叢集中單位/節點/vCPU 的目標總數，由受管擴展判定。 單位：*計數*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 執行中執行個體內的目前可用單位/節點/vCPU 總數。叢集如被要求調整大小，則在此叢集加入新執行個體或移除執行個體之後，此指標將隨之更新。 單位：*計數*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 叢集中 CORE 單位/節點/vCPU 的目標數，由受管擴展判定。 單位：*計數*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 叢集中正在執行的 CORE 單位/節點/vCPU 的目前數目。 單位：*計數*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 叢集中 TASK 單位/節點/vCPU 的目標數，由受管擴展判定。 單位：*計數*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 叢集中正在執行的 TASK 單位/節點/vCPU 的目前數目。 單位：*計數*  | 

當您使用自動終止政策啟用自動終止時，Amazon EMR 會以一分鐘的精細度發出以下指標。部分指標僅適用於 Amazon EMR 6.4.0 及更新的版本。若要進一步了解自動終止，請參閱 [使用自動終止政策進行 Amazon EMR 叢集清除](emr-auto-termination-policy.md)。


****  

| 指標 | Description | 
| --- | --- | 
| TotalNotebookKernels | 叢集上的執行中和閒置筆記本核心的總數。此指標僅適用於 Amazon EMR 6.4.0 及更新的版本。 | 
| AutoTerminationIsClusterIdle | 指出叢集是否在使用中。**0** 值表示叢集正由下列其中一個元件使用：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html) **1** 值表示叢集處於閒置狀態。Amazon EMR 會檢查叢集是否持續閒置 (`AutoTerminationIsClusterIdle` = 1)。當叢集的閒置時間等於自動終止政策中的 `IdleTimeout` 值時，Amazon EMR 會終止叢集。  | 

### Amazon EMR 指標的維度
<a name="emr-metrics-dimensions"></a>

可使用下表中的任何一個維度來篩選 Amazon EMR 資料。


| 維度  | Description  | 
| --- | --- | 
| JobFlowId | 與叢集 ID 相同，它是叢集的唯一識別符，格式為 j-XXXXXXXXXXXXX。在 Amazon EMR 主控台中按一下叢集即可尋找此值。 | 