Amazon EMR 클러스터가 ‘애플리케이션 프로비저닝 실패’ 오류와 함께 종료된 이유는 무엇인가요?

6분 분량
0

Amazon EMR 클러스터가 ‘애플리케이션 프로비저닝 실패’ 오류와 함께 종료되었습니다. 이 오류는 무엇을 의미하며, 해결하려면 어떻게 해야 하나요?

해결 방법

Amazon EMR에서 EMR 클러스터를 시작할 때 지정된 소프트웨어를 설치, 구성 또는 시작할 수 없는 경우 ‘애플리케이션 프로비저닝 실패’ 오류가 표시될 수 있습니다. 다음 섹션에서는 프로비전 로그를 찾고 검토하는 방법을 보여줍니다. 또한 다양한 유형의 오류와 이러한 오류를 해결하기 위해 취할 수 있는 단계를 보여줍니다.

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

Amazon EMR 프로비저닝 로그는 클러스터 시작 시 지정된 Amazon Simple Storage Service(S3) 버킷에 저장됩니다. 로그의 스토리지 위치는 다음 Amazon S3 URI 구문을 사용합니다.

s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/puppet.log.gz

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

  1. Amazon EMR 콘솔을 엽니다. 탐색 창에서 클러스터를 선택합니다. 그런 다음 실패가 발생한 EMR 클러스터를 선택하여 클러스터 세부 정보를 확인합니다.
  2. 요약 섹션에서 ‘오류가 발생하여 종료됨’을 선택하고 오류 메시지에 포함된 프라이머리 노드 ID를 기록해 둡니다.
  3. 클러스터 로그 섹션에서 Amazon S3 콘솔의 클러스터 로그로 리디렉션할 Amazon S3 위치 URL을 선택합니다.
  4. 다음 경로 **node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/**를 통해 UUID 폴더로 이동합니다.
    참고: example-primary-node-IDexample-UUID를 시스템 이름으로 바꾸세요.
  5. 결과 목록에서 puppet.log.gz를 선택하고 열기를 선택하여 새 브라우저 탭에서 프로비저닝을 확인합니다.

프로비저닝 로그의 실패 원인 파악

지원되지 않는 구성 파라미터는 오류를 일으킬 수 있습니다. 잘못된 호스트 이름, 잘못된 암호 또는 일반적인 운영 체제 문제로 인해 오류가 발생할 수도 있습니다. ‘오류’ 또는 ‘실패’를 비롯한 관련 키워드에 대해 로그를 검색합니다.

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

  • Amazon Relational Database Service(RDS) 인스턴스로 외부 메타스토어 연결하는 데 발생하는 문제
  • 외부 키 분산 센터(KDC) 연결 문제
  • YARN ResourceManager 및 Hadoop NameNode와 같은 서비스를 시작할 때 발생하는 문제
  • 애플리케이션 다운로드 또는 설치 시 발생하는 문제
  • S3 로그를 사용할 수 없음

Amazon RDS 인스턴스로 외부 메타스토어에 연결하는 데 발생하는 문제

Hive, Hue 또는 Oozie와 같은 일부 Amazon EMR 애플리케이션은 Amazon RDS와 같은 외부 데이터베이스에 데이터를 저장하도록 구성할 수 있습니다. 연결에 문제가 있는 경우 메시지가 표시됩니다.

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

2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): Underlying cause: java.sql.SQLNonTransientConnectionException : Could not connect to address=(host=hostname)(port=3306)(type=master) : Socket fail to connect to host:hostname, port:3306. hostname
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): SQL Error code: -1

이 유형의 오류를 해결하는 방법

  • RDS 인스턴스 호스트 이름, 사용자, 암호 및 데이터베이스가 올바른지 확인합니다.
  • RDS 인스턴스 보안 그룹 인바운드 규칙이 Amazon EMR 프라이머리 노드 보안 그룹으로부터의 연결을 허용하는지 확인합니다.

외부 KDC 연결 문제

Amazon EMR을 사용하면 외부 KDC를 구성하여 추가 보안 계층을 추가할 수 있습니다. Active Directory 서버와 신뢰 관계를 만들 수도 있습니다. KDC에 연락하거나 도메인에 가입하는 데 문제가 있는 경우 메시지가 표시됩니다.

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

2022-11-26 03:02:01 +0000 Puppet (err): 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]
2022-11-26 03:02:01 +0000 /Stage[main]/Kerberos::Ad_joiner/Exec[realm_join]/returns (err): change from 'notrun' to ['0'] failed: 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]

이 유형의 오류를 해결하는 방법

  • Kerberos 영역의 철자가 올바른지 확인합니다.
  • KDC 관리자 암호의 철자가 올바른지 확인합니다.
  • Active Directory 가입 사용자 및 암호의 철자가 올바른지 확인합니다.
  • Active Directory 가입 사용자가 Active Directory에 존재하고 올바른 권한을 가지고 있는지 확인합니다.
  • KDC 및 Active Directory 서버가 Amazon EC2에 있는지 확인합니다. 그런 다음 KDC 및 Active Directory 보안 그룹 인바운드 규칙이 Amazon EMR 프라이머리 노드 보안 그룹으로부터의 연결을 허용하는지 확인합니다.
  • KDC 및 Active Directory가 Amazon EC2에 없는지 확인합니다. 그런 다음 KDC와 Active Directory가 EMR 클러스터 Virtual Private Cloud(VPC) 및 서브넷에서의 연결을 허용하는지 확인합니다.

YARN ResourceManager, Hadoop NameNode 또는 Spark History Server와 같은 서비스를 시작할 때 발생하는 문제

Amazon EMR을 사용하면 EMR 클러스터를 시작할 때 모든 애플리케이션을 사용자 지정할 수 있습니다. 그러나 이러한 구성으로 인해 서비스가 시작되지 않는 경우가 있습니다. 서비스 시작을 방해하는 문제가 발생하는 경우 메시지가 표시됩니다.

다음은 Spark History Server의 오류 메시지 예시입니다.

2022-11-26 03:34:13 +0000 Puppet (err): Systemd start for spark-history-server failed!
journalctl log for spark-history-server:
-- Logs begin at Sat 2022-11-26 03:27:57 UTC, end at Sat 2022-11-26 03:34:13 UTC. --
Nov 26 03:34:10 ip-192-168-1-32 systemd[1]: Starting Spark history-server...
Nov 26 03:34:10 ip-192-168-1-32 spark-history-server[1076]: Starting Spark history-server (spark-history-server):[OK]
Nov 26 03:34:10 ip-192-168-1-32 su[1112]: (to spark) root on none
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service: control process exited, code=exited status=1
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Failed to start Spark history-server.
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Unit spark-history-server.service entered failed state.
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service failed.
2022-11-26 03:34:13 +0000 /Stage[main]/Spark::History_server/Service[spark-history-server]/ensure (err): change from 'stopped' to 'running' failed: Systemd start for spark-history-server failed!
journalctl log for spark-history-server:

이 유형의 오류를 해결하는 방법

  • 시작에 실패한 서비스를 확인합니다. 제공된 구성의 철자가 올바른지 확인합니다.
  • 다음 경로 s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/applications/example-failed-application/example-failed-service.gz로 이동하여 S3 로그를 확인하여 실패 원인을 조사할 수 있습니다.
    참고: example-log-location, example-cluster-ID, example-primary-node-ID, example-failed-applicationexample-failed-service를 시스템 이름으로 바꾸세요.

애플리케이션 다운로드 또는 설치 시 발생하는 문제

Amazon EMR은 많은 애플리케이션을 설치할 수 있습니다. 그러나 때로는 하나의 애플리케이션을 다운로드하거나 설치할 수 없는 경우 문제가 발생합니다. 이로 인해 EMR 클러스터에 실패가 발생할 수 있습니다. 이 실패가 발생하면 프로비저닝 로그가 완료되지 않습니다. 대신 stderr.gz 로그를 검토하여 yum 설치 실패로 인해 발생한 유사한 메시지를 찾아야 합니다.

다음은 stderr.gz의 오류 메시지 예시입니다.

stderr.gz
Error Summary
-------------
Disk Requirements:
  At least 2176MB more space needed on the / filesystem.
  
2022-11-26 03:18:44,662 ERROR Program: Encountered a problem while provisioning
java.lang.RuntimeException: Amazon-linux-extras topics enabling or yum packages installation failed.

이러한 유형의 오류를 해결하려면 EMR 클러스터를 시작하는 동안 루트 Amazon Elastic Block Store(Amazon EBS) 볼륨을 늘리세요.

S3 로그를 사용할 수 없음

Amazon EMR이 애플리케이션을 프로비저닝하지 못하며 Amazon S3에 생성된 로그가 없습니다. 이 시나리오에서는 네트워크 오류로 인해 S3 로깅이 실패했을 수 있습니다.

이 유형의 오류를 해결하는 방법

  • EMR 클러스터를 시작하는 동안 로깅 옵션이 켜져 있는지 확인합니다. 자세한 내용은 클러스터 로깅 및 디버깅 구성을 참조하세요.
  • 사용자 지정 AMI을 사용하는 경우 필수 Amazon EMR 네트워크 설정을 방해하는 방화벽 규칙이 없는지 확인합니다. 자세한 내용은 Amazon EMR 관리형 보안 그룹 사용을 참조하세요.
  • 사용자 지정 AMI를 사용하는 경우 실패한 프라이머리 노드가 있는지 확인합니다. Amazon EMR 콘솔을 열고 탐색 창에서 하드웨어를 선택하여 클러스터에서 프라이머리 노드를 실행할 수 없는지 확인합니다.
  • 사용자 지정 AMI를 사용하는 경우 모범 사례를 따르고 있는지 확인합니다. 자세한 내용은 사용자 지정 AMI 사용을 참조하세요.

관련 정보

EMR 클러스터를 프로비저닝하지 못함

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