15

장애 보고서: 배치 잡이 8시간째 안 끝나요

Spark 성능 튜닝: Shuffle과 Skew 정복

학습 목표

Spark 성능 문제의 일반적인 원인을 파악한다 성능 튜닝의 중요성을 인식한다

"어제까진 30분이면 끝났는데요..."

월요일 아침 7시. 주말 동안 배치 잡이 안 끝났다고 알림이 울린다.

에디터 로딩 중...

"뭐가 문제지?"

코드는 바뀐 게 없다. 데이터도 평소와 비슷하다. 근데 왜...?


범인 찾기: Spark UI를 열어보니

에디터 로딩 중...

Task 200 혼자 7시간째 돌고 있었다.

알고 보니:

에디터 로딩 중...

Data Skew: 데이터가 한쪽으로 쏠림.


Spark가 느려지는 5가지 이유

원인증상빈도
Data Skew한 Task만 오래 걸림매우 흔함
ShuffleStage 사이 대기 시간흔함
OOMExecutor 죽음흔함
Small FilesTask 수가 너무 많음흔함
잘못된 Join메모리 폭발가끔

오늘 이 모든 것을 다룬다.


성능 튜닝 전에 알아야 할 것

Spark 실행 구조

에디터 로딩 중...

핵심 용어

용어의미
Job하나의 Action (count, write 등)
StageShuffle 기준으로 나뉜 작업 단위
Task파티션 하나를 처리하는 단위
Shuffle데이터 재분배 (네트워크 I/O)

이번 Day에서 배울 것

  1. Shuffle 최소화: 왜 Shuffle이 느린지, 어떻게 줄이는지
  2. Data Skew 해결: Salting, Broadcast Join
  3. 메모리 튜닝: OOM 방지
  4. 파티셔닝 전략: 적절한 파티션 수

시작하자.