

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

# Spark 작업 성능 조정을 위한 전략
<a name="performance-tuning-strategies"></a>

파라미터를 조정할 준비를 할 때는 다음과 같은 모범 사례를 고려하세요.
+ 문제를 식별하기 전에 성능 목표를 결정합니다.
+ 조정 파라미터를 변경하기 전에 지표를 사용하여 문제를 식별합니다.

작업을 조정할 때 가장 일관된 결과를 얻으려면 조정 작업에 대한 기준선 전략을 수립하세요.

## 성능 조정을 위한 기준선 전략
<a name="baseline"></a>

일반적으로 성능 조정은 다음 워크플로우에서 수행됩니다.

1. 성능 목표를 결정합니다.

1. 지표를 측정합니다.

1. 병목 현상을 식별합니다.

1. 병목 현상이 미치는 영향을 줄입니다.

1. 의도한 목표를 달성할 때까지 2\~4단계를 반복합니다.

먼저 성능 목표를 결정합니다. 예를 들어 목표 중 하나는 3시간 이내에 AWS Glue 작업 실행을 완료하는 것일 수 있습니다. 목표를 정의한 후 작업 성능 지표를 측정합니다. 목표를 달성하기 위해 지표 및 병목 현상의 추세를 식별합니다. 특히 병목 현상 식별은 문제 해결, 디버깅 및 성능 조정에서 가장 중요합니다. Spark 애플리케이션을 실행하는 동안 Spark는 Spark 이벤트 로그에 각 태스크의 상태 및 통계를 기록합니다.

에서는 Spark 기록 서버에서 제공하는 [Spark 웹 UI](https://spark.apache.org/docs/latest/web-ui.html)를 통해 Spark 지표를 볼 AWS Glue수 있습니다. AWS Glue for Spark 작업은 [Spark 이벤트 로그](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-jobs.html)를 Amazon S3에서 지정한 위치로 전송할 수 있습니다. AWS Glue 또한 Amazon EC2 인스턴스 또는 로컬 컴퓨터에서 Spark 기록 서버를 시작하기 위한 예제 [AWS CloudFormation 템플릿](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html#monitor-spark-ui-history-cfn) 및 [Dockerfile](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html#monitor-spark-ui-history-local)을 제공하므로 이벤트 로그와 함께 Spark UI를 사용할 수 있습니다.

성능 목표를 결정하고 이러한 목표를 평가하기 위한 지표를 식별한 후에 다음 섹션의 전략을 사용하여 병목 현상을 식별하고 해결할 수 있습니다.

## Spark 작업 성능에 대한 조정 사례
<a name="tuning-practices"></a>

Spark 작업에 대한 성능 튜닝에 다음 전략을 사용할 수 AWS Glue 있습니다.
+ AWS Glue 리소스:
  + [클러스터 용량 규모 조정](scale-cluster-capacity.md)
  + [최신 AWS Glue 버전 사용](latest-version.md)
+ Spark 애플리케이션:
  + [데이터 스캔 양 감소](reduce-data-scan.md)
  + [태스크 병렬화](parallelize-tasks.md)
  + [셔플 최적화](optimize-shuffles.md)
  + [계획 오버헤드 최소화](minimize-planning-overhead.md)
  + [사용자 정의 함수 최적화](optimize-user-defined-functions.md)

이러한 전략을 사용하기 전에 Spark 작업에 대한 지표 및 구성에 액세스할 수 있어야 합니다. [AWS Glue 설명서](https://docs.aws.amazon.com/glue/latest/dg/etl-jobs-section.html)에서 이 정보를 확인할 수 있습니다.

 AWS Glue 리소스 관점에서 AWS Glue 작업자를 추가하고 최신 AWS Glue 버전을 사용하여 성능을 개선할 수 있습니다.

Apache Spark 애플리케이션 관점에서 성능을 개선할 수 있는 여러 전략에 액세스할 수 있습니다. 불필요한 데이터가 Spark 클러스터에 로드되는 경우 이를 제거하여 로드된 데이터의 양을 줄일 수 있습니다. Spark 클러스터 리소스를 적게 사용하고 데이터 I/O가 적은 경우 병렬화할 태스크를 식별할 수 있습니다. 또한 상당한 시간이 걸리는 경우 조인과 같은 과중한 데이터 전송 작업을 최적화할 수 있습니다. 작업 쿼리 계획을 최적화하거나 개별 Spark 태스크의 계산 복잡성을 줄일 수도 있습니다.

이러한 전략을 효율적으로 적용하려면 지표를 참조하여 적용 가능한 시기를 식별해야 합니다. 자세한 내용은 다음의 각 섹션을 참조하세요. 이러한 기법은 성능 조정뿐만 아니라 메모리 부족(OOM) 오류와 같은 일반적인 문제를 해결하는 데도 효과적입니다.