오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-22 06:34
관리 메뉴

우노

[Spark] Spark Property 설정 본문

Data/Spark

[Spark] Spark Property 설정

운호(Noah) 2020. 10. 19. 21:29

Spark Property

  • Spark는 SparkConf, spark-shell, spark-submit, spark-defaults.conf 을 통해 Spark Application 실행과 관련된 자원을 설정할 수 있습니다.

애플리케이션 관련 설정

  • 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) 리스트를 지정합니다.
    • 콤마(,)를 이용해 여러 개 지정할 수 있습니다.
Comments