개발일기/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 환경 변수도 함께 고려)
설정 방법
- bin/spark-submit 명령어
- SparkConf API
- spark-defaults.conf 파일