Dataproc 서버리스는 Spark 속성을 사용하여 일괄 워크로드에 할당할 컴퓨팅, 메모리, 디스크 리소스를 결정합니다. 이러한 속성 설정은 워크로드 할당량 소비와 비용에 영향을 미칠 수 있습니다(자세한 내용은 Dataproc 서버리스 할당량 및 Dataproc 서버리스 가격 책정 참조).
Spark 일괄 워크로드 속성 설정
Google Cloud 콘솔, gcloud CLI 또는 Dataproc API를 사용하여 서버리스 Dataproc Spark 일괄 워크로드를 제출할 때 Spark 속성을 지정할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Dataproc 만들기 일괄 페이지로 이동합니다.
속성 섹션에서 속성 추가를 클릭하고
Key
(이름) 및 지원되는 Spark 속성의Value
를 입력하세요.
gcloud
gcloud CLI 일괄 제출 예시:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
batches.create 요청의 일부로 지원되는 Spark 속성을 사용하여 RuntimeConfig.properties를 설정합니다.
지원되는 Spark 속성
Spark용 서버리스 Dataproc은 대부분의 Spark 속성을 지원하지만 spark.master=yarn
및 spark.shuffle.service.enabled
와 같은 YARN 관련 및 셔플 관련 Spark 속성은 지원하지 않습니다. Spark 애플리케이션 코드가 YARN 또는 셔플 속성을 설정하면 애플리케이션에 오류가 발생합니다.
런타임 환경 속성
Spark를 위한 서버리스 Dataproc은 런타임 환경 구성을 위해 다음과 같은 커스텀 Spark 속성을 지원합니다.
속성 | 설명 |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
EnvironmentVariableName을 드라이버 프로세스에 추가합니다. 환경 변수 여러 개를 지정할 수 있습니다. |
리소스 할당 속성
Spark를 위한 서버리스 Dataproc은 리소스 할당 구성을 위해 다음과 같은 Spark 속성을 지원합니다.
속성 | 설명 | 기본값 | 예시 |
---|---|---|---|
spark.driver.cores |
Spark 드라이버에 할당할 코어(vCPU) 수입니다.
유효한 값: 4 , 8 , 16 . |
4 |
|
spark.driver.memory |
Spark 드라이버 프로세스에 할당할 메모리 크기이며 크기 단위 서픽스('m', 'g', 또는 't')가 포함된 JVM 메모리 문자열 형식으로 지정됩니다. 드라이버 메모리 오버헤드를 포함하여 드라이버 코어당 총 드라이버 메모리로, 표준 컴퓨팅 등급의 경우 |
512m , 2g |
|
spark.driver.memoryOverhead |
Spark 드라이버 프로세스에 할당할 추가 JVM 메모리 크기이며 크기 단위 서픽스('m', 'g' 또는 't')가 포함된 JVM 메모리 문자열 형식으로 지정됩니다. 이 메모리는 JVM 오버헤드, 내부 문자열, 기타 기본 오버헤드와 관련된 힙이 아닌 메모리이며 여기에는 PySpark 드라이버 프로세스와 같은 다른 드라이버 프로세스에서 사용하는 메모리와 컨테이너에서 실행되는 비드라이버 프로세스에서 사용하는 메모리가 포함됩니다.
드라이버가 실행되는 컨테이너의 최대 메모리 크기는 드라이버 메모리 오버헤드를 포함하여 드라이버 코어당 총 드라이버 메모리는 표준 컴퓨팅 등급의 경우 |
드라이버 메모리의 10%(드라이버 메모리의 40%로 기본 지정되는 PySpark 일괄 워크로드는 제외) | 512m , 2g |
spark.dataproc.driver.compute.tier |
드라이버에 사용할 컴퓨팅 등급입니다. 프리미엄 컴퓨팅 등급은 더 높은 코어별 성능을 제공하지만 높은 요율로 청구됩니다. | 표준 | 표준, 프리미엄 |
spark.dataproc.driver.disk.size |
드라이버에 할당된 디스크 공간의 크기로, 크기 단위 서픽스('k', 'm', 'g' 또는 't')로 지정됩니다.
250GiB 이상이어야 합니다.
프리미엄 디스크 등급을 드라이버에서 선택한 경우 적합한 크기는 375g, 750g, 1500g, 3000g, 6000g, 9000g입니다. 프리미엄 디스크 등급과 드라이버 코어 16개를 선택한 경우 최소 디스크 크기는 750g입니다. |
코어당 100GiB |
1024g , 2t |
spark.dataproc.driver.disk.tier |
드라이버의 로컬 및 셔플 스토리지에 사용할 디스크 등급입니다.
프리미엄 디스크 등급은 IOPS 및 처리량 측면에서 더 나은 성능을 제공하지만 더 높은 요율로 청구됩니다. 프리미엄 디스크 등급을 드라이버에서 선택한 경우 spark.dataproc.driver.compute.tier=premium 을 사용해서 프리미엄 컴퓨팅 등급을 선택하고 spark.dataproc.executor.disk.size 를 사용해서 디스크 공간 크기를 지정해야 합니다.
프리미엄 디스크 등급을 선택하면 드라이버가 시스템 스토리지에 50GiB의 디스크 공간을 추가로 할당하며, 사용자 애플리케이션은 이 공간을 사용할 수 없습니다. | 표준 | 표준, 프리미엄 |
spark.executor.cores |
각 Spark 실행자에 할당할 코어(vCPU) 수입니다.
유효한 값: 4 , 8 , 16 . |
4 |
|
spark.executor.memory |
각 Spark 실행자 프로세스에 할당할 메모리 크기이며 크기 단위 서픽스('m', 'g', 또는 't')가 포함된 JVM 메모리 문자열 형식으로 지정됩니다. 실행자 메모리 오버헤드를 포함한 실행자 코어당 총 실행자 메모리는 표준 컴퓨팅 등급의 경우 |
512m , 2g |
|
spark.executor.memoryOverhead |
Spark 실행자 프로세스에 할당할 추가 JVM 메모리 크기이며 크기 단위 서픽스('m', 'g' 또는 't')가 포함된 JVM 메모리 문자열 형식으로 지정됩니다. 이 메모리는 JVM 오버헤드, 내부 문자열, 기타 기본 오버헤드에 사용되는 힙이 아닌 메모리이며 여기에는 컨테이너에서 실행되는 다른 비실행자 프로세스에서 사용하는 메모리와 PySpark 실행자 메모리가 포함됩니다.
실행자가 실행되는 컨테이너의 최대 메모리 크기는 실행자 메모리 오버헤드를 포함한 실행자 코어당 총 실행자 메모리는 표준 컴퓨팅 등급의 경우 |
실행자 메모리의 10%(실행자 메모리의 40%로 기본 지정되는 PySpark 일괄 워크로드 제외) | 512m , 2g |
spark.dataproc.executor.compute.tier |
실행자에 사용할 컴퓨팅 등급입니다. 프리미엄 컴퓨팅 등급은 더 높은 코어별 성능을 제공하지만 높은 요율로 청구됩니다. | 표준 | 표준, 프리미엄 |
spark.dataproc.executor.disk.size |
각 실행자에 할당된 디스크 공간의 크기로, 크기 단위 서픽스('k', 'm', 'g' 또는 't')로 지정됩니다.
실행자 디스크 공간은 데이터를 셔플하고 종속 항목을 스테이징하는 데 사용될 수 있습니다. 250GiB 이상이어야 합니다.
실행자에서 프리미엄 디스크 등급을 선택한 경우 적합한 크기는 375g, 750g, 1500g, 3000g, 6000g, 9000g입니다. 프리미엄 디스크 등급과 실행자 코어 16개를 선택한 경우 최소 디스크 크기는 750g입니다. |
코어당 100GiB |
1024g , 2t |
spark.dataproc.executor.disk.tier |
실행자의 로컬 및 셔플 스토리지에 사용할 디스크 등급입니다.
프리미엄 디스크 등급은 IOPS 및 처리량 측면에서 더 나은 성능을 제공하지만 더 높은 요율로 청구됩니다. 실행자에서 프리미엄 디스크 등급을 선택한 경우 spark.dataproc.executor.compute.tier=premium 을 사용하여 프리미엄 컴퓨팅 등급을 선택하고 spark.dataproc.executor.disk.size 를 사용하여 디스크 공간 크기를 지정해야 합니다.
프리미엄 디스크 등급을 선택하면 각 실행자에게 시스템 스토리지용으로 50GiB의 디스크 공간이 추가로 할당되며, 사용자 애플리케이션은 이 공간을 사용할 수 없습니다. | 표준 | 표준, 프리미엄 |
spark.executor.instances |
할당할 초기 실행자 수입니다. 일괄 워크로드가 시작되면 자동 확장으로 인해 활성 실행자 수가 변경될 수 있습니다. 최소 2 부터 최대 2000 사이여야 합니다. |
자동 확장 속성
Dataproc 서버리스 자동 확장을 구성하는 데 사용할 수 있는 Spark 속성 목록은 Spark 동적 할당 속성을 참조하세요.
로깅 속성
속성 | 설명 | 기본값 | 예시 |
---|---|---|---|
spark.log.level |
설정되면 Spark 시작 시 SparkContext.setLogLevel() 호출의 효과로 사용자 정의 로그 설정을 재정의합니다. 유효한 로그 수준에는 ALL , DEBUG , ERROR , FATAL , INFO , OFF , TRACE , WARN 이 포함됩니다. |
INFO , DEBUG |
|
spark.executor.syncLogLevel.enabled |
true 로 설정하면 SparkContext.setLogLevel() 메서드를 통해 적용된 로그 수준이 모든 실행자에게 전파됩니다. |
false |
true , false |
spark.log.level.PackageName |
설정되면 Spark 시작 시 SparkContext.setLogLevel(PackageName, level) 호출의 효과로 사용자 정의 로그 설정을 재정의합니다. 유효한 로그 수준에는 ALL , DEBUG , ERROR , FATAL , INFO , OFF , TRACE , WARN 이 포함됩니다. |
spark.log.level.org.apache.spark=error |
예약 속성
속성 | 설명 | 기본값 | 예시 |
---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
예약 시 셔플 맵 편향 실행자를 제외하면 셔플 쓰기 편향으로 인한 긴 셔플 가져오기 대기 시간을 줄일 수 있습니다. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
편향으로 취급할 실행자에서 완료된 셔플 맵 태스크의 최소 개수입니다. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
편향으로 취급할 최대 실행자 수입니다. 편향된 실행자는 현재 예약 라운드에서 제외됩니다. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
편향으로 처리할 총 실행자의 최대 비율입니다. 편향된 실행자는 예약에서 제외됩니다. | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
편향으로 처리할 실행기에서 완료된 평균 셔플 매핑 태스크의 배수입니다. | 1.5 | 2.0 |
기타 속성
속성 | 설명 |
---|---|
dataproc.diagnostics.enabled |
일괄 워크로드 실패 또는 취소에 대한 진단을 실행하려면 이 속성을 활성화합니다. 진단이 사용 설정된 경우 워크로드가 완료된 후 일괄 워크로드는 진단이 완료될 때까지 컴퓨팅 리소스를 계속 사용합니다. 진단 tarball의 위치를 가리키는 URI는 Batch.RuntimeInfo.diagnosticOutputUri API 필드에 나열됩니다. |
dataproc.gcsConnector.version |
이 속성을 사용하여 일괄 워크로드의 런타임 버전과 함께 설치된 버전과 다른 Cloud Storage 커넥터 버전으로 업그레이드합니다. |
dataproc.sparkBqConnector.version |
이 속성을 사용하여 배치 워크로드의 런타임 버전으로 설치된 버전과 다른 Spark BigQuery 커넥터 버전으로 업그레이드하세요(Spark를 위한 서버리스 Dataproc로 BigQuery 커넥터 사용 참조). |
dataproc.profiling.enabled |
이 속성을 true 로 설정하여 Dataproc Serverless 워크로드에 프로파일링을 사용 설정합니다. |
dataproc.profiling.name |
이 속성을 사용하여 Profiler 서비스에서 프로필을 만드는 데 사용되는 이름을 설정합니다. |