이 문서에서는 Dataproc Spark 성능 향상을 사용 설정하여 Dataproc Spark 작업의 데이터 처리량을 늘리면서 시간과 비용을 절감하는 방법을 보여줍니다.
Dataproc Spark 성능 향상에는 다음이 포함됩니다.
- Spark 최적화 도구 개선사항:
- Spark 계획을 개선하기 위해 작성된 최적화 도구 규칙
- Spark 작업에 사용될 때 Dataproc BigQuery 커넥터의 성능 향상
- Spark 실행 개선사항:
- Spark 실행 엔진 개선
기타 Dataproc 성능 향상: Cloud Storage의 데이터에 액세스하는 데 걸리는 시간을 줄이는 데 도움이 되는 Dataproc 클러스터 캐싱을 참조하세요.
클러스터 또는 Spark 작업에서 Spark 성능 향상을 사용 설정할 수 있습니다.
클러스터에 사용 설정된 Spark 성능 향상은 Dataproc 서비스에 제출되었거나 클러스터에 직접 제출되었는지 여부에 관계없이 기본적으로 클러스터에서 실행되는 모든 Spark 작업에 적용됩니다.
Spark 성능 향상은 또한 Dataproc 서비스에 제출되는 작업에서 사용 설정하거나 사용 중지할 수 있습니다. 작업에 적용된 Spark 성능 향상 설정은 지정된 작업에 대해서만 클러스터 수준에서 모든 충돌하는 설정을 재정의합니다.
가격 책정
Spark 성능 향상은 추가 요금이 발생하지 않습니다. 표준 Compute Engine 기반 Dataproc 가격 책정이 적용됩니다.
고려사항
Spark 성능 향상은 다음 속성을 비롯하여 Spark 속성을 조정합니다.
spark.sql.shuffle.partitions
: Spark 성능 향상은2.2
이미지 버전 클러스터에 대해 이 속성을1000
으로 설정합니다. 이 설정은 작은 작업을 느리게 만들 수 있습니다.spark.dataproc.sql.catalog.file.index.stats.enabled
: 이 설정은 Hive 파티션 수가 높은 경우 드라이버에서 OOM(메모리 부족) 조건을 일으킬 수 있습니다. 이 속성을 사용 중지하면 OOM 조건이 해결될 수 있습니다.
클러스터 생성 시 개선사항 사용 설정
이미지 버전이 2.0.69+, 2.1.17+, 2.2.0+ 이상인 이미지 출시 버전으로 Dataproc 클러스터를 만들 때 Google Cloud 콘솔, Google Cloud CLI, Dataproc API를 사용하여 Dataproc Spark 성능 향상을 사용 설정할 수 있습니다.
콘솔
- Google Cloud 콘솔에서 Dataproc 클러스터 만들기 페이지를 엽니다.
- Dataproc 클러스터 만들기 양식의 Compute Engine의 클러스터 줄에서 만들기를 클릭합니다.
- Compute Engine에서 Dataproc 클러스터 만들기 페이지에서 클러스터 맞춤설정 패널을 클릭한 후 클러스터 속성 섹션으로 스크롤합니다.
- Spark 최적화 개선사항을 사용 설정하려면 다음 안내를 따르세요.
- + 속성 추가를 클릭합니다.
- 프리픽스 목록에서 spark를 선택하고 키 필드에 'spark.dataproc.enhanced.optimizer.enabled'를, 값 필드에 'true'를 추가합니다.
- Spark 실행 개선사항을 사용 설정하려면 다음 안내를 따르세요.
- + 속성 추가를 클릭합니다.
- 프리픽스 목록에서 spark를 선택하고 키 필드에 'spark.dataproc.enhanced.execution.enabled'를, 값 필드에 'true'를 추가합니다.
- Spark 최적화 개선사항을 사용 설정하려면 다음 안내를 따르세요.
- 다른 클러스터 만들기 필드를 채우거나 확인한 후 만들기를 클릭합니다.
gcloud
다음 gcloud dataproc clusters create 명령어를 터미널 창에서 로컬로 실행하거나 Cloud Shell에서 실행합니다.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --image-version=IMAGE \ --properties=PROPERTIES
참고:
- CLUSTER_NAME: 프로젝트 내에서 고유해야 하는 클러스터 이름입니다. 이름은 소문자로 시작해야 하며, 최대 51자(영문 기준)의 소문자, 숫자, 하이픈을 포함할 수 있습니다. 하이픈으로 끝나면 안 됩니다. 삭제된 클러스터의 이름을 재사용할 수 있습니다.
- PROJECT_ID: 클러스터와 연결할 프로젝트입니다.
- REGION: 클러스터가 있는 Compute Engine 리전(예:
us-central1
)입니다.- 선택사항인
--zone=ZONE
플래그를 추가하여us-central1-a
와 같이 지정된 리전 내의 영역을 지정할 수 있습니다. 영역을 지정하지 않으면 Dataproc 자동 영역 배치 기능에서 지정된 리전이 있는 영역을 선택합니다.
- 선택사항인
- IMAGE: Dataproc Spark 최적화 도구 및 실행 성능 향상은 Dataproc 이미지 버전
2.0.69+
,2.1.17+
및 이후 출시 버전에서 사용할 수 있습니다. 이 플래그를 생략하면 Dataproc이 클러스터 Compute Engine 이미지에 있는 기본 Dataproc의 최신 하위 부 버전을 선택합니다(기본 Dataproc 이미지 버전 참조). PROPERTIES:
- Spark 최적화 개선사항을 사용 설정하려면 다음을 지정합니다.
spark:spark.dataproc.enhanced.optimizer.enabled=true
- Spark 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
spark:spark.dataproc.enhanced.execution.enabled=true
- Spark 최적화 및 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
clusters.create
요청의 일부로 다음SoftwareConfig.properties
를 지정합니다.- Spark 최적화 개선사항을 사용 설정하려면 다음을 지정합니다.
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"
- Spark 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
"spark:spark.dataproc.enhanced.execution.enabled": "true"
- Spark 최적화 및 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
"spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
작업 제출 시 향상 사용 설정 또는 중지
Google Cloud 콘솔, Google Cloud CLI, Dataproc API를 사용하여 Dataproc 서비스에 제출된 Spark 작업에서 Spark 성능 향상을 사용 설정 또는 사용 중지할 수 있습니다.
콘솔
- Google Cloud 콘솔에서 Dataproc 작업 페이지를 엽니다.
- 작업 페이지에서 작업 제출을 클릭한 다음 작업 속성 섹션으로 스크롤합니다.
- Spark 최적화 개선사항을 사용 설정하려면 다음 안내를 따르세요.
- + 속성 추가를 클릭합니다. 키 필드에 'spark.dataproc.enhanced.optimizer.enabled'를, 값 필드에 'true'를 추가합니다.
- Spark 실행 개선사항을 사용 설정하려면 다음 안내를 따르세요.
- + 속성 추가를 클릭합니다.
- 키 필드에 'spark.dataproc.enhanced.execution.enabled'를, 값 필드에 'true'를 추가합니다.
- Spark 최적화 개선사항을 사용 설정하려면 다음 안내를 따르세요.
- 다른 작업 제출 필드를 채우거나 확인한 후 제출을 클릭합니다.
gcloud
다음 gcloud dataproc jobs submit 명령어를 터미널 창에서 로컬로 실행하거나 Cloud Shell에서 실행합니다.
gcloud dataproc jobs submit SPARK_JOB_TYPE \ --cluster=CLUSTER_NAME \ --region=REGION \ --properties=PROPERTIES
참고:
- SPARK_JOB_TYPE:
spark
,pyspark
,spark-sql
또는spark-r
을 지정합니다. - CLUSTER_NAME: 작업이 실행될 작업의 이름입니다.
- REGION: 클러스터가 있는 리전입니다.
PROPERTIES:
- Spark 최적화 개선사항을 사용 설정하려면 다음을 지정합니다.
spark.dataproc.enhanced.optimizer.enabled=true
- Spark 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
spark.dataproc.enhanced.execution.enabled=true
- Spark 최적화 및 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE:
API
jobs.submit
요청의 일부로 SparkJob, PySparkJob, SparkSqlJob 또는 SparkRJob에 다음properties
를 지정합니다.- Spark 최적화 개선사항을 사용 설정하려면 다음을 지정합니다.
"spark.dataproc.enhanced.optimizer.enabled=true"
- Spark 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
"spark.dataproc.enhanced.execution.enabled=true"
- Spark 최적화 및 실행 개선사항을 사용 설정하려면 다음을 지정합니다.
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"