개발일기/DataBase

Spark Tuning

탐요 2021. 5. 24. 18:57

https://gritmind.blog/2020/10/16/spark_tune/

 

스파크(Spark) 튜닝하기

Spark는 대용량 데이터 처리를 분산 환경에서 효율적으로 처리할 수 있는 프레임워크입니다. Spark는 여러 층의 데이터 추상화 구조와 분산 아키텍쳐가 녹아있는 복잡한 프레임워크이기 때문에 Job

gritmind.blog

 

위 링크 참조하여 필요한 부분만 정리

 

 

RDD(Resilient Distributed Datasets)

Spark 아키텍쳐는 크게 RDD와 DAG로 2가지의 주요한 추상화를 가진다.

RDD는 특히 Spark 프로그래밍 튜닝 기법에서 많이 다룬다.

  • Spark=RDD+Interface 공식처럼 RDD는 분산 환경과 Spark에 맞는 특별한 자료구조
  • RDD는 Spark 고유의 자료구조, 분산이 용이하게 여러 개의 파티션으로 구성됨
  • Read-only와 immutable(변경불가성)의 특징으로 Fault-tolerance를 쉽게 극복
    • Fault Tolerant 컴퓨터 시스템 : 시스템내의 어느  부품 또는 어느  모듈에 Fault (장애) 발생하더라도 시스템운영에 전혀 지장을 주지 않도록 설계된 컴퓨터 시스템
  • Spark Job은 RDD를 가공해 새로운 RDD를 얻는 식의 반복으로 구성됨
  • RDD는 변환(transformation)과 액션(action)의 두 가지 종류의 operator가 있음
  • Lazy-execution으로 Operation 파이프라인을 최적화시킴
  • 변환 함수는 Narrow와 Wide로 구분되며 Wide는 네트워크를 통해 데이터 셔플이 발생하는 아주 비싼 operator

 

Spark 환경설정

Spark는 분산 환경에서 동작하고 메모리를 주로 활용 -> 리소스 할당이 중요

데이터 크기, Spark API 함수 종류, YARN 스케줄링 방식에 따라 적합한 리소스 할당 방법이 필요

Spark property / Environment 변수 / Logging 세 가지 종류의 환경 변수가 있음

(이 글에서는 Spark property만 다룸)

(Spark는 YARN과 함께 동작, YARN 환경 변수도 함께 고려)

 

설정 방법

  1. bin/spark-submit 명령어
  2. SparkConf API
  3. spark-defaults.conf 파일

--master yarn 설정 시 에러. yarn 설정 따로 필요하다 판단