터칭 데이터

Resource Dynamic Allocation 본문

SparkML

Resource Dynamic Allocation

터칭 데이터 2024. 2. 5. 13:35

 

Spark 고급과 Spark ML


Shuffling시 Skew 처리방식과 Spark ML에 대해 배워보자

 

 

 

 

 

 

 

 

Contents


1. Spark 기타 기능과 메모리 관리
2. Spark Shuffling 최적화
3. Spark Partition 학습
4. Spark ML 소개와 ML 모델 빌딩
5. ML Pipeline과 Tuning 소개와 실습

 

 

 

 

 

 

기타 기능/개념 살펴보기

 

자주 필요하지는 않지만 알아두면 좋은 기능들을 살펴보자

 

 

 

 

 

 

Spark의 리소스 할당 (스케줄링)

 

Spark Application들간의 리소스 할당

● 기반이 되는 리소스 매니저가 결정
    ▪ YARN은 세 가지 방식 지원: FIFO, FAIR, CAPACITY
● 한번 리소스를 할당받으면 해당 리소스를 끝까지 들고 가는 것이 기본

 

하나의 Spark Application안에서 잡들간의 리소스 할당

● FIFO 형태로 처음 잡이 필요한대로 리소스를 받아서 쓰는 것이 기본

 

 

 

 

 

 

 

 

 

 

 

Spark Application의 리소스 요구/릴리스 방식

 

Static Allocation (기본 동작)

● Spark Application은 리소스 매니저로부터 (YARN) 받은 리소스를 보통 끝까지 들고감
● 이는 리소스 사용률에 악영향을 줄 가능성이 높음

 

Dynamic Allocation

● Spark Application이 상황에 따라 executor를 릴리스하기도 하고 요구하기도 함
● 다수의 Spark Application들이 하나의 리소스 매니저를 공유한다면 활성화하는 것이 좋음

 

 

 

spark-submit —num-executors 100 —executor-cores 4 —executor-memory 32G

 

 

 

 

 

 

 

 

 

 

 

 

 

Static Allocation vs. Dynamic Allocation

 

spark-submit —num-executors 100 —executor-cores 4 —executor-memory 32G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dynamic Resource Allocation

Dynamic Resource Allocation은 아래 환경변수들로 제어

 

spark.dynamicAllocation.enabled = true
spark.dynamicAllocation.shuffleTracking.enabled = true
spark.dynamicAllocation.executorIdleTimeout = 60s (릴리스 타이밍 결정)
spark.dynamicAllocation.schedulerBacklogTimeout = 1s (요청 타이밍 결정)


spark.dynamicAllocation.minExecutors
spark.dynamicAllocation.maxExecutors
spark.dynamicAllocation.initialExecutors
spark.dynamicAllocation.executorAllocationRatio

 

https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation

 

 

 

 

 

'SparkML' 카테고리의 다른 글

Driver Executor Memory  (0) 2024.02.05
Spark Scheduler  (0) 2024.02.05
Speculative Execution  (0) 2024.02.05
Accumulators  (0) 2024.02.05
기타기능 Intro와 Broadcast Variable  (0) 2024.02.05