우노
[Spark] Spark Property 설정 본문
Spark Property
- Spark는 SparkConf, spark-shell, spark-submit, spark-defaults.conf 을 통해 Spark Application 실행과 관련된 자원을 설정할 수 있습니다.
- property 적용 순서는 SparkConf, spark-shell, spark-submit, spark-defaults.conf 입니다.
- 적용 예
애플리케이션 관련 설정
- spark.app.name
- 애플리케이션 이름
- SparkConf의 appName으로 설정하는 것과 같은 속성
- spark.driver.cores
- 드라이버가 사용할 코어 수
- 클러스터 모드에서만 사용 가능합니다.
- 기본값 : 1
- spark.driver.maxResultSize
- collect() 메서드 등의 호출 결과로 생성된 결과 값의 최대 크기입니다.
- 최소 1M 이상으로 지정해야 하며, 이 값을 초과할 경우 전체 job은 실패로 종료됩니다.
- 기본값 : 1g
- spark.driver.memory
- 드라이버가 사용할 메모리 크기
- 클라이언트 모드에서 사용할 경우, 반드시 SparkConf가 아닌 --driver-memory 실행 옵션이나 프로퍼티 파일을 사용해서 지정해야 합니다.
- 기본값 : 1g
- spark.executor.memory
- 익스큐터 하나의 메모리 크기를 지정합니다.
- 기본값은 : 1g
- spark.local.dir
- RDD 데이터를 디스크에 저장하거나 셔플 시 Mapper의 결과를 저장하는 디렉터리를 지정합니다.
- 콤마(,)를 이용해 여러 위치를 지정할 수 있으며, 성능에 큰 영향을 주므로 반드시 빠른 로컬 디스크를 사용해야 합니다.
- 기본값은 : /tmp
- spark.master
- 클러스터 매니저 정보를 지정합니다.
- spark.submit.deployMode
- 디플로이 모드를 지정합니다.
- client 또는 cluster 모드를 사용할 수 있습니다.
실행환경(Runtime Enviroment) 관련 설정
- spark.driver.extraClassPath
- 드라이버 클래스패스에 추가할 항목을 지정합니다.
- 이 속성은 SparkConf가 아닌 --driver-memory 실행 옵션이나 프로퍼티 파일을 사용해서 지정해야 합니다.
- 유사한 속성으로 spark.driver.extraJavaOptions, spark.driver.extraLibraryPath가 있으며 각각 드라이버 실행 시 필요한 자바 옵션과 라이브러리 정보를 지정하는 용도로 사용됩니다.
- spark.executor.extraClassPath
- 익스큐터의 클래스패스에 추가할 항목을 지정합니다.
- 유사한 속성으로 spark.executor.extraJavaOptions와 spark.executor.extraLibraryPath가 있습니다.
- spark.files, spark.jars
- 각 익스큐터의 실행 디렉터리에 위치할 파일들 또는 jar 파일들을 지정하며, 콤마(,)를 이용해 여러 파일을 지정할 수 있습니다.
- spark.submit.pyFiles
- PYTHONPATH에 추가될 .zip, .egg, .py 파일을 지정하며, 콤마(,)를 이용해 여러 파일을 지정할 수 있습니다.
- spark.jars.packages
- 익스큐터와 드라이버의 클래스패스에 추가될 의존성 jar정보를 메이븐 코디네이트 형식으로 지정 할 수 있습니다.
셔플 관련 설정
- spark.reducer.maxSizeInFlight
- 셔플 수행 시 각 리듀서가 매퍼의 실행 결과를 읽어갈 때 사용할 버퍼의 크기를 지정합니다.
- 기본값 : 48m
- spark.reducer.maxReqslnFlight
- 리듀서에서 매퍼의 결과를 가져갈 때 동시에 수행 가능한 최대 요청 수를 지정합니다.
- 기본값 : int.MaxValue(2147483647)
- spark.shuffle.compress
- 맵의 결과를 압축할 것인지에 대한 설정입니다.
- true로 설정할 경우 spark.io.compress.codec에 지정한 압축 코덱을 사용해 압축합니다.
- spark.shuffle.service.enabled
- 외부 셔플 서비스를 사용할 것인지 여부를 지정합니다.
- 기본값은 false이며 true로 설정할 경우 외부 셔플 서비스를 사용하게 됩니다.
스파크 UI 관련 설정
- spark.eventLog.enabled
- 스파크 이벤트 관련 로깅을 수행할 것인지를 설정합니다.
- 기본값 : false
- 기본값을 true로 설정할 경우 spark.eventLog.dir에 로깅을 수행할 경로를 지정해야 합니다.
- 이벤트 로깅을 활성화할 경우 종료된 애플리케이션에 대한 상세 실행 히스토리 정보를 스파크 UI에서 확인할 수 있습니다.
- spark.ui.port
- 스파크 UI 포트를 지정합니다.
- 기본값 : 4040
- spark.ui.killEnabled
- 스파크 UI를 통해 잡을 중지(kill)시킬 수 있도록 할 것인지 설정합니다.
- 기본값 : true
- spark.ui.retainedJob
- 종료된 잡에 대한 정보를 몇 개까지 유지할 것인지 설정합니다.
- 유사한 옵션으로 spark.ui.retainedStages, spark.ui.retainedTasks, spark.ui.retainedExecutors, spark.ui.retainedDrivers, spark.ui.retainedBatches 등이 있습니다.
압축 및 직렬화(Serialization) 관련 설정
- spark.broadcast.compress
- 브로드캐스트 변수의 값을 압축할 것인지 설정합니다.
- 기본값 : true
- spark.io.compression.codec
- 브로드캐스트 변수나 셔플을 위한 중간 결과물 등 스파크 내부에서 사용하는 데이터를 압축할 때 사용할 압축 코덱을 지정합니다.
- l4z, lzf, snappy를 사용할 수 있습니다.
- 기본값 : lz4
- spark.kyro.classesToRegister
- Kyro 직렬화를 위해 등록할 커스텀 클래스 정보를 지정합니다.
- 만약 클래스 등록 방식을 좀 더 커스텀하게 진행하고자 한다면 spark.kyro.registrator를 사용할 수 있습니다.
- spark.serializer
- 스파크에서 사용할 객체 직렬화 방식을 설정합니다.
- org.apache.spark.Serializer의 하위 클래스를 지정할 수 있으며, 현재 스파크에서는 JavaSerializer와 KyroSerializer라는 두 클래스를 제공하고 있습니다.
메모리 관련 설정
- spark.memory.fraction
- 전체 힙 영역에서 익스큐터와 RDD 데이터 저장에 사용될 크기를 비율로 설정합니다.
- 기본값 : 0.6
- 스파크 내부에서 사용하는 메타데이터나 객체 직렬화 및 역질렬화 등에 필요한 예비 메모리 공간을 확보해서 OOM을 방지할 목적으로 기본값을 조정할 수 있습니다.
- spark.memory.storageFraction
- 할당된 메모리에서 데이터 저장에 사용할 비율을 지정할 수 있습니다.
- 기본값 : 0.5
- 기본값을 크게 할 경우 익스큐터에서 사용할 메모리 크기를 줄여야 합니다.
- spark.memory.offHeap.enabled
- 기본값 : false
- 기본값을 true로 설정할 경우 off-heap메모리를 사용합니다.
- 이 값을 true로 설정했다면 spark.memory.offHeap.size에 오프-힙 메모리 크기를 지정해야 합니다.
익스큐터 관련 설정
- spark.executor.cores
- 익스큐터에 할당된 코어의 수를 지정합니다.
- 지정하지 않을 경우 얀 모드에서는 1, 스탠드얼론 모드와 메소스 coarse-grained모드에서는 사용 가능한 전체 코어의 개수가 사용됩니다.
- spark.default.parallelism
- 스파크에서 사용할 파티션의 수, 즉 스파크의 기본 병렬 처리 수준을 지정합니다.
- spark.files.fetchTimeout
- sparkContext.addFile() 메서드를 이용했을 때 드라이버로부터 파일을 받아오는 데 걸리는 최대 시간을 설정합니다.
- 기본값 : 60s
네트워크 관련 설정
- spark.driver.host, spark.driver.port
- 드라이버 프로세스의 호스트와 포트 정보를 설정합니다.
- spark.network.timeout
- 스파크의 기본 네트워크 타임아웃을 설정합니다.
- 이 값은 spark.core.connection.ack.wait.timeout 등 다른 설정 값들의 기본값으로 사용됩니다.
보안관련설정
- spark.acls.enable
- 스파크 acl을 활성화할지 여부를 설정합니다.
- 기본값 : false
- spark.admin.acls
- 스파크 잡에 접근할 수 있는 사용자(user)와 관리자(administrator) 정보를 설정하며, 콤마(,)를 이용해 다수의 사용자를 지정할 수 있습니다.
- 만약 그룹으로 설정할 경우 spark.admin.acls, groups 속성을 사용할 수 있습니다.
- spark.authenticate
- 스파크에서 사용자 인증 여부를 확인할 것인지를 설정합니다.
- 기본값 : false
- false 인 경우 인증 여부와 상관없이 스파크 잡을 실행하고 접근할 수 있습니다.
- spark.authenticate.secret
- 잡을 실행하기 위한 비밀 키 정보를 설정합니다.
- spark.ui.view.acls,spark.ui.view.acls.groups
- 스파크 UI에서 잡 정보를 조회하기 위한 acl 정보를 설정합니다.
- spark.ui.filters
- 스파크 UI에 적용할 자바 서블릿 필터 정보를 지정합니다.
- 콤마(,)를 이용해 여러 개의 필터를 지정할 수 있으며, 자바 시스템 프로퍼티를 사용해 필터에서 사용할 파라미터 정보를 지정할 수 있습니다.
암호화 관련 설정
- spark.ssl.enabled
- 기본값 : false
- SSL 연결을 활성화할 것인지 설정합니다.
- spark.ssl.keyStore
- 키 스토어 파일이 저장된 경로를 지정합니다.
- spark.ssl.keyStoreType
- 키 스토어 파일의 타입을 지정합니다.
- spark.ssl.keyStorePassword
- 키 스토어 파일에 대한 비밀번호를 지정합니다.
- spark.ssl.enabledAlgorithms
- ssl을 위한 알고리즘(cipher) 리스트를 지정합니다.
- 콤마(,)를 이용해 여러 개 지정할 수 있습니다.
'Data > Spark' 카테고리의 다른 글
[Spark] yarn node -list (0) | 2020.10.27 |
---|---|
[Spark] Spark local mode와 Cluster Manager 및 deploy mode(client, cluster) (2) | 2020.10.23 |
[Spark] Matrix의 Row를 전체 Vertex 개수로 두고 (LRxLC),(LCxLC) 형태 Matrix 생성하기 (0) | 2020.10.14 |
[Spark] Matrix의 Row를 전체 Vertex 개수로 두고 Col 기준으로 나누기 ( 중복 비허용 ) (0) | 2020.10.11 |
[Spark] Matrix의 Row를 전체 Vertex 개수로 두고 Col 기준으로 나누기 ( 중복 허용 ) (0) | 2020.10.10 |
Comments