Drastically Reducing Out-of-Memory Errors in Apache Spark at Pinterest
Author: Felix Loesing | Source: Medium (Pinterest Engineering) | Published: 2026-02-17
한 줄 요약
Pinterest가 “Auto Memory Retries” 기능으로 OOM 발생 시 CPU 코어를 먼저 증가시키고 그래도 실패하면 메모리를 확대하는 점진적 재시도 전략을 도입하여 Spark OOM 장애를 96% 감소시켰다.
핵심 주장/내용
- OOM의 대부분은 메모리 부족이 아닌 메모리 단편화와 태스크 스큐에 의해 발생 — CPU 코어 증가(2x)만으로 대부분 해결됨
- 점진적 재시도 프로파일 (2x → 3x → 4x): 실패한 특정 태스크에만 적용되며, 정상 태스크는 표준 executor에서 계속 실행
- Spark 핵심 컴포넌트 수정: Task, ResourceProfileManager, TaskSetManager, TaskSchedulerImpl, ExecutorAllocationManager
- 단일 스테이지 내에서 서로 다른 리소스 프로파일의 태스크가 공존하는 이기종(heterogeneous) 스케줄링 구현
- 향후 방향: 샘플링 기반 사전 메모리 조정, P90 기반 과거 실행 분석 자동 튜닝
주요 수치 / 사실
- 일일 90,000+ Spark 작업 운영
- OOM 장애 96% 감소
- 전체 Spark 작업 실패의 4.6%가 OOM
- 대부분의 OOM이 2x 재시도(CPU 코어 2배)에서 해결
- 에스컬레이션된 executor의 리소스 오버헤드 최소
관련 위키
Source: 원문 보기