AWS Glue에 Auto Scaling 사용 - AWS Glue

AWS Glue에 Auto Scaling 사용

AWS Glue 버전 3.0 이상에서 AWS Glue ETL 및 스트리밍 작업에 Auto Scaling을 사용할 수 있습니다.

Auto Scaling을 사용하면 다음과 같은 이점을 얻을 수 있습니다.

  • AWS Glue는 각 스테이지의 병렬 처리나 작업 실행의 마이크로 배치에 따라 클러스터의 작업자를 자동으로 추가하고 제거합니다.

  • AWS Glue ETL 작업에 대해 할당할 작업자 수를 실험하고 결정할 필요가 없어집니다.

  • 최대 작업자 수를 선택하면 AWS Glue에서 워크로드에 적합한 크기의 리소스를 선택합니다.

  • AWS Glue Studio의 작업 실행 세부 정보 페이지에서 CloudWatch 지표를 살펴보면 클러스터 크기가 작업 실행 중에 어떻게 변경되는지 확인할 수 있습니다.

AWS Glue ETL 및 스트리밍 작업에 Auto Scaling을 사용하면 AWS Glue 작업의 컴퓨팅 리소스를 온디맨드로 확장 및 축소할 수 있습니다. 온디맨드 확장은 처음에 작업 실행 시작 시 필요한 컴퓨팅 리소스만 할당하고 작업 중 수요에 따라 필요한 리소스를 프로비저닝하는 데 도움이 됩니다.

Auto Scaling은 작업 중 AWS Glue 작업 리소스의 동적 축소도 지원합니다. 작업 실행 중 Spark 애플리케이션에서 더 많은 실행기를 요청하면 클러스터에 더 많은 작업자가 추가됩니다. 실행기가 활성 계산 태스크 없이 유휴 상태인 경우 실행자와 해당 작업자가 제거됩니다.

Auto Scaling이 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.025X 작업자 유형을 포함하는 AWS Glue 작업에서 사용 가능합니다. 표준 DPU는 지원되지 않습니다.

AWS Glue Studio에서 Auto Scaling 사용

AWS Glue Studio의 작업 세부 정보(Job details) 탭에서 유형을 Spark 또는 Spark Streaming으로, Glue 버전(Glue version)Glue 3.0으로 선택합니다. 그러면 작업자 유형(Worker type) 아래에 확인란이 표시됩니다.

  • 작업자 수 자동 크기 조정(Automatically scale the number of workers) 옵션을 선택합니다.

  • 최대 작업자 수(Maximum number of workers)를 설정하여 작업 실행에 판매할 수 있는 최대 작업자 수를 정의합니다.


            AWS Glue Studio에서 Auto Scaling 사용 및 구성.

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는 Auto Scaling이 사용 설정된 AWS Glue 3.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으로 작업 실행을 구성할 수도 있습니다.

Amazon CloudWatch 지표로 Auto Scaling 모니터링

CloudWatch 실행기 지표는 Auto Scaling을 사용하는 경우 AWS Glue 3.0 작업에서 사용 가능합니다. 지표를 사용하여 Auto Scaling으로 사용 가능한 Spark 애플리케이션의 실행기 수요와 최적 사용량을 모니터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch 지표를 사용하여 AWS Glue 모니터링 섹션을 참조하세요.

  • glue.driver.ExecutorAllocationManager.executors.numberAllExecutors

  • glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors


            Amazon CloudWatch 지표로 Auto Scaling 모니터링.

이러한 지표에 대한 자세한 내용은 DPU 용량 계획 모니터링 섹션을 참조하세요.

Spark UI로 Auto Scaling 모니터링

Auto Scaling이 사용 가능한 경우 AWS Glue 작업의 수요에 따른 동적 확장 및 축소를 사용하여 추가 및 제거되는 실행기를 Glue Spark UI로 모니터링할 수도 있습니다. 자세한 정보는 AWS Glue 작업을 위한 Apache Spark 웹 UI 사용 설정을 참조하십시오.


            Spark UI로 Auto Scaling 모니터링.

Auto Scaling 작업 실행 DPU 사용량 모니터링

AWS Glue Studio 작업 실행 보기를 사용하여 Auto Scaling 작업의 DPU 사용량을 확인할 수 있습니다.

  1. AWS Glue Studio 탐색 창에서 모니터링(Monitoring)을 선택합니다. 모니터링 페이지가 표시됩니다.

  2. 아래로 스크롤하여 작업 실행 차트로 이동합니다.

  3. 원하는 작업 실행으로 이동하고 DPU 시간 열로 스크롤하여 특정 작업 실행의 사용량을 확인합니다.

제한 사항

AWS Glue 스트리밍 Auto Scaling은 현재 ForEachBatch 외부에서 생성된 정적 DataFrame과 스트리밍 DataFrame의 조인을 지원하지 않습니다. ForEachBatch 내부에서 생성된 정적 DataFrame은 예상대로 작동합니다.