기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
계획 오버헤드를 최소화하세요.
Apache Spark의 주요 항목에서 설명한 것처럼 Spark 드라이버는 실행 계획을 생성합니다. 이 계획에 따라 작업은 분산 처리를 위해 Spark 실행기에 할당됩니다. 그러나 작은 파일이 많거나 파티션 수가 많은 경우 Spark 드라이버에 병목 현상이 발생할 수 있습니다. AWS Glue Data Catalog 높은 계획 오버헤드를 식별하려면 다음 지표를 평가하세요.
CloudWatch 지표
다음과 같은 상황에 대한 CPU로드 및 메모리 사용률을 확인하십시오.
-
Spark 드라이버 CPU부하 및 메모리 사용률은 높은 것으로 기록됩니다. 일반적으로 Spark 드라이버는 데이터를 처리하지 않으므로 CPU 로드 및 메모리 사용률이 급증하지 않습니다. 하지만 Amazon S3 데이터 원본에 작은 파일이 너무 많으면 모든 S3 객체를 나열하고 많은 작업을 관리하면 리소스 사용률이 높아질 수 있습니다.
-
Spark 실행기에서 처리가 시작되기까지 긴 공백이 있습니다. 다음 예제 스크린샷에서는 작업이 10:00에 시작되었음에도 불구하고 Spark 실행기의 CPU 부하가 10:57 까지 너무 낮습니다. AWS Glue 이는 Spark 드라이버가 실행 계획을 생성하는 데 시간이 오래 걸릴 수 있음을 나타냅니다. 이 예제에서는 데이터 카탈로그에서 많은 파티션을 검색하고 Spark 드라이버에 있는 많은 수의 작은 파일을 나열하는 데 시간이 오래 걸립니다.
Spark UI
Spark UI의 Job 탭에서 제출 시간을 확인할 수 있습니다. 다음 예제에서 Spark 드라이버는 작업이 10:00:00 에 시작되었음에도 불구하고 10:56:46 에 job0을 시작했습니다. AWS Glue
또한 Job 탭에서 태스크 (모든 단계): 성공/총 시간을 확인할 수 있습니다. 이 경우 작업 수는 다음과 같이 기록됩니다. 58100
작업 병렬화 페이지의 Amazon S3 섹션에 설명된 대로 작업 수는 대략 S3 객체 수와 일치합니다. 즉, Amazon S3에는 약 58,100개의 객체가 있습니다.
이 작업과 일정에 대한 자세한 내용은 스테이지 탭을 참조하십시오. Spark 드라이버에서 병목 현상이 발생하는 경우 다음 해결 방법을 고려해 보십시오.
-
Amazon S3에 파일이 너무 많으면 병렬화 작업 페이지의 너무 많은 파티션 섹션에서 과도한 병렬화에 대한 지침을 고려하십시오.
-
Amazon S3에 파티션이 너무 많으면 데이터 스캔량 줄이기 페이지의 너무 많은 Amazon S3 파티션 섹션에 있는 과도한 파티셔닝에 대한 지침을 고려하십시오. 파티션이 많은 경우 AWS Glue 파티션 인덱스를 활성화하여 데이터 카탈로그에서 파티션 메타데이터를 검색하는 데 걸리는 지연 시간을 줄이십시오. 자세한 내용은 AWS Glue 파티션 인덱스를 사용한 쿼리 성능 개선을
참조하십시오. -
JDBC파티션이 너무 많으면
hashpartition
값을 낮추세요. -
DynamoDB에 파티션이 너무 많으면 값을 낮추십시오.
dynamodb.splits
-
스트리밍 작업에 파티션이 너무 많으면 샤드 수를 줄이십시오.