Dataproc Spark 성능 향상

이 문서에서는 Dataproc Spark 성능 향상을 사용 설정하여 Dataproc Spark 작업의 데이터 처리량을 늘리면서 시간과 비용을 절감하는 방법을 보여줍니다.

Dataproc Spark 성능 향상에는 다음이 포함됩니다.

  • Spark 최적화 도구 개선사항:
    • Spark 계획을 개선하기 위해 작성된 최적화 도구 규칙
    • Spark 작업에 사용될 때 Dataproc BigQuery 커넥터의 성능 향상
  • Spark 실행 개선사항:
    • Spark 실행 엔진 개선

기타 Dataproc 성능 향상: Cloud Storage의 데이터에 액세스하는 데 걸리는 시간을 줄이는 데 도움이 되는 Dataproc 클러스터 캐싱을 참조하세요.

클러스터 또는 Spark 작업에서 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 성능 향상을 사용 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Dataproc 클러스터 만들기 페이지를 엽니다.
  2. Dataproc 클러스터 만들기 양식의 Compute Engine의 클러스터 줄에서 만들기를 클릭합니다.
  3. Compute Engine에서 Dataproc 클러스터 만들기 페이지에서 클러스터 맞춤설정 패널을 클릭한 후 클러스터 속성 섹션으로 스크롤합니다.
    1. Spark 최적화 개선사항을 사용 설정하려면 다음 안내를 따르세요.
      1. + 속성 추가를 클릭합니다.
      2. 프리픽스 목록에서 spark를 선택하고 필드에 'spark.dataproc.enhanced.optimizer.enabled'를, 필드에 'true'를 추가합니다.
    2. Spark 실행 개선사항을 사용 설정하려면 다음 안내를 따르세요.
      1. + 속성 추가를 클릭합니다.
      2. 프리픽스 목록에서 spark를 선택하고 필드에 'spark.dataproc.enhanced.execution.enabled'를, 필드에 'true'를 추가합니다.
  4. 다른 클러스터 만들기 필드를 채우거나 확인한 후 만들기를 클릭합니다.

gcloud

  1. 다음 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

  1. 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 성능 향상을 사용 설정 또는 사용 중지할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Dataproc 작업 페이지를 엽니다.
  2. 작업 페이지에서 작업 제출을 클릭한 다음 작업 속성 섹션으로 스크롤합니다.
    1. Spark 최적화 개선사항을 사용 설정하려면 다음 안내를 따르세요.
      1. + 속성 추가를 클릭합니다. 필드에 'spark.dataproc.enhanced.optimizer.enabled'를, 필드에 'true'를 추가합니다.
    2. Spark 실행 개선사항을 사용 설정하려면 다음 안내를 따르세요.
      1. + 속성 추가를 클릭합니다.
      2. 필드에 'spark.dataproc.enhanced.execution.enabled'를, 필드에 'true'를 추가합니다.
  3. 다른 작업 제출 필드를 채우거나 확인한 후 제출을 클릭합니다.

gcloud

  1. 다음 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
      

API

  1. 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"