계획 오버헤드를 최소화하세요. -

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

계획 오버헤드를 최소화하세요.

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 드라이버에서 병목 현상이 발생하는 경우 다음 해결 방법을 고려해 보십시오.