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: 원문 보기