​EMR 클러스터가 종료된 이유는 무엇인가요?

5분 분량
0

Amazon EMR 클러스터가 예기치 않게 종료되었습니다.

해결 방법

Amazon S3에 저장된 Amazon EMR 프로비저닝 로그 검토

Amazon EMR 클러스터 로그는 클러스터 시작 시 지정된 Amazon Simple Storage Service(Amazon S3) 버킷에 저장됩니다. 이 로그는 **s3://example-log-location/example-cluster-ID/node/example-EC2-instance-ID/**에 저장됩니다.

**참고:**example-log-location, example-cluster-IDexample-EC2-instance-ID를 시스템 이름으로 바꾸세요.

다음은 일반적인 오류 목록입니다.

SHUTDOWN_STEP_FAILED (USER_ERROR)
NO_SLAVES_LEFT (SYSTEM_ERROR)
The master failed: Error occurred: <html>??<head><title>502 Bad Gateway</title></head>??<body>??<center><h1>502 Bad Gateway</h1></center>??<hr><center>nginx/1.16.1</center>??</body>??</html>??
KMS_ISSUE (USER_ERROR)Terminated with errors, The master node was terminated by user.

**참고:**다음은 가장 일반적인 종료 오류입니다. EMR 클러스터는 나열된 오류 이외의 오류로 인해 종료될 수 있습니다. 자세한 내용은 리소스 오류를 참조하세요.

SHUTDOWN_STEP_FAILED(USER_ERROR)

EMR 클러스터에서 단계 작업을 제출할 때 ActionOnFailure 파라미터에서 단계 실패 동작을 지정할 수 있습니다. ActionOnFailure 파라미터에 대해 TERMINATE_CLUSTER 또는 TERMINATE_JOB_FLOW를 선택하면 EMR 클러스터가 종료됩니다. 자세한 내용은 StepConfig를 참조하세요.

다음은 AWS CloudTrail의 오류 메시지 예시입니다.

{
  "severity": "ERROR",
  "actionOnFailure": "TERMINATE_JOB_FLOW",
  "stepId": "s-2I0GXXXXXXXX",
  "name": "Example Step",
  "clusterId": "j-2YJXXXXXXX",
  "state": "FAILED",
  "message": "Step s-2I0GXXXXXXXX (Example Step) in Amazon EMR cluster j-2YJXXXXXXX failed at 202X-1X-0X 0X:XX UTC."
}

이 오류를 방지하려면 단계 작업을 제출할 때 ActionOnFailure 파라미터의 CONTINUE 또는 CANCEL\ _AND\ _WAIT 옵션을 사용하세요.

NO_SLAVES_LEFT(SYSTEM_ERROR)

이 오류는 다음과 같은 경우에 발생합니다.

  • EMR 클러스터에서 종료 방지 기능이 꺼져 있습니다.
  • 모든 코어 노드가 yarn-site 구성 분류의 최대 사용률 임계값에 명시된 디스크 스토리지 용량을 초과합니다. 기본 최대 사용률 임계값은 90%입니다.
  • 코어 인스턴스는 스팟 인스턴스이며 스팟 인스턴스는 TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY입니다.

스팟 인스턴스 종료에 대한 자세한 내용은 Amazon EC2가 스팟 인스턴스를 중단한 이유는 무엇인가요?를 참조하세요.

NO\ _SLAVE\ _LEFT 오류에 대한 자세한 내용은 NO_SLAVE_LEFT 및 코어 노드 FAILED_BY_MASTER로 종료된 클러스터를 참조하세요.

다음은 인스턴스 컨트롤러의 오류 메시지 예시입니다.

202X-0X-0X 1X:5X:5X,968 INFO Poller: InstanceJointStatusMap contains X entries (DD:5 R:3):
i-0e336xxxxxxxxxxxx 25d21h R  25d21h ig-22 ip-1x-2xx-xx-1xx.local.xxx.com  I:   52s Y:U    98s c: 0 am:    0 H:R  1.1%Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]

이 오류를 해결하려면 다음을 수행하세요.

502 잘못된 게이트웨이

502 잘못된 게이트웨이 오류는 Amazon EMR 내부 시스템이 일정 기간 동안 프라이머리 노드에 도달할 수 없을 때 발생합니다. 종료 방지를 해제하면 Amazon EMR이 종료됩니다. 인스턴스 컨트롤러 서비스가 다운되면 최신 인스턴스 컨트롤러 로그와 인스턴스 상태 로그를 확인하세요. 인스턴스 컨트롤러 표준 출력은 메모리가 부족하여 서비스가 종료되었음을 보여줍니다. 이는 클러스터의 프라이머리 노드에 메모리가 부족함을 나타냅니다.

다음은 인스턴스 상태 로그의 오류 메시지 예시입니다.

# dump instance controller stdout
tail -n 100 /emr/instance-controller/log/instance-controller.out
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb46c7c8000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid16110.log

# whats memory usage look like
free -m
              total        used        free      shared  buff/cache   available
Mem:          15661       15346         147           0         167          69
Swap:             0           0           0

앞의 오류를 방지하려면 상위 인스턴스 유형으로 EMR 클러스터를 시작하여 클러스터 요구 사항에 맞게 더 많은 메모리를 활용하세요. 또한 장기 실행 클러스터에서 메모리 사용이 중단되지 않도록 디스크 공간을 정리하세요. 자세한 내용은 Amazon EMR에서 "502 잘못된 게이트웨이" 또는 "504 게이트웨이 시간 초과" 오류로 인한 프라이머리 노드 장애 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

KMS_ISSUE(USER_ERROR)

Amazon EMR 보안 구성을 사용하여 Amazon EBS 루트 디바이스 및 스토리지 볼륨을 암호화하는 경우 역할에 적절한 권한이 있어야 합니다. 필요한 권한이 없는 경우 KMS\ _ISSUE 오류가 발생합니다.

다음은 AWS CloudTrail의 오류 메시지 예시입니다.

The EMR Service Role must have the kms:GenerateDataKey* and kms:ReEncrypt* permission for the KMS key configuration when you enabled EBS encryption by default. You can retrieve that KMS key's ID by using the ec2:GetEbsDefaultKmsKeyId API.

위의 오류를 방지하려면 Amazon EBS 루트 디바이스 및 스토리지 볼륨을 암호화하는 데 사용되는 보안 구성에 필요한 권한이 있는지 확인하세요. 이러한 구성의 경우 Amazon EMR 서비스 역할(EMR\ _DefaultRole\ _V2)에 지정된 AWS Key Management Service(AWS KMS) 키를 사용할 권한이 있어야 합니다.

오류가 발생하여 종료됨. 프라이머리 노드가 사용자에 의해 종료됨

EMR 클러스터 프라이머리 노드가 어떤 이유로든 중지되면 클러스터는 프라이머리 노드가 사용자에 의해 종료됨이라는 오류가 발생하여 종료됩니다.

다음은 AWS CloudTrail의 오류 메시지 예시입니다.

eventTime": "2023-01-18T08:07:02Z",
    "eventSource": "ec2.amazonaws.com",
    "eventName": "StopInstances",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "52.xx.xx.xx",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "instancesSet": {
            "items": [
                {
                    "instanceId": "i-xxf6c5xxxxxxxxxxx"
                }
            ]
        },
        "force": false
},

EMR 프라이머리 노드 또는 모든 코어 노드를 중지하는 경우 클러스터가 종료되므로 클러스터 노드를 중지하거나 재부팅하지 마세요.


AWS 공식
AWS 공식업데이트됨 일 년 전