

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EMR에서 CloudWatch 이벤트 및 지표
<a name="emr-manage-cluster-cloudwatch"></a>

이벤트와 지표를 사용하여 Amazon EMR 클러스터의 활동 및 상태를 추적합니다. 이벤트는 클러스터 내에서 특정 발생을 모니터링하는 데 유용합니다. 예를 들어, 클러스터가 시작 중에서 실행 중으로 상태가 변경되는 경우입니다. 지표는 특정 값(예: 클러스터 내에서 HDFS가 사용하는 사용 가능한 디스크 공간의 비율)을 모니터링하는 데 유용합니다.

CloudWatch Events에 대한 자세한 내용은 [Amazon CloudWatch Events 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)를 참조하세요. CloudWatch 지표에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*에서 [Amazon CloudWatch 지표 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) 및 [Amazon CloudWatch 경보 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참조하세요.

**Topics**
+ [CloudWatch에서 Amazon EMR 지표 모니터링](UsingEMR_ViewingMetrics.md)
+ [CloudWatch에서 Amazon EMR 이벤트 모니터링](emr-manage-cloudwatch-events.md)
+ [Amazon EMR에서 CloudWatch 이벤트에 대한 대응](emr-events-response.md)

# CloudWatch에서 Amazon EMR 지표 모니터링
<a name="UsingEMR_ViewingMetrics"></a>

지표는 각 Amazon EMR 클러스터에서 5분마다 업데이트되고 자동으로 수집되며 CloudWatch로 푸시됩니다. 이 간격은 구성할 수 없습니다. CloudWatch에서 보고되는 Amazon EMR 지표에는 요금이 부과되지 않습니다. 이 5분의 데이터 포인트 지표는 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 지표는 하나 이상의 코어 또는 태스크 노드가 프라이머리 노드와 통신할 수 없는 경우를 추적합니다. 예를 들어, 프라이머리 노드가 코어 또는 태스크 노드에 접속할 수 없습니다. | 

자세한 내용은 [NO\$1SLAVE\$1LEFT로 Amazon EMR 클러스터 종료 및 코어 노드 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 Management Console하고 [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 클러스터가 5분 간격으로 지표를 자동으로 전송합니다. 측정치는 2주 간 보관되고 그 후에는 삭제됩니다.

`AWS/ElasticMapReduce` 네임스페이스에는 다음과 같은 지표가 포함됩니다.

**참고**  
Amazon EMR은 클러스터에서 지표를 가져옵니다. 이때 클러스터에 도달할 수 없는 경우에는 클러스터를 다시 사용할 수 있을 때까지 아무런 지표도 보고되지 않습니다.

Hadoop 2.x 버전을 실행하는 클러스터에 대해 사용할 수 있는 지표는 다음과 같습니다.


| 지표 | 설명 | 
| --- | --- | 
| 클러스터 상태 | 
| IsIdle  | 클러스터가 더 이상 작업을 실행하지 않지만 여전히 활성 상태로 요금이 발생하고 있다는 것을 나타냅니다. 아무런 작업도 실행되고 있지 않으면 1로 설정되고, 그 외에는 0으로 설정됩니다. 이 값은 5분 주기로 검사하며, 값이 1일 때는 클러스터가 검사 시에만 유휴 상태일 뿐 전체 5분간 유휴 상태라는 것을 의미하지는 않습니다. 오탐지를 방지하기 위해서는 이 값이 5분 주기의 연속 검사 1회를 넘어 1을 유지할 때 경보를 알려야 합니다. 예를 들어, 30분 이상 1을 유지하는 경우 이 값에 대한 경보를 제기할 수 있습니다. 사용 사례: 클러스터 성능 모니터링 단위: *부울*  | 
| ContainerAllocated  | ResourceManager에서 할당된 리소스 컨테이너 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| ContainerReserved  | 예약된 컨테이너 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| ContainerPending  | 대기열에서 아직 할당되지 않은 컨테이너 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| ContainerPendingRatio  | 대기 중인 컨테이너와 할당된 컨테이너의 비율(ContainerPendingRatio = ContainerPending / ContainerAllocated). ContainerAllocated가 0이면 ContainerPendingRatio는 ContainerPending과 같습니다. ContainerPendingRatio 값은 비율이 아닌 숫자를 나타냅니다. 이 값은 컨테이너 할당 동작에 따라 클러스터 리소스를 조정하는 데 유용합니다. Units: *Count*  | 
| AppsCompleted  | 완료 상태로 YARN에게 제출된 애플리케이션 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| AppsFailed  | 미완료 상태로 YARN에게 제출된 애플리케이션 수 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| AppsKilled  | 종료 상태로 YARN에게 제출된 애플리케이션 수 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| AppsPending  | 대기 상태로 YARN에게 제출된 애플리케이션 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| AppsRunning  | 실행 상태로 YARN에게 제출된 애플리케이션 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| AppsSubmitted  | YARN에게 제출된 애플리케이션 수 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| 노드 상태 | 
| CoreNodesRunning  | 작업 중인 코어 노드 수. 이 지표의 데이터 포인트는 해당하는 인스턴스 그룹이 존재하는 경우에만 보고됩니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| CoreNodesPending  | 할당 대기 중인 코어 노드 수. 코어 노드를 요청한다고 해서 즉시 모두 제공되는 것은 아닙니다. 이때 이 지표가 대기 중인 요청 수를 보고합니다. 이 지표의 데이터 포인트는 해당하는 인스턴스 그룹이 존재하는 경우에만 보고됩니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| LiveDataNodes  | Hadoop에서 작업을 수신 중인 데이터 노드 비율 사용 사례: 클러스터 상태 모니터링 단위: *백분율*  | 
| MRTotalNodes  | 현재 MapReduce 작업에 사용할 수 있는 노드 수 YARN 지표 `mapred.resourcemanager.TotalNodes`와 동등합니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count* 참고: MRTotalNodes는 시스템의 현재 활성 노드만 계산합니다. YARN은 이 개수에서 종료된 노드를 자동으로 제거하고 추적을 중지하므로 MRTotalNodes 지표에서 고려되지 않습니다.  | 
| MRActiveNodes  | 현재 MapReduce 작업 또는 작업을 실행 중인 노드 수 YARN 지표 `mapred.resourcemanager.NoOfActiveNodes`와 동등합니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MRLostNodes  | MapReduce에 LOST 상태로 할당된 노드 수 YARN 지표 `mapred.resourcemanager.NoOfLostNodes`와 동등합니다. 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| MRUnhealthyNodes  | UNHEALTHY 상태이면서 MapReduce 작업에 사용할 수 있는 노드 수 YARN 지표 `mapred.resourcemanager.NoOfUnhealthyNodes`와 동등합니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MRDecommissionedNodes  | MapReduce 애플리케이션에 DECOMMISSIONED 상태로 할당된 노드 수 YARN 지표 `mapred.resourcemanager.NoOfDecommissionedNodes`와 동등합니다. 사용 사례: 클러스터 상태 모니터링, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MRRebootedNodes  | 재부팅되어 REBOOTED 상태이면서 MapReduce에 사용할 수 있는 노드 수 YARN 지표 `mapred.resourcemanager.NoOfRebootedNodes`와 동등합니다. 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| MultiMasterInstanceGroupNodesRunning  | 실행 중인 마스터 노드의 수입니다. 사용 사례: 마스터 노드 장애 및 교체 모니터링 Units: *Count*  | 
| MultiMasterInstanceGroupNodesRunningPercentage  | 요청된 수의 마스터 노드 인스턴스에서 실행 중인 마스터 노드의 백분율입니다. 사용 사례: 마스터 노드 장애 및 교체 모니터링 단위: *백분율*  | 
| MultiMasterInstanceGroupNodesRequested  | 요청된 마스터 노드의 수입니다. 사용 사례: 마스터 노드 장애 및 교체 모니터링 Units: *Count*  | 
| IO | 
| S3BytesWritten  | Amazon S3에 기록된 바이트 수입니다. 이 지표는 MapReduce 작업만 집계하며, Amazon EMR의 다른 워크로드에는 적용되지 않습니다. 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| S3BytesRead  | Amazon S3에서 읽은 바이트 수입니다. 이 지표는 MapReduce 작업만 집계하며, Amazon EMR의 다른 워크로드에는 적용되지 않습니다. 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| HDFSUtilization  | 현재 사용 중인 HDFS 스토리지 비율 사용 사례: 클러스터 성능 분석 단위: *백분율*  | 
| HDFSBytesRead  | HDFS에서 읽어온 바이트 수 이 지표는 MapReduce 작업만 집계하며, Amazon EMR의 다른 워크로드에는 적용되지 않습니다. 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| HDFSBytesWritten  | HDFS에 작성된 바이트 수 이 지표는 MapReduce 작업만 집계하며, Amazon EMR의 다른 워크로드에는 적용되지 않습니다. 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MissingBlocks  | HDFS에 복제본이 없는 블록 수. 이는 손상된 블록일 수 있습니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| CorruptBlocks  | HDFS가 손상된 것으로 보고하는 블록 수 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| TotalLoad  | 동시 데이터 전송 총 수 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| MemoryTotalMB  | 클러스터의 총 메모리 크기 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MemoryReservedMB  | 예약된 메모리 크기 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MemoryAvailableMB  | 할당 가능한 메모리 크기 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| YARNMemoryAvailablePercentage  | YARN에 사용할 수 있는 잔여 메모리 비율(YARNMemoryAvailablePercentage = MemoryAvailableMB / MemoryTotalMB). 이 값은 YARN 메모리 사용량을 기준으로 클러스터 리소스를 조정하는 데 유용합니다. 단위: *백분율*  | 
| MemoryAllocatedMB  | 클러스터에 할당된 메모리 크기 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| PendingDeletionBlocks  | 삭제 표시된 블록 수 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| UnderReplicatedBlocks  | 1회 이상 복제해야 하는 블록 수 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| DfsPendingReplicationBlocks  | 블록 복제 상태: 복제 중인 블록, 복제 요청의 경과 시간, 성공하지 못한 복제 요청 사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 
| CapacityRemainingGB  | 남아있는 HDFS 디스크 용량 크기  사용 사례: 클러스터 진행 상황 모니터링, 클러스터 상태 모니터링 Units: *Count*  | 

다음은 Hadoop 1 지표입니다.


| 지표 | 설명 | 
| --- | --- | 
| 클러스터 상태 | 
| IsIdle  | 클러스터가 더 이상 작업을 실행하지 않지만 여전히 활성 상태로 요금이 발생하고 있다는 것을 나타냅니다. 아무런 작업도 실행되고 있지 않으면 1로 설정되고, 그 외에는 0으로 설정됩니다. 이 값은 5분 주기로 검사하며, 값이 1일 때는 클러스터가 검사 시에만 유휴 상태일 뿐 전체 5분간 유휴 상태라는 것을 의미하지는 않습니다. 오탐지를 방지하기 위해서는 이 값이 5분 주기의 연속 검사 1회를 넘어 1을 유지할 때 경보를 알려야 합니다. 예를 들어, 30분 이상 1을 유지하는 경우 이 값에 대한 경보를 제기할 수 있습니다. 사용 사례: 클러스터 성능 모니터링 단위: *부울*  | 
| JobsRunning  | 클러스터에서 현재 실행 중인 작업 수 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| JobsFailed  | 클러스터에서 실패한 작업 수 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| 맵/감소 | 
| MapTasksRunning  | 각 작업마다 실행 중인 맵 태스크 수. 스케줄러를 설치하여 여러 작업을 실행 중인 경우에는 다수의 그래프가 생성됩니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MapTasksRemaining  | 각 작업마다 남아있는 맵 태스크 수. 스케줄러를 설치하여 여러 작업을 실행 중인 경우에는 다수의 그래프가 생성됩니다. 남아있는 맵 태스크란 Running, Killed 또는 Completed 상태가 아닌 태스크를 말합니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MapSlotsOpen  | 사용하지 않은 맵 태스크 용량. 이 용량은 임의 클러스터에서 현재 실행 중인 전체 맵 태스크 수를 뺀 최대 맵 태스크 수로 계산됩니다. 사용 사례: 클러스터 성능 분석 Units: *Count*  | 
| RemainingMapTasksPerSlot  | 클러스터에서 남아있는 전체 맵 작업과 사용할 수 있는 전체 맵 슬롯의 비율 사용 사례: 클러스터 성능 분석 단위: *비율*  | 
| ReduceTasksRunning  | 각 작업마다 실행 중인 reduce 작업 수. 스케줄러를 설치하여 여러 작업을 실행 중인 경우에는 다수의 그래프가 생성됩니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| ReduceTasksRemaining  | 각 작업마다 남아있는 reduce 작업 수. 스케줄러를 설치하여 여러 작업을 실행 중인 경우에는 다수의 그래프가 생성됩니다. 사용 사례: 클러스터 진행 상황 모니터링 Units: *Count*  | 
| ReduceSlotsOpen  | 사용하지 않은 reduce 작업 용량. 이 용량은 임의 클러스터에서 현재 실행 중인 reduce 작업 수를 뺀 최대 reduce 작업 용량으로 계산됩니다. 사용 사례: 클러스터 성능 분석 Units: *Count*  | 
| 노드 상태 | 
| CoreNodesRunning  | 작업 중인 코어 노드 수. 이 지표의 데이터 포인트는 해당하는 인스턴스 그룹이 존재하는 경우에만 보고됩니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| CoreNodesPending  | 할당 대기 중인 코어 노드 수. 코어 노드를 요청한다고 해서 즉시 모두 제공되는 것은 아닙니다. 이때 이 지표가 대기 중인 요청 수를 보고합니다. 이 지표의 데이터 포인트는 해당하는 인스턴스 그룹이 존재하는 경우에만 보고됩니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| LiveDataNodes  | Hadoop에서 작업을 수신 중인 데이터 노드 비율 사용 사례: 클러스터 상태 모니터링 단위: *백분율*  | 
| TaskNodesRunning  | 작업 중인 작업 노드 수. 이 지표의 데이터 포인트는 해당하는 인스턴스 그룹이 존재하는 경우에만 보고됩니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| TaskNodesPending  | 할당 대기 중인 작업 노드 수. 작업 노드를 요청한다고 해서 즉시 모두 제공되는 것은 아닙니다. 이때 이 지표가 대기 중인 요청 수를 보고합니다. 이 지표의 데이터 포인트는 해당하는 인스턴스 그룹이 존재하는 경우에만 보고됩니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| LiveTaskTrackers  | 실행 중인 태스크 트래커 비율 사용 사례: 클러스터 상태 모니터링 단위: *백분율*  | 
| IO | 
| S3BytesWritten  | Amazon S3에 기록된 바이트 수입니다. 이 지표는 MapReduce 작업만 집계하며, Amazon EMR의 다른 워크로드에는 적용되지 않습니다. 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| S3BytesRead  | Amazon S3에서 읽은 바이트 수입니다. 이 지표는 MapReduce 작업만 집계하며, Amazon EMR의 다른 워크로드에는 적용되지 않습니다. 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| HDFSUtilization  | 현재 사용 중인 HDFS 스토리지 비율 사용 사례: 클러스터 성능 분석 단위: *백분율*  | 
| HDFSBytesRead  | HDFS에서 읽어온 바이트 수 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| HDFSBytesWritten  | HDFS에 작성된 바이트 수 사용 사례: 클러스터 성능 분석, 클러스터 진행 상황 모니터링 Units: *Count*  | 
| MissingBlocks  | HDFS에 복제본이 없는 블록 수. 이는 손상된 블록일 수 있습니다. 사용 사례: 클러스터 상태 모니터링 Units: *Count*  | 
| TotalLoad  | 클러스터의 모든 DataNodes가 보고하는 현재 리더 및 라이터의 총 수. 사용 사례: 높은 I/O가 작업 실행 성능 저하에 기여하는 정도를 진단합니다. DataNode 대몬에서 실행되는 작업자 노드 역시 맵 및 reduce 작업을 수행해야 합니다. 시간이 지나도 지속적으로 높은 TotalLoad 값은 높은 I/O가 성능 저하의 원인일 가능성을 나타낼 수 있습니다. 이 값이 이따금 급증하는 것은 일반적인 것이며, 보통은 문제를 나타내지 않습니다. Units: *Count*  | 

#### 클러스터 용량 지표
<a name="emr-metrics-managed-scaling"></a>

다음 지표는 클러스터의 현재 또는 대상 용량을 나타냅니다. 이러한 지표는 Managed Scaling 또는 자동 종료가 활성화된 경우에만 사용할 수 있습니다.

인스턴스 플릿으로 구성된 클러스터의 경우, 클러스터 용량 지표는 `Units`에서 측정됩니다. 인스턴스 그룹으로 구성된 클러스터의 경우, 클러스터 용량 지표는 관리형 조정 정책에 사용된 단위 유형을 기반으로 하는 `VCPU`에서 또는 `Nodes`에서 측정됩니다. 자세한 내용은 *Amazon EMR 관리 안내서*의 [EMR Managed Scaling 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-scaling.html)을 참조하세요.


| 지표 | 설명 | 
| --- | --- | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html) | 관리형 조정에 의해 결정된 클러스터의 총 units/nodes/vCPU 대상 수입니다. Units: *Count*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 실행 중인 클러스터에서 사용 가능한 현재 총unit/node/vCPU 수입니다. 클러스터 크기 조정이 요청되면 새 인스턴스가 클러스터에 추가되거나 클러스터에서 제거된 후 이 지표가 업데이트됩니다. Units: *Count*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 관리형 조정에 의해 결정된 클러스터의 CORE unit/node/vCPU 대상 수입니다. Units: *Count*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 클러스터에서 실행 중인 현재 CORE unit/node/vCPU 수입니다. Units: *Count*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 관리형 조정에 의해 결정된 클러스터의 TASK unit/node/vCPU 대상 수입니다. Units: *Count*  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html)  | 클러스터에서 실행 중인 현재 TASK unit/node/vCPU 수입니다. Units: *Count*  | 

자동 종료 정책을 사용하여 자동 종료를 활성화하면 Amazon EMR은 1분 단위로 다음 지표를 생성합니다. 일부 지표는 Amazon EMR 버전 6.4.0 이상에만 사용할 수 있습니다. 자동 종료에 대한 자세한 내용은 [Amazon EMR 클러스터 정리에 대한 자동 종료 정책 사용](emr-auto-termination-policy.md) 섹션을 참조하세요.


****  

| 지표 | 설명 | 
| --- | --- | 
| TotalNotebookKernels | 클러스터에서 실행 중 및 유휴 상태의 노트북 커널 총 수.이 지표는 Amazon EMR 버전 6.4.0 이상에만 사용할 수 있습니다. | 
| AutoTerminationIsClusterIdle | 클러스터가 사용 중인지 여부를 나타냅니다.값이 **0**이면 다음 구성 요소 중 하나가 클러스터를 사용하고 있음을 나타냅니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html) 값이 **1**이면 클러스터가 유휴 상태임을 나타냅니다. Amazon EMR은 지속적인 클러스터 유휴 상태(`AutoTerminationIsClusterIdle`=1)를 확인합니다. 클러스터의 유휴 시간이 자동 종료 정책의 `IdleTimeout` 값과 같으면 Amazon EMR은 클러스터를 종료합니다.  | 

### Amazon EMR 지표 차원
<a name="emr-metrics-dimensions"></a>

다음 테이블의 차원을 사용하여 Amazon EMR 데이터를 필터링할 수 있습니다.


| 차원  | 설명  | 
| --- | --- | 
| JobFlowId | 클러스터 ID와 동일합니다. 이는 j-XXXXXXXXXXXXX 양식의 클러스터 고유 식별자입니다. Amazon EMR 콘솔에서 클러스터를 클릭하여 이 값을 찾습니다. | 

# CloudWatch에서 Amazon EMR 이벤트 모니터링
<a name="emr-manage-cloudwatch-events"></a>

Amazon EMR은 Amazon EMR 콘솔에서 이벤트를 추적하고 이벤트 관련 정보를 최대 7일 동안 보관합니다. Amazon EMR은 클러스터, 인스턴스 그룹, 인스턴스 플릿, 자동 조정 정책 또는 단계의 상태가 변경될 때 이벤트를 기록합니다. 이벤트는 이벤트가 발생한 날짜 및 시간, 영향을 받는 요소에 대한 세부 정보 및 기타 중요한 데이터 포인트를 캡처합니다.

다음 테이블에는 Amazon EMR 이벤트와 함께 이벤트가 나타내는 상태 또는 상태 변경, 이벤트의 심각도, 이벤트 유형, 이벤트 코드 및 이벤트 메시지가 나와 있습니다. Amazon EMR은 이벤트를 JSON 객체로 표현하고 자동으로 이벤트 스트림으로 전송합니다. CloudWatch Events를 사용한 이벤트 처리를 위한 규칙은 JSON 객체의 패턴과 일치하므로 JSON 객체는 이 규칙을 설정할 때 중요합니다. 자세한 내용은 *Amazon CloudWatch Events 사용 설명서*에서 [Events and event patterns](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html) 및 [Amazon EMR events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#emr_event_type)를 참조하세요.

**참고**  
EMR은 이벤트 코드 **EC2 프로비저닝 - 인스턴스 용량 부족**으로 이벤트를 주기적으로 내보냅니다. 이러한 이벤트는 클러스터 생성 또는 크기 조정 작업 중에 Amazon EMR 클러스터에서 Amazon EMR의 인스턴스 플릿 또는 인스턴스 그룹에 대한 용량 부족 오류가 발생하는 경우 주기적으로 발생합니다. EMR에는 마지막 용량 부족 이벤트가 발생한 이후 용량을 프로비저닝하려고 시도한 인스턴스 유형 및 AZ만 포함되므로 이벤트에 AZs 사용자가 제공한 모든 인스턴스 유형 및 AZs가 포함되지 않을 수 있습니다. 이러한 이벤트에 응답하는 방법에 대한 자세한 내용은 [Amazon EMR 클러스터 인스턴스 용량 부족 이벤트에 대한 응답](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-events-response-insuff-capacity.html)을 참조하세요.

## 클러스터 시작 이벤트
<a name="emr-cloudwatch-cluster-events"></a>


| 상태 또는 상태 변경 | 심각도 | 이벤트 유형 | 이벤트 코드 | 메시지 | 
| --- | --- | --- | --- | --- | 
| CREATING | WARN | EMR 인스턴스 플릿 프로비저닝 | EC2 프로비저닝 - 인스턴스 용량 부족 | 인스턴스 플릿 InstanceFleetID에 대해 Amazon EMR ClusterId (ClusterName) 클러스터를 생성할 수 없습니다. [Instancetype3, Instancetype4] 가용 영역에서 인스턴스 유형 [Instancetype1, Instancetype2]에 사용할 Amazon EC2의 스팟 용량이 부족하고 인스턴스 유형 [AvailabilityZone1, AvaliabilityZone2]에 사용할 온디맨드 용량이 부족합니다. 이 이벤트에 대응하는 방법에 대한 자세한 내용은 이 [설명서](emr-EC2_INSUFFICIENT_CAPACITY-error.md)를 참조하세요. | 
| CREATING | WARN | EMR 인스턴스 그룹 프로비저닝 | EC2 프로비저닝 - 인스턴스 용량 부족 | 인스턴스 그룹 InstanceGroupID에 대해 Amazon EMR ClusterId (ClusterName) 클러스터를 생성할 수 없습니다. [Instancetype3, Instancetype4] 가용 영역에서 인스턴스 유형 [Instancetype1, Instancetype2]에 사용할 Amazon EC2의 스팟 용량이 부족하고 인스턴스 유형 [AvailabilityZone1, AvaliabilityZone2]에 사용할 온디맨드 용량이 부족합니다. 이 이벤트에 대응하는 방법에 대한 자세한 내용은 이 [설명서](emr-EC2_INSUFFICIENT_CAPACITY-error.md)를 참조하세요. | 
| CREATING | WARN | EMR 인스턴스 플릿 프로비저닝 | EC2 프로비저닝 - 서브넷의 사용 가능한 주소가 부족함 | 지정된 서브넷 [Subnet1, Subnet2]에 사용 가능한 프라이빗 IP 주소가 부족하여 요청을 이행할 수 없으므로 인스턴스 플릿 InstanceFleetID에 대해 요청한 Amazon EMR 클러스터 ClusterId (ClusterName)를 생성할 수 없습니다. DescribeSubnets 작업을 사용하여 서브넷에서 사용 가능한 IP 주소 수(사용되지 않은 주소)를 확인합니다. 이 이벤트에 응답하는 방법에 대한 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING | WARN | EMR 인스턴스 그룹 프로비저닝 | EC2 프로비저닝 - 서브넷의 사용 가능한 주소가 부족함 | 지정된 서브넷 [Subnet1, Subnet2]에 사용 가능한 프라이빗 IP 주소가 부족하여 요청을 이행할 수 없으므로 인스턴스 그룹 InstanceGroupID에 대해 요청한 Amazon EMR 클러스터 ClusterId (ClusterName)를 생성할 수 없습니다. DescribeSubnets 작업을 사용하여 서브넷에서 사용 가능한 IP 주소 수(사용되지 않은 주소)를 확인합니다. 이 이벤트에 응답하는 방법에 대한 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING  | WARN  | EMR 인스턴스 플릿 프로비저닝  | EC2 프로비저닝 - vCPU 제한을 초과함  | account (accountId)에서 실행 중인 인스턴스에 할당된 vCPU(가상 처리 단위) 수의 제한에 도달했으므로 Amazon EMR 클러스터 ClusterId (ClusterName)에서 InstanceFleetID의 프로비전이 지연됩니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING  | WARN  | EMR 인스턴스 그룹 프로비저닝  | EC2 프로비저닝 - vCPU 제한을 초과함  | 계정 (accountId)에서 실행 중인 인스턴스에 할당된 vCPU(가상 처리 단위) 수의 제한에 도달했으므로 Amazon EMR 클러스터 ClusterId에서 인스턴스 그룹 InstanceGroupID의 프로비전이 지연됩니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING  | WARN  | EMR 인스턴스 플릿 프로비저닝  | EC2 프로비저닝 - 스팟 인스턴스 수 제한을 초과함  | Amazon EMR 클러스터 ClusterID (ClusterName)에서 인스턴스 플릿 InstanceFleetID의 프로비전이 지연됩니다. account (accountId)에서 시작할 수 있는 스팟 인스턴스 수의 제한에 도달했기 때문입니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING  | WARN  | EMR 인스턴스 그룹 프로비저닝  | EC2 프로비저닝 - 스팟 인스턴스 수 제한을 초과함  | Amazon EMR 클러스터 ClusterID (ClusterName)에서 인스턴스 그룹 InstanceGroupID의 프로비전이 지연됩니다. account (accountId)에서 시작할 수 있는 스팟 인스턴스 수의 제한에 도달했기 때문입니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING  | WARN  | EMR 인스턴스 플릿 프로비저닝  | EC2 프로비저닝 - 인스턴스 제한을 초과함  | Amazon EMR 클러스터 ClusterId (ClusterName)에서 인스턴스 플릿 InstanceFleetID의 프로비전이 지연됩니다. account (accountID)에서 동시에 실행할 수 있는 인스턴스 수의 제한에 도달했기 때문입니다. Amazon EC2 서비스 제한에 대한 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING  | WARN  | EMR 인스턴스 그룹 프로비저닝  | EC2 프로비저닝 - 인스턴스 제한을 초과함  | Amazon EMR 클러스터 ClusterId (ClusterName)에서 인스턴스 그룹 InstanceGroupID의 프로비전이 지연됩니다. account (accountID)에서 동시에 실행할 수 있는 인스턴스 수의 제한에 도달했기 때문입니다. Amazon EC2 서비스 제한에 대한 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| CREATING | WARN | EMR 인스턴스 그룹 프로비저닝 | *none* | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `Time`에 생성되었으며 바로 사용할 수 있습니다. – 또는 -  Amazon EMR 클러스터 `ClusterId (ClusterName)`에서는 `Time`에 보류 중 상태인 모든 단계를 완료했습니다.  그럼에도 불구하고 `WAITING` 상태의 클러스터가 작업을 처리 중일 수 있습니다.   | 
| STARTING  | INFO  | EMR 클러스터 상태 변경  | *none*  | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `Time`에 등록되었으며 생성 중입니다.  | 
| STARTING  | INFO  | EMR 클러스터 상태 변경  | *none*  |  Amazon EC2 내에서 선택된 인스턴스 플릿 구성 및 여러 가용 영역이 있는 클러스터에만 적용됩니다.  Amazon EMR `ClusterId (ClusterName)` 클러스터는 지정된 가용 영역 옵션에서 선택한 영역(`AvailabilityZoneID`)에서 생성 중입니다.  | 
| STARTING  | INFO  | EMR 클러스터 상태 변경  | *none*  | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `Time`에 실행 중 단계를 시작했습니다.  | 
| WAITING  | INFO  | EMR 클러스터 상태 변경  | *none*  | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `Time`에 생성되었으며 바로 사용할 수 있습니다. – 또는 -  Amazon EMR 클러스터 `ClusterId (ClusterName)`에서는 `Time`에 보류 중 상태인 모든 단계를 완료했습니다.  그럼에도 불구하고 `WAITING` 상태의 클러스터가 작업을 처리 중일 수 있습니다.   | 

**참고**  
클러스터 생성 또는 크기 조정 작업 중에 EMR 클러스터에서 Amazon EC2의 인스턴스 플릿 또는 인스턴스 그룹에 대한 용량 부족 오류가 발생하면 `EC2 provisioning - Insufficient Instance Capacity` 이벤트 코드의 이벤트가 주기적으로 발생합니다. 이러한 이벤트에 대응하는 방법에 대한 자세한 내용은 [Amazon EMR 클러스터 인스턴스 용량 부족 이벤트에 대한 대응](emr-events-response-insuff-capacity.md) 섹션을 참조하세요.

## 클러스터 종료 이벤트
<a name="emr-cloudwatch-cluster-termination-events"></a>


| 상태 또는 상태 변경 | 심각도 | 이벤트 유형 | 이벤트 코드 | 메시지 | 
| --- | --- | --- | --- | --- | 
| TERMINATED  | 심각도는 다음과 같이 상태가 변경된 이유에 따라 다릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-manage-cloudwatch-events.html)  | EMR 클러스터 상태 변경  | *none*  | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `StateChangeReason:Code`의 이유로 `Time`에 종료되었습니다.  | 
| TERMINATED\$1WITH\$1ERRORS  | CRITICAL  | EMR 클러스터 상태 변경  | *none*  | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `StateChangeReason:Code`의 이유로 `Time`에 오류로 종료되었습니다.  | 
| TERMINATED\$1WITH\$1ERRORS  | CRITICAL  | EMR 클러스터 상태 변경  | *none*  | Amazon EMR `ClusterId (ClusterName)` 클러스터가 `StateChangeReason:Code`의 이유로 `Time`에 오류로 종료되었습니다.  | 

## 인스턴스 플릿 상태 변경 이벤트
<a name="emr-cloudwatch-instance-fleet-events"></a>

**참고**  
인스턴스 플릿 구성은 5.0.0 및 5.0.3을 제외한 Amazon EMR 릴리스 4.8.0 이상에서만 제공됩니다.


****  

| 상태 또는 상태 변경 | 심각도 | 이벤트 유형 | 이벤트 코드 | 메시지 | 
| --- | --- | --- | --- | --- | 
| `PROVISIONING`에서 `WAITING`으로  | INFO  |  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `InstanceFleetID`에 대한 프로비저닝이 완료되었습니다. 프로비저닝이 `Time`에 시작되었고 `Num`분이 걸렸습니다. 이제 인스턴스 플릿의 온디맨드 용량은 `Num`이며, 스팟 용량은 `Num`입니다. 목표 온디맨드 용량은 `Num`, 목표 스팟 용량은 `Num`이었습니다.  | 
| `WAITING`에서 `RESIZING`으로  | INFO  |  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `InstanceFleetID`에 대한 크기 조정이 `Time`에 시작되었습니다. 인스턴스 플릿 크기가 `Num`의 온디맨드 용량에서 `Num`의 목표 용량으로, `Num`의 스팟 용량이 `Num`의 목표 용량으로 조정됩니다.  | 
| `RESIZING`에서 `WAITING`으로  | INFO  |  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `InstanceFleetID`에 대한 크기 조정 작업이 완료되었습니다. 크기 조정이 `Time`에 시작되었고 `Num`분이 걸렸습니다. 이제 인스턴스 플릿의 온디맨드 용량은 `Num`이며, 스팟 용량은 `Num`입니다. 목표 온디맨드 용량은 `Num`, 목표 스팟 용량은 `Num`이었습니다.  | 
| `RESIZING`에서 `WAITING`으로  | INFO  |  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `InstanceFleetID`에 대한 크기 조정 작업이 제한 시간에 도달하여 중지되었습니다. 크기 조정이 `Time`에 시작되었고 `Num`분 후에 중지되었습니다. 이제 인스턴스 플릿의 온디맨드 용량은 `Num`이며, 스팟 용량은 `Num`입니다. 목표 온디맨드 용량은 `Num`, 목표 스팟 용량은 `Num`이었습니다.  | 
| SUSPENDED  | ERROR  |  | none | Amazon EMR `InstanceFleetID` 클러스터의 인스턴스 플릿 `ClusterId (ClusterName)`가 `Time`에 일시 중단되었습니다. 이유: `ReasonDesc`.  | 
| RESIZING  | WARNING  |  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `InstanceFleetID`에 대한 크기 조정 작업이 중단되었습니다. 이유: `ReasonDesc`.  | 
| `WAITING` 또는 `Running`  | INFO  |  | none | Amazon EMR이 `AvailabilityZone` 가용 영역에 스팟 용량을 추가하는 동안 Amazon EMR `InstanceFleetID` 클러스터의 인스턴스 플릿 `ClusterId (ClusterName)`에 대한 크기 조정 작업을 완료할 수 없었습니다. 추가 스팟 용량 프로비저닝 요청을 취소했습니다. 권장 조치로 [Amazon EMR 클러스터에 대한 가용 영역 유연성](emr-flexibility.md)를 확인하고 다시 시도합니다.  | 
| `WAITING` 또는 `Running`  | INFO  |  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `InstanceFleetID`에 대한 크기 조정 작업이 `Entity`에 의해 `Time`에 시작되었습니다.  | 

## 인스턴스 플릿 재구성 이벤트
<a name="emr-cloudwatch-instance-fleet-events-reconfig"></a>


****  

| 상태 또는 상태 변경 | 심각도 | 메시지 | 
| --- | --- | --- | 
| 인스턴스 플릿 재구성 요청됨  | INFO  | 사용자가 Amazon EMR 클러스터`ClusterId`(`ClusterName`)에서 인스턴스 플릿 `InstanceFleetID`을(를) 재구성하도록 요청했습니다.  | 
| 인스턴스 플릿 재구성 시작  | INFO  | Amazon EMR이 `Time`에 있는 Amazon EMR 클러스터`ClusterId`(`ClusterName`)에서 인스턴스 플릿 `InstanceFleetID`의 재구성을 시작했습니다.  | 
| 인스턴스 플릿 재구성 완료  | INFO  | Amazon EMR이 Amazon EMR 클러스터`ClusterId`(`ClusterName`)에서 인스턴스 플릿 `InstanceFleetID`의 재구성을 완료했습니다.  | 
| 인스턴스 플릿 재구성 실패  | WARNING  | Amazon EMR이 `Time`의 Amazon EMR 클러스터`ClusterId`(`ClusterName`)에서 인스턴스 플릿 `InstanceFleetID`을(를) 재구성하지 못했습니다. `Reason`(으)로 인해 재구성에 실패했습니다.  | 
| 인스턴스 플릿 재구성 되돌리기 시작  | INFO  | Amazon EMR은 Amazon EMR 클러스터`ClusterId`(`ClusterName`)의 인스턴스 플릿 `InstanceFleetID`을(를) 이전에 성공한 구성으로 되돌리고 있습니다.  | 
| 인스턴스 플릿 재구성 되돌리기 완료됨  | INFO  | Amazon EMR이 Amazon EMR 클러스터`ClusterId`(`ClusterName`)의 인스턴스 플릿 `InstanceFleetID`을(를) 이전에 성공한 구성으로 되돌렸습니다.  | 
| 인스턴스 플릿 재구성 되돌리기 실패  | CRITICAL  | Amazon EMR은 Amazon EMR 클러스터`ClusterId`(`ClusterName`)에서 인스턴스 플릿 `InstanceFleetID`를 `Time`에서 이전에 성공한 구성으로 되돌릴 수 없습니다. `Reason`(으)로 인해 재구성 되돌리기가 실패했습니다.  | 
| 인스턴스 플릿 재구성 되돌리기가 차단됨  | INFO  | Amazon EMR은 인스턴스 플릿이 `State` 상태이기 때문에 `Time`에서 Amazon EMR 클러스터`ClusterId`(`ClusterName`)의 인스턴스 플릿 `InstanceFleetID`를 일시적으로 차단했습니다.  | 

## 인스턴스 플릿 크기 조정 이벤트
<a name="emr-cloudwatch-instance-fleet-resize-events"></a>


****  

| 이벤트 유형 | 심각도 | 이벤트 코드 | 메시지 | 
| --- | --- | --- | --- | 
| EMR 인스턴스 플릿 크기 조정   | ERROR | 스팟 프로비저닝 제한 시간  | `InstanceFleetID` AZ에서 스팟 용량을 확보하는 동안 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `AvailabilityZone`에 대한 크기 조정 작업을 완료할 수 없었습니다. 이제 요청을 취소하고 추가 스팟 용량을 프로비저닝하려는 시도를 중단합니다. 인스턴스 플릿은 `num`의 스팟 용량을 프로비저닝했습니다. 목표 스팟 용량은 `num`이었습니다. [여기](emr-flexibility.md) 설명서 페이지에서 자세한 내용과 권장 조치를 확인하고 다시 시도합니다.  | 
| EMR 인스턴스 플릿 크기 조정   | ERROR | 온디맨드 프로비저닝 제한 시간  | `InstanceFleetID` AZ에서 온디맨드 용량을 확보하는 동안 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 `AvailabilityZone`에 대한 크기 조정 작업을 완료할 수 없었습니다. 이제 요청을 취소하고 추가 온디맨드 용량을 프로비저닝하려는 시도를 중단합니다. 인스턴스 플릿은 `num`의 온디맨드 용량을 프로비저닝했습니다. 목표 온디맨드 용량은 `num`이었습니다. [여기](emr-flexibility.md) 설명서 페이지에서 자세한 내용과 권장 조치를 확인하고 다시 시도합니다.  | 
| EMR 인스턴스 플릿 크기 조정   | WARNING | EC2 프로비저닝 - 인스턴스 용량 부족 | EMR `ClusterId (ClusterName)` 클러스터에서 인스턴스 플릿 `InstanceFleetID`에 대한 크기 조정 작업을 완료할 수 없습니다. `[AvailabilityZone1]` 가용 영역에서 인스턴스 유형 `[Instancetype1, Instancetype2]`에 사용할 Amazon EC2의 스팟 용량이 부족하고 인스턴스 유형 `[Instancetype3, Instancetype4]`에 사용할 온디맨드 용량이 부족하기 때문입니다. 지금까지 인스턴스 플릿은 `num`의 온디맨드 용량을 프로비저닝했지만 목표 온디맨드 용량은 `num`이었습니다. 프로비저닝된 스팟 용량은 `num`이지만 목표 스팟 용량은 `num`이었습니다. 이 이벤트에 대응하는 방법에 대한 자세한 내용은 이 [설명서](emr-EC2_INSUFFICIENT_CAPACITY-error.md)를 참조하세요.  | 
| EMR 인스턴스 플릿 크기 조정   | WARNING | 스팟 프로비저닝 제한 시간 - 크기 조정 계속  | `AvailabilityZone` AZ에서 `[Instancetype1, Instancetype2]`의 경우 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 ID `InstanceFleetID`에 대해 `time`에 시작된 인스턴스 플릿 크기 조정 작업을 위한 스팟 용량을 아직 프로비저닝하고 있습니다. `time`에 시작된 이전 크기 조정 작업의 경우 제한 시간이 만료되어 Amazon EMR은 요청된 `num`개 인스턴스 중 `num`개를 인스턴스 플릿에 추가한 후 스팟 용량 프로비저닝을 중단했습니다. 자세한 내용은 [여기](emr-flexibility.md) 설명서 페이지를 참조하세요. | 
| EMR 인스턴스 플릿 크기 조정   | WARNING | 온디맨드 프로비저닝 제한 시간 - 크기 조정 계속  | `AvailabilityZone` AZ에서 `[Instancetype1, Instancetype2]`의 경우 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 플릿 ID `InstanceFleetID`에 대해 `time`에 시작된 인스턴스 플릿 크기 조정 작업을 위한 온디맨드 용량을 아직 프로비저닝하고 있습니다. `time`에 시작된 이전 크기 조정 작업의 경우 제한 시간이 만료되어 Amazon EMR은 요청된 `num`개 인스턴스 중 `num`개를 인스턴스 플릿에 추가한 후 온디맨드 용량 프로비저닝을 중단했습니다. 자세한 내용은 [여기](emr-flexibility.md) 설명서 페이지를 참조하세요. | 
| EMR 인스턴스 플릿 크기 조정   | WARNING | EC2 프로비저닝 - 서브넷의 사용 가능한 주소가 부족함  | 지정된 서브넷 [Subnet1, Subnet2]에 사용 가능한 프라이빗 IP 주소가 부족하여 요청을 이행할 수 없으므로 Amazon EMR 클러스터 ClusterId (ClusterName)에서 인스턴스 플릿 InstanceFleetID에 대한 크기 조정 작업을 완료할 수 없습니다. DescribeSubnets 작업을 사용하여 서브넷에서 사용 가능한 IP 주소 수(사용되지 않은 주소)를 확인합니다. 이 이벤트에 응답하는 방법에 대한 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| EMR 인스턴스 플릿 크기 조정   | WARNING | EC2 프로비저닝 - vCPU 제한을 초과함  | account (accountId)에서 실행 중인 인스턴스에 할당된 vCPU(가상 처리 단위) 수의 제한에 도달했으므로 Amazon EMR 클러스터 ClusterName에서 인스턴스 플릿 InstanceFleetID의 크기 조정이 지연됩니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| EMR 인스턴스 플릿 크기 조정  | WARNING | EC2 프로비저닝 - 스팟 인스턴스 수 제한을 초과함  | Amazon EMR 클러스터 ClusterID (ClusterName)에서 인스턴스 플릿 InstanceFleetID의 프로비전이 지연됩니다. account (accountId)에서 시작할 수 있는 스팟 인스턴스 수의 제한에 도달했기 때문입니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| EMR 인스턴스 플릿 크기 조정   | WARNING | EC2 프로비저닝 - 인스턴스 제한을 초과함  | Amazon EMR 클러스터 ClusterID (ClusterName)에서 인스턴스 플릿 InstanceFleetID의 프로비전이 지연됩니다. account (accountId)에서 실행할 수 있는 온디맨드 인스턴스 수의 제한에 도달했기 때문입니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 

**참고**  
프로비저닝 제한 시간 이벤트는 제한 시간이 만료된 후 Amazon EMR이 플릿에 대한 스팟 또는 온디맨드 용량 프로비저닝을 중지할 때 발생합니다. 이러한 이벤트에 대응하는 방법에 대한 자세한 내용은 [Amazon EMR 클러스터 인스턴스 플릿 크기 조정 제한 시간 이벤트에 대한 대응](emr-events-response-timeout-events.md) 섹션을 참조하세요.

## 인스턴스 그룹 이벤트
<a name="emr-cloudwatch-instance-group-events"></a>


****  

| 이벤트 유형 | 심각도 | 이벤트 코드 | 메시지 | 
| --- | --- | --- | --- | 
| `RESIZING`에서 `Running`으로  | INFO  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 크기 조정 작업이 완료되었습니다. 이제 인스턴스 수는 `Num`개입니다. 크기 조정이 `Time`에 시작되었고 완료하는 데 `Num`분이 걸렸습니다.  | 
| `RUNNING`에서 `RESIZING`으로  | INFO  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 크기 조정이 `Time`에 시작되었습니다. 인스턴스 수가 `Num`개에서 `Num`개로 조정됩니다.  | 
| SUSPENDED  | ERROR  | none | Amazon EMR `InstanceGroupID` 클러스터의 인스턴스 그룹 `ClusterId (ClusterName)`가 `Time`에 일시 중단되었습니다. 이유: `ReasonDesc`.  | 
| RESIZING  | WARNING  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 크기 조정 작업이 중단되었습니다. 이유: `ReasonDesc`.  | 
| EMR 인스턴스 그룹 크기 조정   | WARNING | EC2 프로비저닝 - 인스턴스 용량 부족 | EMR `ClusterId (ClusterName)` 클러스터의 `InstanceGroupID` 인스턴스 그룹에서 `time`에 시작된 크기 조정 작업을 완료할 수 없습니다. `[AvailabilityZone1]` 가용 영역의 `[Instancetype]` 인스턴스 유형에 대해 Amazon EC2의 용량(`Spot/On Demand`)이 부족하기 때문입니다. 지금까지 인스턴스 그룹에서 실행 중인 인스턴스 수는 `num`개이지만 요청된 인스턴스 수는 `num`개였습니다. 이 이벤트에 대응하는 방법에 대한 자세한 내용은 이 [설명서](emr-EC2_INSUFFICIENT_CAPACITY-error.md)를 참조하세요.  | 
| EMR 인스턴스 그룹 크기 조정   | WARNING | EC2 프로비저닝 - 서브넷의 사용 가능한 주소가 부족함  | 지정된 서브넷 [Subnet1, Subnet2]에 사용 가능한 프라이빗 IP 주소가 부족하여 요청을 이행할 수 없으므로 Amazon EMR 클러스터 ClusterId (ClusterName)에서 인스턴스 그룹 InstanceGroupID에 대한 크기 조정 작업을 완료할 수 없습니다. DescribeSubnets 작업을 사용하여 서브넷에서 사용 가능한 IP 주소 수(사용되지 않은 주소)를 확인합니다. 이 이벤트에 응답하는 방법에 대한 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| EMR 인스턴스 그룹 크기 조정   | WARNING | EC2 프로비저닝 - vCPU 제한을 초과함  | account (accountId)에서 실행 중인 인스턴스에 할당된 vCPU(가상 처리 단위) 수의 제한에 도달했으므로 Amazon EMR 클러스터 ClusterName에서 인스턴스 그룹 InstanceGroupID의 크기 조정이 지연됩니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| EMR 인스턴스 그룹 크기 조정   | WARNING | EC2 프로비저닝 - 스팟 인스턴스 수 제한을 초과함  | Amazon EMR 클러스터 ClusterID (ClusterName)에서 인스턴스 그룹 InstanceGroupID의 프로비전이 지연됩니다. account (accountId)에서 시작할 수 있는 스팟 인스턴스 수의 제한에 도달했기 때문입니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| EMR 인스턴스 그룹 크기 조정   | WARNING | EC2 프로비저닝 - 인스턴스 제한을 초과함  | Amazon EMR 클러스터 ClusterID (ClusterName)에서 인스턴스 그룹 InstanceGroupID의 프로비전이 지연됩니다. account (accountId)에서 실행할 수 있는 온디맨드 인스턴스 수의 제한에 도달했기 때문입니다. 자세한 내용은 [Error codes for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)를 참조하세요. | 
| `RUNNING`에서 `RESIZING`으로  | INFO  | none | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 크기 조정이 `Entity`에 의해 `Time`에 시작되었습니다.  | 

**참고**  
Amazon EMR 버전 5.21.0 이상에서는 클러스터 구성을 재정의할 수 있으며, 실행 중인 클러스터의 각 인스턴스 그룹에 대해 추가 구성 분류를 지정할 수 있습니다. Amazon EMR 콘솔, AWS Command Line Interface (AWS CLI) 또는 AWS SDK를 사용하여이 작업을 수행할 수 있습니다. 자세한 내용은 [실행 중 클러스터의 인스턴스 그룹에 대해 구성 제공](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html)을 참조하세요.

다음 테이블에는 재구성 작업의 Amazon EMR 이벤트, 이벤트가 나타내는 상태 또는 상태 변경, 이벤트의 심각도 및 이벤트 메시지가 나와 있습니다.


****  

| 상태 또는 상태 변경 | 심각도 | 메시지 | 
| --- | --- | --- | 
| RUNNING  | INFO  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 재구성이 사용자에 의해 `Time`에 시작되었습니다. 요청된 구성의 버전은 `Num`입니다.  | 
| `RECONFIGURING`에서 `Running`으로 | INFO  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 재구성 작업이 완료되었습니다. 재구성이 `Time`에 시작되었고 완료하는 데 `Num`분이 걸렸습니다. 현재 구성 버전은 `Num`입니다.  | 
| `RUNNING`에서 `RECONFIGURING`으로 in  | INFO  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 재구성이 `Time`에 시작되었습니다. 버전 번호 `Num`에서 버전 번호 `Num`까지 구성 중입니다.  | 
| RESIZING  | INFO  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 구성 버전 `Num`에서의 재구성 작업이 `Time`에 일시적으로 차단됩니다. 인스턴스 그룹이 `State` 상태이기 때문입니다.  | 
| RECONFIGURING  | INFO  | Amazon EMR ClusterId (ClusterName) 클러스터의 인스턴스 그룹 InstanceGroupID에 대한 인스턴스 개수(Num개)에서의 크기 조정 작업이 Time에 일시적으로 차단됩니다. 인스턴스 그룹이 State 상태이기 때문입니다. | 
| RECONFIGURING  | WARNING  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대한 재구성 작업이 `Time`에 실패했으며 실패하기까지 `Num`분이 걸렸습니다. 실패한 구성 버전은 `Num`입니다.  | 
| RECONFIGURING  | INFO  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대해 `Time`에 이전의 성공한 버전 번호(`Num`)로 구성을 되돌립니다. 새 구성 버전은 `Num`입니다.  | 
| `RECONFIGURING`에서 `Running`으로 | INFO  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대해 `Time`에 이전의 성공한 버전(`Num`)으로 구성을 되돌렸습니다. 새 구성 버전은 `Num`입니다.  | 
| `RECONFIGURING`에서 `SUSPENDED`으로  | CRITICAL  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 대해 `Time`에 이전의 성공한 버전(`Num`)으로 구성을 되돌리지 못했습니다.  | 

## 자동 조정 정책 이벤트
<a name="emr-cloudwatch-autoscale-events"></a>


****  

| 상태 또는 상태 변경 | 심각도 | 메시지 | 
| --- | --- | --- | 
| PENDING  | INFO  | `Time`에 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에 Auto Scaling 정책을 추가했습니다. 정책이 연결 대기 중입니다. – 또는 -  `Time`에 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에서 Auto Scaling 정책을 업데이트했습니다. 정책이 연결 대기 중입니다.  | 
| ATTACHED  | INFO  | `Time`에 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에서 Auto Scaling 정책을 연결했습니다.  | 
| `DETACHED`  | INFO  | `Time`에 Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에서 Auto Scaling 정책을 분리했습니다.  | 
| FAILED  | ERROR  | Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에서 Auto Scaling 정책을 연결할 수 없으며 `Time`에 실패했습니다. – 또는 -  Amazon EMR `ClusterId (ClusterName)` 클러스터의 인스턴스 그룹 `InstanceGroupID`에서 Auto Scaling 정책을 분리할 수 없으며 `Time`에 실패했습니다.  | 

## 단계 이벤트
<a name="emr-cloudwatch-step-events"></a>


****  

| 상태 또는 상태 변경 | 심각도 | 메시지 | 
| --- | --- | --- | 
| PENDING  | INFO  | `Time`에 `StepID (StepName)` 단계가 Amazon EMR `ClusterId (ClusterName)` 클러스터에 추가되었으며 실행 보류 중입니다.  | 
| CANCEL\$1PENDING  | WARN  | `Time`에 Amazon EMR `StepID (StepName)` 클러스터에서 `ClusterId (ClusterName)` 단계가 취소되었으며 취소 보류 중입니다.  | 
| RUNNING  | INFO  | Amazon EMR `StepID (StepName)` 클러스터에서 `ClusterId (ClusterName)` 단계 실행이 `Time`에 시작되었습니다.  | 
| COMPLETED  | INFO  | Amazon EMR `StepID (StepName)` 클러스터에서 `ClusterId (ClusterName)` 단계 실행이 `Time`에 완료되었습니다. 단계 실행이 `Time`에 시작되었고 완료하는 데 `Num`분이 걸렸습니다.  | 
| CANCELLED  | WARN  | `Time`에 Amazon EMR `ClusterId (ClusterName)` 클러스터의 클러스터 단계 `StepID (StepName)`에 대한 취소 요청이 성공했으며 이제 단계가 취소되었습니다.  | 
| FAILED  | ERROR  | `Time`에 Amazon EMR `ClusterId (ClusterName)` 클러스터의 `StepID (StepName)` 단계가 실패했습니다.  | 

## 비정상 노드 교체 이벤트
<a name="emr-cloudwatch-unhealthy-node-replacement-events"></a>


| 이벤트 유형 | 심각도 | 이벤트 코드 | 메시지 | 
| --- | --- | --- | --- | 
| Amazon EMR 비정상 노드 교체 | INFO | 비정상 코어 노드 감지됨 | Amazon EMR은 Amazon EMR 클러스터 `clusterID (ClusterName)`에 있는 `InstanceGroup/Fleet`의 코어 인스턴스 `[instanceID (InstanceName)]`가 `UNHEALTHY` 상태임을 식별했습니다. Amazon EMR은 `UNHEALTHY` 인스턴스를 복구하거나 정상적으로 교체하려고 시도합니다.  | 
| Amazon EMR 비정상 노드 교체 | INFO | 코어 노드 비정상 - 대체 비활성화됨 | Amazon EMR은 Amazon EMR 클러스터 `(clusterID) (ClusterName)`에 있는 `InstanceGroup/Fleet`의 코어 인스턴스 `[instanceID (InstanceName)]`가 `UNHEALTHY` 상태임을 식별했습니다. 클러스터에서 비정상 코어 노드의 정상적 교체 기능을 켜면 복구할 수 없는 경우 Amazon EMR이 `UNHEALTHY` 인스턴스를 정상적으로 교체할 수 있습니다.  | 
| Amazon EMR 비정상 노드 교체 | WARN | 비정상 코어 노드 교체되지 않음 | Amazon EMR은 **이유 때문에 Amazon EMR 클러스터 `clusterID (ClusterName)`의 `InstanceGroup/Fleet`에서 `UNHEALTHY` 코어 인스턴스 `[instanceID (InstanceName)]`를 교체할 수 없습니다. Amazon EMR이 코어 노드를 교체할 수 없는 이유는 시나리오에 따라 다릅니다. 예를 들어, Amazon EMR이 노드를 삭제할 수 없는 한 가지 이유는 클러스터에 나머지 코어 노드가 없기 때문입니다.  | 
| Amazon EMR 비정상 노드 교체 | INFO | 비정상 코어 노드 복구됨 | Amazon EMR이 Amazon EMR 클러스터 `clusterID (ClusterName)`의 `InstanceGroup/Fleet`에서 `UNHEALTHY` 상태의 코어 인스턴스 `[instanceID (InstanceName)]`를 복구했습니다.  | 

비정상 노드 교체에 대한 자세한 내용은 [비정상 노드 교체](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-node-replacement.html)를 참조하세요.

## Amazon EMR 콘솔을 사용하여 이벤트 보기
<a name="emr-events-console"></a>

각 클러스터마다 이벤트가 내림차순으로 나열되어 있는 세부 정보 창에서 간단한 이벤트 목록을 확인할 수 있습니다. 또한 리전에 속한 모든 클러스터의 이벤트까지 모두 내림차순으로 표시됩니다.

리전의 모든 클러스터 이벤트가 특정 사용자에게 노출되지 않도록 하려면 `"Effect": "Deny"` 작업 권한을 거부하는 문(`elasticmapreduce:ViewEventsFromAllClustersInConsole`)을 해당 사용자와 연결된 정책에 추가합니다.

**콘솔을 사용하여 리전의 모든 클러스터 이벤트를 보는 방법**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **이벤트**를 선택합니다.

**콘솔을 사용하여 특정 클러스터 이벤트를 보는 방법**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **클러스터**를 선택하고 클러스터를 선택합니다.

1. 모든 이벤트를 보려면 클러스터 세부 정보 페이지에서 **이벤트** 탭을 선택합니다.

# Amazon EMR에서 CloudWatch 이벤트에 대한 대응
<a name="emr-events-response"></a>

이 섹션에서는 Amazon EMR이 [CloudWatch 이벤트 메시지](emr-manage-cloudwatch-events.md)로 생성하는 실행 가능한 이벤트에 대응할 수 있는 다양한 방법을 설명합니다. 이벤트에 대응할 수 있는 방법으로, 규칙 생성, 경보 설정 및 기타 응답이 있습니다. 다음 섹션에는 절차에 대한 링크와 일반적인 이벤트에 대한 권장 응답이 포함되어 있습니다.

**Topics**
+ [CloudWatch를 사용하여 Amazon EMR 이벤트에 대한 규칙 생성](emr-events-cloudwatch-console.md)
+ [Amazon EMR에서 CloudWatch 지표에 대한 경보 설정](UsingEMR_ViewingMetrics_Alarm.md)
+ [Amazon EMR 클러스터 인스턴스 용량 부족 이벤트에 대한 대응](emr-events-response-insuff-capacity.md)
+ [Amazon EMR 클러스터 인스턴스 플릿 크기 조정 제한 시간 이벤트에 대한 대응](emr-events-response-timeout-events.md)

# CloudWatch를 사용하여 Amazon EMR 이벤트에 대한 규칙 생성
<a name="emr-events-cloudwatch-console"></a>

Amazon EMR은 이벤트를 CloudWatch 이벤트 스트림에 자동으로 전송합니다. 지정된 패턴에 따라 이벤트를 일치시키는 규칙을 생성하고 이벤트를 대상으로 라우트하여 조치를 취할 수 있습니다(예: 이메일 알림 전송). 패턴은 이벤트 JSON 객체와 비교됩니다. Amazon EMR 이벤트 세부 정보에 대한 자세한 내용은 *Amazon CloudWatch Events 사용 설명서*에서 [Amazon EMR events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#emr_event_type)를 참조하세요.

CloudWatch 이벤트 규칙 설정에 대한 자세한 내용은 [Creating a CloudWatch rule that triggers on an event](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Rule.html)를 참조하세요.

# Amazon EMR에서 CloudWatch 지표에 대한 경보 설정
<a name="UsingEMR_ViewingMetrics_Alarm"></a>

Amazon EMR은 지표를 Amazon CloudWatch로 전송합니다. 이에 대응하여 CloudWatch를 사용하여 Amazon EMR 지표에 대한 경보를 설정할 수 있습니다. 예를 들어, HDFS 사용률이 80%를 초과할 때마다 이메일을 전송하도록 CloudWatch에서 경보를 구성할 수 있습니다. 자세한 지침은 *Amazon CloudWatch 사용 설명서*에서 [Amazon CloudWatch 경보 생성 또는 편집](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)을 참조하세요.

# Amazon EMR 클러스터 인스턴스 용량 부족 이벤트에 대한 대응
<a name="emr-events-response-insuff-capacity"></a>

## 개요
<a name="emr-events-response-insuff-capacity-overview"></a>

Amazon EMR 클러스터는 선택한 가용 영역에서 클러스터 시작 또는 크기 조정 요청을 처리할 용량이 부족한 경우 이벤트 코드 `EC2 provisioning - Insufficient Instance Capacity`를 반환합니다. Amazon EMR에서 용량 부족 예외가 반복적으로 발생하여 클러스터 시작 또는 클러스터 크기 조정 작업에 대한 프로비저닝 요청을 이행할 수 없는 경우, 이 이벤트는 인스턴스 그룹과 인스턴스 플릿 모두에서 주기적으로 발생합니다.

이 페이지에서는 EMR 클러스터에서 이 이벤트가 발생할 때 이 이벤트 유형에 가장 잘 대응하는 방법을 설명합니다.

## 용량 부족 이벤트에 대한 권장 대응
<a name="emr-events-response-insuff-capacity-rec"></a>

부족한 용량 이벤트에 다음 방법 중 하나를 사용하여 대응하는 것이 좋습니다.
+ 용량이 복구될 때까지 기다립니다. 용량이 자주 바뀌므로 용량 부족 예외는 저절로 복구될 수 있습니다. Amazon EC2 용량이 확보되는 즉시 클러스터의 크기 조정이 시작되거나 완료됩니다.
+ 또는 클러스터를 종료하고, 인스턴스 유형 구성을 수정하며, 업데이트된 클러스터 구성 요청으로 새 클러스터를 생성할 수 있습니다. 자세한 내용은 [Amazon EMR 클러스터에 대한 가용 영역 유연성](emr-flexibility.md) 단원을 참조하십시오.

다음 섹션에 설명된 대로 용량 부족 이벤트에 대한 규칙 또는 자동 대응을 설정할 수도 있습니다.

## 용량 부족 이벤트 발생 시 자동 복구
<a name="emr-events-response-insuff-capacity-ex"></a>

Amazon EMR 이벤트(예: `EC2 provisioning - Insufficient Instance Capacity` 이벤트 코드의 이벤트)에 대한 대응으로 자동화를 구축할 수 있습니다. 예를 들어 다음 AWS Lambda 함수는 온디맨드 인스턴스를 사용하는 인스턴스 그룹으로 EMR 클러스터를 종료한 다음 원래 요청과 다른 인스턴스 유형을 포함하는 인스턴스 그룹으로 새 EMR 클러스터를 생성합니다.

다음과 같은 조건에 따라 자동 프로세스가 트리거됩니다.
+ 프라이머리 또는 코어 노드에서 20분 넘게 용량 부족 이벤트가 생성되었습니다.
+ 클러스터가 **준비** 또는 **대기 중** 상태가 아닙니다. EMR 클러스터 상태에 대한 자세한 내용은 [클러스터 수명 주기 이해](emr-overview.md#emr-overview-cluster-lifecycle) 섹션을 참조하세요.

**참고**  
용량 부족 예외에 대한 자동 프로세스를 구축할 때 용량 부족 이벤트는 복구 가능하다는 점을 고려해야 합니다. 용량은 자주 변경되며 Amazon EC2 용량이 확보되는 즉시 클러스터는 크기 조정 또는 시작 작업을 재개합니다.

**Example 용량 부족 이벤트에 대응하는 함수**  

```
// Lambda code with Python 3.10 and handler is lambda_function.lambda_handler
// Note: related IAM role requires permission to use Amazon EMR

import json
import boto3
import datetime
from datetime import timezone

INSUFFICIENT_CAPACITY_EXCEPTION_DETAIL_TYPE = "EMR Instance Group Provisioning"
INSUFFICIENT_CAPACITY_EXCEPTION_EVENT_CODE = (
    "EC2 provisioning - Insufficient Instance Capacity"
)
ALLOWED_INSTANCE_TYPES_TO_USE = [
    "m5.xlarge",
    "c5.xlarge",
    "m5.4xlarge",
    "m5.2xlarge",
    "t3.xlarge",
]
CLUSTER_START_ACCEPTABLE_STATES = ["WAITING", "RUNNING"]
CLUSTER_START_SLA = 20

CLIENT = boto3.client("emr", region_name="us-east-1")

# checks if the incoming event is 'EMR Instance Fleet Provisioning' with eventCode 'EC2 provisioning - Insufficient Instance Capacity'
def is_insufficient_capacity_event(event):
    if not event["detail"]:
        return False
    else:
        return (
            event["detail-type"] == INSUFFICIENT_CAPACITY_EXCEPTION_DETAIL_TYPE
            and event["detail"]["eventCode"]
            == INSUFFICIENT_CAPACITY_EXCEPTION_EVENT_CODE
        )


# checks if the cluster is eligible for termination
def is_cluster_eligible_for_termination(event, describeClusterResponse):
    # instanceGroupType could be CORE, MASTER OR TASK
    instanceGroupType = event["detail"]["instanceGroupType"]
    clusterCreationTime = describeClusterResponse["Cluster"]["Status"]["Timeline"][
        "CreationDateTime"
    ]
    clusterState = describeClusterResponse["Cluster"]["Status"]["State"]

    now = datetime.datetime.now()
    now = now.replace(tzinfo=timezone.utc)
    isClusterStartSlaBreached = clusterCreationTime < now - datetime.timedelta(
        minutes=CLUSTER_START_SLA
    )

    # Check if instance group receiving Insufficient capacity exception is CORE or PRIMARY (MASTER),
    # and it's been more than 20 minutes since cluster was created but the cluster state and the cluster state is not updated to RUNNING or WAITING
    if (
        (instanceGroupType == "CORE" or instanceGroupType == "MASTER")
        and isClusterStartSlaBreached
        and clusterState not in CLUSTER_START_ACCEPTABLE_STATES
    ):
        return True
    else:
        return False


# Choose item from the list except the exempt value
def choice_excluding(exempt):
    for i in ALLOWED_INSTANCE_TYPES_TO_USE:
        if i != exempt:
            return i


# Create a new cluster by choosing different InstanceType.
def create_cluster(event):
    # instanceGroupType cloud be CORE, MASTER OR TASK
    instanceGroupType = event["detail"]["instanceGroupType"]

    # Following two lines assumes that the customer that created the cluster already knows which instance types they use in original request
    instanceTypesFromOriginalRequestMaster = "m5.xlarge"
    instanceTypesFromOriginalRequestCore = "m5.xlarge"

    # Select new instance types to include in the new createCluster request
    instanceTypeForMaster = (
        instanceTypesFromOriginalRequestMaster
        if instanceGroupType != "MASTER"
        else choice_excluding(instanceTypesFromOriginalRequestMaster)
    )
    instanceTypeForCore = (
        instanceTypesFromOriginalRequestCore
        if instanceGroupType != "CORE"
        else choice_excluding(instanceTypesFromOriginalRequestCore)
    )

    print("Starting to create cluster...")
    instances = {
        "InstanceGroups": [
            {
                "InstanceRole": "MASTER",
                "InstanceCount": 1,
                "InstanceType": instanceTypeForMaster,
                "Market": "ON_DEMAND",
                "Name": "Master",
            },
            {
                "InstanceRole": "CORE",
                "InstanceCount": 1,
                "InstanceType": instanceTypeForCore,
                "Market": "ON_DEMAND",
                "Name": "Core",
            },
        ]
    }
    response = CLIENT.run_job_flow(
        Name="Test Cluster",
        Instances=instances,
        VisibleToAllUsers=True,
        JobFlowRole="EMR_EC2_DefaultRole",
        ServiceRole="EMR_DefaultRole",
        ReleaseLabel="emr-6.10.0",
    )

    return response["JobFlowId"]


# Terminated the cluster using clusterId received in an event
def terminate_cluster(event):
    print("Trying to terminate cluster, clusterId: " + event["detail"]["clusterId"])
    response = CLIENT.terminate_job_flows(JobFlowIds=[event["detail"]["clusterId"]])
    print(f"Terminate cluster response: {response}")


def describe_cluster(event):
    response = CLIENT.describe_cluster(ClusterId=event["detail"]["clusterId"])
    return response


def lambda_handler(event, context):
    if is_insufficient_capacity_event(event):
        print(
            "Received insufficient capacity event for instanceGroup, clusterId: "
            + event["detail"]["clusterId"]
        )

        describeClusterResponse = describe_cluster(event)

        shouldTerminateCluster = is_cluster_eligible_for_termination(
            event, describeClusterResponse
        )
        if shouldTerminateCluster:
            terminate_cluster(event)

            clusterId = create_cluster(event)
            print("Created a new cluster, clusterId: " + clusterId)
        else:
            print(
                "Cluster is not eligible for termination, clusterId: "
                + event["detail"]["clusterId"]
            )

    else:
        print("Received event is not insufficient capacity event, skipping")
```

# Amazon EMR 클러스터 인스턴스 플릿 크기 조정 제한 시간 이벤트에 대한 대응
<a name="emr-events-response-timeout-events"></a>

## 개요
<a name="emr-events-response-timeout-events-overview"></a>

Amazon EMR 클러스터는 인스턴스 플릿 클러스터의 크기 조정 작업을 실행하는 동안 [이벤트](emr-manage-cloudwatch-events.md#emr-cloudwatch-instance-fleet-resize-events)를 생성합니다. 프로비저닝 제한 시간 이벤트는 제한 시간이 만료된 후 Amazon EMR이 플릿에 대한 스팟 또는 온디맨드 용량 프로비저닝을 중지할 때 발생합니다. 제한 시간은 인스턴스 플릿의 [크기 조정 사양](https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceFleetResizingSpecifications.html)의 일부로 사용자가 구성할 수 있습니다. 동일한 인스턴스 플릿의 크기가 연속적으로 조정되는 시나리오에서 Amazon EMR은 현재 크기 조정 작업의 제한 시간이 만료되면 `Spot provisioning timeout - continuing resize` 또는 `On-Demand provisioning timeout - continuing resize` 이벤트를 생성합니다. 그런 다음 플릿의 다음 크기 조정 작업을 위한 용량 프로비저닝을 시작합니다.

## 인스턴스 플릿 크기 조정 제한 시간 이벤트에 대한 대응
<a name="emr-events-response-timeout-events-rec"></a>

프로비저닝 제한 시간 이벤트에 대한 다음 방법 중 하나를 사용하여 대응하는 것이 좋습니다.
+ [크기 조정 사양](https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceFleetResizingSpecifications.html)을 다시 확인하고 크기 조정 작업을 다시 시도합니다. 용량이 자주 변경되므로 Amazon EC2 용량이 확보되면 즉시 클러스터의 크기가 성공적으로 조정됩니다. 더 엄격한 SLA가 필요한 작업의 경우 제한 시간을 더 낮은 값으로 구성하는 것이 좋습니다.
+ 또는 다음 중 하나를 수행할 수 있습니다.
  + [인스턴스 및 가용 영역 유연성에 대한 모범 사례](emr-flexibility.md#emr-flexibility-types)를 기반으로 다양한 인스턴스 유형으로 새 클러스터 시작 또는
  + 온디맨드 용량으로 클러스터 시작
+ 프로비저닝 제한 시간 - 크기 조정 계속 이벤트의 경우 크기 조정 작업이 처리될 때까지 더 기다릴 수 있습니다. Amazon EMR은 구성된 크기 조정 사양에 따라 플릿에 대해 트리거된 크기 조정 작업을 계속 순차적으로 처리합니다.

다음 섹션의 설명에 따라 이 이벤트에 대한 규칙이나 자동 대응을 설정할 수도 있습니다.

## 프로비저닝 제한 시간 이벤트에서 자동 복구
<a name="emr-events-response-timeout-events-ex"></a>

`Spot Provisioning timeout` 이벤트 코드의 Amazon EMR 이벤트에 대한 대응으로 자동화를 구축할 수 있습니다. 예를 들어, 다음 AWS Lambda 함수는 태스크 노드에 대해 스팟 인스턴스를 사용하는 인스턴스 플릿이 있는 EMR 클러스터를 종료한 다음, 원래 요청과 다른 인스턴스 유형을 포함하는 인스턴스 플릿으로 새 EMR 클러스터를 생성합니다. 이 예제에서 태스크 노드에 대해 생성된 `Spot Provisioning timeout` 이벤트는 Lambda 함수의 실행을 트리거합니다.

**Example `Spot Provisioning timeout` 이벤트에 대응하는 예제 함수**  

```
// Lambda code with Python 3.10 and handler is lambda_function.lambda_handler
// Note: related IAM role requires permission to use Amazon EMR
 
import json
import boto3
import datetime
from datetime import timezone
 
SPOT_PROVISIONING_TIMEOUT_EXCEPTION_DETAIL_TYPE = "EMR Instance Fleet Resize"
SPOT_PROVISIONING_TIMEOUT_EXCEPTION_EVENT_CODE = (
    "Spot Provisioning timeout"
)
 
CLIENT = boto3.client("emr", region_name="us-east-1")
 
# checks if the incoming event is 'EMR Instance Fleet Resize' with eventCode 'Spot provisioning timeout'
def is_spot_provisioning_timeout_event(event):
    if not event["detail"]:
        return False
    else:
        return (
            event["detail-type"] == SPOT_PROVISIONING_TIMEOUT_EXCEPTION_DETAIL_TYPE
            and event["detail"]["eventCode"]
            == SPOT_PROVISIONING_TIMEOUT_EXCEPTION_EVENT_CODE
        )
 
 
# checks if the cluster is eligible for termination
def is_cluster_eligible_for_termination(event, describeClusterResponse):
    # instanceFleetType could be CORE, MASTER OR TASK
    instanceFleetType = event["detail"]["instanceFleetType"]
 
    # Check if instance fleet receiving Spot provisioning timeout event is TASK
    if (instanceFleetType == "TASK"):
        return True
    else:
        return False
 
 
# create a new cluster by choosing different InstanceType.
def create_cluster(event):
    # instanceFleetType cloud be CORE, MASTER OR TASK
    instanceFleetType = event["detail"]["instanceFleetType"]
 
    # the following two lines assumes that the customer that created the cluster already knows which instance types they use in original request
    instanceTypesFromOriginalRequestMaster = "m5.xlarge"
    instanceTypesFromOriginalRequestCore = "m5.xlarge"
   
    # select new instance types to include in the new createCluster request
    instanceTypesForTask = [
        "m5.xlarge",
        "m5.2xlarge",
        "m5.4xlarge",
        "m5.8xlarge",
        "m5.12xlarge"
    ]
    
    print("Starting to create cluster...")
    instances = {
        "InstanceFleets": [
            {
                "InstanceFleetType":"MASTER",
                "TargetOnDemandCapacity":1,
                "TargetSpotCapacity":0,
                "InstanceTypeConfigs":[
                    {
                        'InstanceType': instanceTypesFromOriginalRequestMaster,
                        "WeightedCapacity":1,
                    }
                ]
            },
            {
                "InstanceFleetType":"CORE",
                "TargetOnDemandCapacity":1,
                "TargetSpotCapacity":0,
                "InstanceTypeConfigs":[
                    {
                        'InstanceType': instanceTypesFromOriginalRequestCore,
                        "WeightedCapacity":1,
                    }
                ]
            },
            {
                "InstanceFleetType":"TASK",
                "TargetOnDemandCapacity":0,
                "TargetSpotCapacity":100,
                "LaunchSpecifications":{},
                "InstanceTypeConfigs":[
                    {
                        'InstanceType': instanceTypesForTask[0],
                        "WeightedCapacity":1,
                    },
                    {
                        'InstanceType': instanceTypesForTask[1],
                        "WeightedCapacity":2,
                    },
                    {
                        'InstanceType': instanceTypesForTask[2],
                        "WeightedCapacity":4,
                    },
                    {
                        'InstanceType': instanceTypesForTask[3],
                        "WeightedCapacity":8,
                    },
                    {
                        'InstanceType': instanceTypesForTask[4],
                        "WeightedCapacity":12,
                    }
                ],
                "ResizeSpecifications": {
                    "SpotResizeSpecification": {
                        "TimeoutDurationMinutes": 30
                    }
                }
            }
        ]
    }
    response = CLIENT.run_job_flow(
        Name="Test Cluster",
        Instances=instances,
        VisibleToAllUsers=True,
        JobFlowRole="EMR_EC2_DefaultRole",
        ServiceRole="EMR_DefaultRole",
        ReleaseLabel="emr-6.10.0",
    )
 
    return response["JobFlowId"]
 
 
# terminated the cluster using clusterId received in an event
def terminate_cluster(event):
    print("Trying to terminate cluster, clusterId: " + event["detail"]["clusterId"])
    response = CLIENT.terminate_job_flows(JobFlowIds=[event["detail"]["clusterId"]])
    print(f"Terminate cluster response: {response}")
 
 
def describe_cluster(event):
    response = CLIENT.describe_cluster(ClusterId=event["detail"]["clusterId"])
    return response
 
 
def lambda_handler(event, context):
    if is_spot_provisioning_timeout_event(event):
        print(
            "Received spot provisioning timeout event for instanceFleet, clusterId: "
            + event["detail"]["clusterId"]
        )
 
        describeClusterResponse = describe_cluster(event)
 
        shouldTerminateCluster = is_cluster_eligible_for_termination(
            event, describeClusterResponse
        )
        if shouldTerminateCluster:
            terminate_cluster(event)
 
            clusterId = create_cluster(event)
            print("Created a new cluster, clusterId: " + clusterId)
        else:
            print(
                "Cluster is not eligible for termination, clusterId: "
                + event["detail"]["clusterId"]
            )
 
    else:
        print("Received event is not spot provisioning timeout event, skipping")
```