자동 종료 정책을 사용할 때 Amazon EMR 클러스터가 예상보다 일찍 종료되거나 종료되지 않는 문제를 해결하고 싶습니다.
간략한 설명
Amazon EMR 클러스터를 생성할 때 자동 종료 정책을 활성화할 수 있습니다. 자동 종료 정책은 특정 유휴 시간이 지나면 클러스터를 종료합니다.
Amazon EMR 버전 5.34~5.36 및 6.4.0 이상에서는 다음과 같은 상황에서 클러스터가 유휴 상태가 됩니다.
- YARN 애플리케이션이 활성화되지 않았습니다.
- HDFS 사용률이 10% 미만입니다.
- Amazon EMR 노트북 또는 EMR Studio 연결이 활성화되지 않았습니다.
- 클러스터 애플리케이션 사용자 인터페이스가 사용 중이지 않습니다.
Amazon EMR 버전 5.30.05.33.1 및 6.1.06.3.0에서는 다음과 같은 상황에서 클러스터가 유휴 상태가 됩니다.
- YARN 애플리케이션이 활성화되지 않았습니다.
- HDFS 사용률이 10% 미만입니다.
- Cluster Spark 작업이 활성화되지 않았습니다.
해결 방법
자동 종료 정책을 사용할 때 예상보다 일찍 종료되거나 종료되지 않는 Amazon EMR 클러스터를 해결하려면 다음 단계를 완료하십시오.
-
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 프로파일 역할 EMR_EC2_DefaultRole에 다음과 같은 권한이 있는지 확인합니다. 인스턴스 프로파일 역할에 다음 권한이 없는 경우 클러스터는 유휴 제한 시간이 지난 후에도 활성 상태를 유지합니다.
{
"Version": "2012-10-17",
"Statement": {
"Sid": "AllowAutoTerminationPolicyActions",
"Effect": "Allow",
"Action": [
"elasticmapreduce:PutAutoTerminationPolicy",
"elasticmapreduce:GetAutoTerminationPolicy",
"elasticmapreduce:RemoveAutoTerminationPolicy"
],
"Resource": "your-resources"
}
}
-
모든 Amazon EMR 버전에서 metrics-collector 프로세스가 실행 중인지 확인합니다. metrics-collector 프로세스는 지표를 수집하여 자동 종료를 결정합니다.
metrics-collector 프로세스를 확인하려면 다음 명령을 실행하십시오.
ps -ef|grep metrics-collector
-또는-
systemctl status metricscollector.service
자세한 내용은 Amazon EMR에서 서비스를 다시 시작하려면 어떻게 해야 합니까?를 참조하십시오.
-
Amazon EMR 클러스터의 CloudWatch 지표를 확인합니다. 클러스터에서 AutoTerminationClusterIdle CloudWatch 지표가 1로 표시되는지 확인합니다. 지표에 1이 표시되면 클러스터가 자동 종료 대상입니다. 지표에 0이 표시되면 클러스터가 활성 상태이며 자동 종료 대상이 아닙니다.
-
6.15.0 이전의 Amazon EMR 버전의 경우 EMR 클러스터의 기본 Java 버전을 오버로드했는지 확인하십시오. Amazon EMR에서 사용되는 기본 Java 버전을 재정의하면 자동 종료가 예상대로 작동하지 않습니다.
이 문제를 해결하려면 실행 중인 클러스터의 기본 인스턴스에서 또는 새 클러스터에서 부트스트랩 작업으로 다음 스크립트를 실행하십시오.
#Change EMR daemon startup scripts to use JDK8
sudo sed -i 's#$JAVA_HOME#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre#g' /usr/bin/logpusher
sudo sed -i 's#$JAVA_HOME#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre#g' /usr/bin/instance-controller
sudo sed -i 's#/usr/bin/java#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java#g' /usr/bin/metricscollector
#Restart the daemons
sudo systemctl restart instance-controller
sudo systemctl restart logpusher
sudo systemctl restart metricscollector.service