AWS Glue에 Auto Scaling 사용
AWS Glue ETL, 대화형 세션 및 스트리밍 작업에 오토 스케일링을 AWS Glue 버전 3.0 이상에서 사용할 수 있습니다.
Auto Scaling을 사용하면 다음과 같은 이점을 얻을 수 있습니다.
-
AWS Glue는 각 스테이지의 병렬 처리나 작업 실행의 마이크로 배치에 따라 클러스터의 작업자를 자동으로 추가하고 제거합니다.
-
AWS Glue ETL 작업에 대해 할당할 작업자 수를 실험하고 결정할 필요가 줄어듭니다.
-
최대 작업자 수를 선택하면 AWS Glue에서 워크로드에 적합한 크기의 리소스를 선택합니다.
-
AWS Glue Studio의 작업 실행 세부 정보 페이지에서 CloudWatch 지표를 살펴보면 클러스터 크기가 작업 실행 중에 어떻게 변경되는지 확인할 수 있습니다.
AWS Glue ETL 및 스트리밍 작업에 오토 스케일링을 사용하면 AWS Glue 작업의 컴퓨팅 리소스를 온디맨드로 스케일 아웃 및 스케일 인할 수 있습니다. 온디맨드 확장은 처음에 작업 실행 시작 시 필요한 컴퓨팅 리소스만 할당하고 작업 중 수요에 따라 필요한 리소스를 프로비저닝하는 데 도움이 됩니다.
오토 스케일링은 작업 중 AWS Glue 작업 리소스의 동적 스케일 인도 지원합니다. 작업 실행 중 Spark 애플리케이션에서 더 많은 실행기를 요청하면 클러스터에 더 많은 작업자가 추가됩니다. 실행기가 활성 계산 태스크 없이 유휴 상태인 경우 실행자와 해당 작업자가 제거됩니다.
오토 스케일링이 Spark 애플리케이션의 비용 및 사용률에 도움이 되는 일반적인 시나리오는 다음과 같습니다.
-
Amazon S3에서 많은 수의 파일을 나열하거나 실행기가 비활성 상태일 때 로드를 수행하는 Spark 드라이버
-
과도한 프로비저닝으로 인해 소수의 실행기로만 실행되는 Spark 단계
-
Spark 단계에서 데이터 스큐 또는 균일하지 않은 계산 수요
요구 사항
Auto Scaling은 AWS Glue 버전 3.0 이상에서만 사용 가능합니다. Auto Scaling을 사용하려면 마이그레이션 가이드에 따라 기존 작업을 AWS Glue 버전 3.0 이상으로 마이그레이션하거나 AWS Glue 버전 3.0 이상에서 새 작업을 생성합니다.
Auto Scaling은 G.1X
, G.2X
, G.4X
, G.8X
또는 G.025X
(스트리밍 작업만 해당) 작업자 유형을 포함하는 AWS Glue 작업에서 사용 가능합니다. 표준 DPU는 지원되지 않습니다.
AWS Glue Studio에서 Auto Scaling 사용
AWS Glue Studio의 작업 세부 정보 탭에서 유형을 Spark 또는 Spark 스트리밍으로, Glue 버전을 Glue 3.0
이상으로 선택합니다. 그러면 작업자 유형 아래에 확인란이 표시됩니다.
-
작업자 수 자동 크기 조정(Automatically scale the number of workers) 옵션을 선택합니다.
-
최대 작업자 수(Maximum number of workers)를 설정하여 작업 실행에 판매할 수 있는 최대 작업자 수를 정의합니다.
AWS CLI 또는 SDK를 사용하여 Auto Scaling 사용 설정
AWS CLI에서 Auto Scaling을 사용 설정하여 작업을 실행하려면, 다음 구성으로 start-job-run
을 실행합니다.
{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X and G.2X are allowed for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }
ETL 작업 실행이 완료되면 get-job-run
을 호출하여 DPU 초 단위로 작업 실행의 실제 리소스 사용량을 확인할 수도 있습니다. 참고: 새 필드 DPUSeconds는 오토 스케일링이 활성화된 AWS Glue 4.0 이상의 배치 작업에만 표시됩니다. 이 필드는 스트리밍 작업에는 지원되지 않습니다.
$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }
동일한 구성의 AWS Glue SDK를 사용하여 Auto Scaling으로 작업 실행을 구성할 수도 있습니다.
대화형 세션을 사용하여 Auto Scaling 활성화
대화형 세션으로 AWS Glue 작업을 빌드할 때 Auto Scaling을 활성화하려면 AWS Glue 대화형 세션 구성을 참조하세요.
팁 및 고려 사항
AWS Glue 오토 스케일링 미세 조정을 위한 팁 및 고려 사항:
-
최대 작업자 수의 초기 값에 대한 아이디어가 없는 경우 예상 AWS Glue DPU에 설명된 대략적인 계산부터 시작할 수 있습니다. 볼륨이 매우 적은 데이터의 경우 최대 작업자 수로 너무 큰 값을 구성해서는 안 됩니다.
-
AWS Glue 오토 스케일링은 작업에 구성된 최대 DPU 수(최대 작업자 수 및 작업자 유형으로 계산됨)를 기반으로
spark.sql.shuffle.partitions
및spark.default.parallelism
을 구성합니다. 이러한 구성에서 고정 값을 선호하는 경우 다음 작업 파라미터로 이러한 파라미터를 덮어쓸 수 있습니다.-
키:
--conf
-
값:
spark.sql.shuffle.partitions=200 --conf spark.default.parallelism=200
-
-
스트리밍 작업의 경우 기본적으로 AWS Glue는 마이크로 배치 내에서 오토 스케일링을 수행하지 않으며 오트 스케일링을 시작하려면 여러 마이크로 배치가 필요합니다. 마이크로 배치 내에서 자동 오토 스케일링을 활성화하려면
--auto-scale-within-microbatch
를 제공합니다. 자세한 내용은 작업 파라미터 참조를 참조하세요.
Amazon CloudWatch 지표로 Auto Scaling 모니터링
CloudWatch 실행기 지표는 Auto Scaling을 사용하는 경우 AWS Glue 3.0 이상 작업에서 사용 가능합니다. 지표를 사용하여 Auto Scaling으로 사용 가능한 Spark 애플리케이션의 실행기 수요와 최적 사용량을 모니터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch 지표를 사용하여 AWS Glue 모니터링 단원을 참조하십시오.
또한 AWS Glue 관찰성 지표를 활용하여 리소스 사용률에 대한 인사이트를 얻을 수 있습니다. 예를 들어 glue.driver.workerUtilization
을 모니터링하여 오토 스케일링을 사용하거나 사용하지 않고 실제로 사용된 리소스의 양을 모니터링할 수 있습니다. 또 다른 예로 glue.driver.skewness.job
및 glue.driver.skewness.stage
를 모니터링하여 데이터 스큐 상태를 확인할 수 있습니다. 이러한 인사이트는 오토 스케일링을 활성화하고 구성을 미세 조정하는 데 도움이 됩니다. 자세한 내용은 AWS Glue 관찰성 메트릭을 사용한 모니터링를 사용하여 모니터링을 참조하세요.
-
glue.driver.ExecutorAllocationManager.executors.numberAllExecutors
-
glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors
이러한 지표에 대한 자세한 내용은 DPU 용량 계획 모니터링 섹션을 참조하세요.
참고
CloudWatch 실행자 지표는 대화형 세션에 사용할 수 없습니다.
Amazon CloudWatch Logs를 사용하여 오토 스케일링 모니터링
대화형 세션을 사용하는 경우 연속 Amazon CloudWatch Logs를 활성화하고 로그에서 '실행자'를 검색하거나 Spark UI를 사용하여 실행자 수를 모니터링할 수 있습니다. 이렇게 하려면 %%configure
매직을 사용하여 enable auto scaling
을 통해 연속 로깅을 활성화합니다.
%%configure{ "--enable-continuous-cloudwatch-log": "true", "--enable-auto-scaling": "true" }
Amazon CloudWatch 로그 이벤트의 로그에서 '실행자'를 검색합니다.
Spark UI로 Auto Scaling 모니터링
Auto Scaling이 사용 가능한 경우 AWS Glue 작업의 수요에 따른 동적 확장 및 축소를 사용하여 추가 및 제거되는 실행기를 Glue Spark UI로 모니터링할 수도 있습니다. 자세한 내용은 AWS Glue 작업을 위한 Apache Spark 웹 UI 사용 설정 단원을 참조하십시오.
Jupyter Notebook의 대화형 세션을 사용하는 경우 다음 매직을 실행하여 Spark UI와 함께 오토 스케일링을 활성화할 수 있습니다.
%%configure{ "--enable-auto-scaling": "true", "--enable-continuous-cloudwatch-log": "true" }
Auto Scaling 작업 실행 DPU 사용량 모니터링
AWS Glue Studio 작업 실행 보기를 사용하여 Auto Scaling 작업의 DPU 사용량을 확인할 수 있습니다.
-
AWS Glue Studio 탐색 창에서 모니터링을 선택합니다. 모니터링 페이지가 표시됩니다.
-
아래로 스크롤하여 작업 실행 차트로 이동합니다.
-
원하는 작업 실행으로 이동하고 DPU 시간 열로 스크롤하여 특정 작업 실행의 사용량을 확인합니다.
제한 사항
AWS Glue 스트리밍 Auto Scaling은 현재 ForEachBatch
외부에서 생성된 정적 DataFrame과 스트리밍 DataFrame의 조인을 지원하지 않습니다. ForEachBatch
내부에서 생성된 정적 DataFrame은 예상대로 작동합니다.