Amazon EMR에서 영구 애플리케이션 사용자 인터페이스 보기
Amazon EMR 버전 5.25.0부터 콘솔의 클러스터 요약 페이지 또는 애플리케이션 사용자 인터페이스 탭을 사용하여 클러스터 외부에 호스팅된 영구 Spark 기록 서버 애플리케이션 세부 정보에 연결할 수 있습니다. Tez UI 및 YARN 타임라인 서버 영구 애플리케이션 인터페이스는 Amazon EMR 버전 5.30.1부터 사용할 수 있습니다. 영구 애플리케이션 이력에 대한 원클릭 링크 액세스는 다음과 같은 이점을 제공합니다.
-
SSH 연결을 통해 웹 프록시를 설정하지 않고도 활성 작업 및 작업 기록을 신속하게 분석하고 문제를 해결할 수 있습니다.
-
활성 클러스터와 종료된 클러스터에 대한 애플리케이션 이력 및 관련 로그 파일에 액세스할 수 있습니다. 로그는 애플리케이션이 종료된 후 30일 동안 사용할 수 있습니다.
콘솔의 클러스터 세부 정보로 이동한 다음 애플리케이션 탭을 선택합니다. 클러스터가 시작되고 나면 원하는 애플리케이션 UI를 선택합니다. 애플리케이션 UI가 새 브라우저 탭에서 열립니다. 자세한 내용은 Monitoring and instrumentation
Spark 기록 서버, YARN 타임라인 서버 및 Tez UI의 링크를 통해 YARN 컨테이너 로그를 확인할 있습니다.
참고
Spark 기록 서버, YARN 타임라인 서버 및 Tez UI에서 YARN 컨테이너 로그에 액세스하려면 클러스터에서 Amazon S3에 대한 로깅을 활성화해야 합니다. 로깅을 활성화하지 않으면 YARN 컨테이너 로그에 대한 링크가 작동하지 않습니다.
로그 수집
영구 애플리케이션 사용자 인터페이스에 대한 원클릭 액세스를 활성화하기 위해 Amazon EMR은 다음 두 가지 유형의 로그를 수집합니다.
-
애플리케이션 이벤트 로그는 EMR 시스템 버킷으로 수집됩니다. 저장된 이벤트 로그는 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 사용해 암호화됩니다. 클러스터에 대해 프라이빗 서브넷을 사용하는 경우 프라이빗 서브넷에 대한 Amazon S3 정책의 리소스 목록에 올바른 시스템 버킷 ARN을 포함해야 합니다. 자세한 내용은 프라이빗 서브넷에 대한 최소 Amazon S3 정책을 참조하세요.
-
YARS 컨테이너 로그는 사용자가 소유한 Amazon S3 버킷으로 수집됩니다. YARS 컨테이너 로그에 액세스하려면 클러스터에 대한 로깅을 활성화해야 합니다. 자세한 내용은 클러스터 로깅 및 디버깅 구성을 참조하세요.
개인적인 이유로 로그 수집 기능을 비활성화해야 한다면 클러스터를 생성할 때 다음 예제와 같이 부트스트랩 스크립트를 사용해 데몬을 중지할 수 있습니다.
aws emr create-cluster --name "Stop Application UI Support" --release-label emr-7.3.0 \ --applications Name=Hadoop Name=Spark --ec2-attributes KeyName=
<myEMRKeyPairName>
\ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=TASK,InstanceCount=1,InstanceType=m3.xlarge \ --use-default-roles --bootstrap-actions Path=s3://region
.elasticmapreduce/bootstrap-actions/run-if,Args=["instance.isMaster=true","echo Stop Application UI | sudo tee /etc/apppusher/run-apppusher; sudo systemctl stop apppusher || exit 0"]
이 부트스트랩 스크립트를 실행하면 Amazon EMR이 Spark 기록 서버 또는 YARN 타임라인 서버 이벤트 로그를 EMR 시스템 버킷으로 수집하지 않습니다. 따라서 Application user interfaces(애플리케이션 사용자 인터페이스) 탭에서 애플리케이션 이력 정보를 확인할 수 없으며 콘솔에서 모든 애플리케이션 사용자 인터페이스에 액세스할 수 없습니다.
대형 Spark 이벤트 로그 파일
경우에 따라 Spark 스트리밍과 같이 장기 실행 Spark 작업 및 Spark SQL 쿼리와 같은 대형 작업은 큰 이벤트 로그를 생성할 수 있습니다. 이벤트 로그가 크면 컴퓨팅 인스턴스의 디스크 공간이 빠르게 소진되고 영구 UI를 로드할 때 OutOfMemory
오류가 발생할 수 있습니다. 이러한 문제를 방지하려면 Spark 이벤트 로그 롤링 및 압축 기능을 켜는 것이 좋습니다. 이 기능은 Amazon EMR 버전 emr-6.1.0 이상에서 사용할 수 있습니다. 롤링 및 압축에 대한 자세한 내용은 Spark 설명서에서 Applying compaction on rolling event log files
Spark 이벤트 로그 롤링 및 압축 기능을 활성화하려면 다음 Spark 구성 설정을 켭니다.
-
spark.eventLog.rolling.enabled
- 크기에 따른 이벤트 로그 롤링을 켭니다. 이 설정은 기본적으로 비활성화되어 있습니다. -
spark.eventLog.rolling.maxFileSize
- 롤링이 활성화된 경우 롤오버하기 전 이벤트 로그 파일의 최대 크기를 지정합니다. 기본값은 128MB입니다. -
spark.history.fs.eventLog.rolling.maxFilesToRetain
- 유지할 압축되지 않은 이벤트 로그 파일의 최대 수를 지정합니다. 기본적으로 모든 이벤트 로그 파일이 유지됩니다. 이전 이벤트 로그를 압축하려면 더 낮은 숫자로 설정합니다. 가장 낮은 값은 1입니다.
압축 시 다음과 같이 오래된 이벤트 로그 파일이 있는 이벤트를 제외하려고 합니다. 이벤트를 버리면 Spark 기록 서버 UI에 해당 이벤트가 더 이상 표시되지 않습니다.
-
완료된 작업에 대한 이벤트 및 관련 단계 또는 작업 이벤트.
-
종료된 실행기에 대한 이벤트.
-
완료된 SQL 쿼리에 대한 이벤트 및 관련 작업, 단계, 작업 이벤트.
롤링 및 압축이 활성화된 상태로 클러스터를 시작하는 방법
-
다음 구성을 사용하여
spark-configuration.json
파일을 생성합니다.[ { "Classification": "spark-defaults", "Properties": { "spark.eventLog.rolling.enabled": true, "spark.history.fs.eventLog.rolling.maxFilesToRetain": 1 } } ]
-
다음과 같이 Spark 롤링 압축 구성을 사용하여 클러스터를 생성합니다.
aws emr create-cluster \ --release-label emr-6.6.0 \ --instance-type m4.large \ --instance-count 2 \ --use-default-roles \ --configurations file://spark-configuration.json
고려 사항 및 제한
영구 애플리케이션 사용자 인터페이스에 대한 원클릭 액세스는 현재 다음과 같은 제한 사항이 있습니다.
-
Spark 기록 서버 UI에 애플리케이션 세부 정보가 표시될 때까지 최소 2분 정도 지연될 수 있습니다.
-
이 기능은 애플리케이션의 이벤트 로그 디렉터리가 HDFS에 있는 경우에만 작동합니다. 기본적으로 Amazon EMR은 HDFS의 디렉터리에 이벤트 로그를 저장합니다. 기본 디렉터리를 다른 파일 시스템(예: Amazon S3)으로 변경하면 이 기능이 작동하지 않습니다.
-
여러 개의 마스터 노드가 있는 EMR 클러스터 또는 AWS Lake Formation과 통합된 EMR 클러스터에는 현재 이 기능을 사용할 수 없습니다.
-
영구 애플리케이션 사용자 인터페이스에 대한 원클릭 액세스를 활성화하려면 Amazon EMR에 대한
DescribeCluster
작업의 권한이 있어야 합니다. 이러한 작업에 대한 IAM 보안 주체의 권한을 거부하면 권한 변경을 전파하는 데 약 5분 정도 걸립니다. -
실행 중인 클러스터에서 애플리케이션을 다시 구성하면 애플리케이션 UI를 통해서는 애플리케이션 이력을 사용할 수 없습니다.
-
각 AWS 계정에서 활성 애플리케이션 UI의 기본 한도는 200입니다.
-
다음 AWS 리전에서는 Amazon EMR 6.14.0 이상을 사용하여 콘솔에서 애플리케이션 UI에 액세스할 수 있습니다.
-
아시아 태평양(자카르타) (ap-southeast-3)
-
유럽(스페인)(eu-south-2)
-
아시아 태평양(멜버른)(ap-southeast-4)
-
이스라엘(텔아비브) (il-central-1)
-
중동(UAE)(me-central-1)
-
-
다음 AWS 리전에서는 Amazon EMR 5.25.0 이상을 사용하여 콘솔에서 애플리케이션 UI에 액세스할 수 있습니다.
미국 동부(버지니아 북부)(us-east-1)
미국 서부(오레곤)(us-west-2)
아시아 태평양(뭄바이)(ap-south-1)
아시아 태평양(서울)(ap-northeast-2)
아시아 태평양(싱가포르)(ap-southeast-1)
아시아 태평양(시드니)(ap-southeast-2)
아시아 태평양(도쿄)(ap-northeast-1)
캐나다(중부)(ca-central-1)
남아메리카(상파울루)(sa-east-1)
유럽(프랑크푸르트)(eu-central-1)
유럽(아일랜드)(eu-west-1)
유럽(런던) (eu-west-2)
유럽(파리) (eu-west-3)
유럽(스톡홀름) (eu-north-1)
중국(베이징) (cn-north-1)
중국(닝샤) (cn-northwest-1)