목록 보기
Spark Connect on Kubernetes #1: 견고한 Spark Connect 만들기
데브옵스

Spark Connect on Kubernetes #1: 견고한 Spark Connect 만들기

토스
토스
2026년 6월 19일

두줄요약

Spark Connect를 멀티세션 서비스로 운영하며 생기는 단일 장애점과 리소스 경합 문제를 다뤘습니다. replica, Gateway, 부하 점수 기반 세션 배치로 안정성을 높인 과정을 정리했습니다.

문제 상황

  • Spark Connect 서버 하나에 여러 세션이 붙으며 Driver 단일 장애점과 전 세션 동시 실패 위험 발생
  • 무거운 작업이 Task 슬롯과 메모리를 공유해 다른 사용자 쿼리 지연, FIFO 스케줄링과 선점 부재로 경합 심화
  • 고정된 서버 스펙과 세션 배치 한계로 부하 분산과 확장성 확보 어려움

원인 분석

  • Spark 기본 설계가 앱 하나와 워크로드 하나를 전제해 멀티세션 서버와 맞지 않음
  • executor 실패 카운터가 세션별이 아니라 서버 전체에 누적되어 임계치 초과 시 전체 종료
  • Spark Connect에서 scheduler pool 전파 공백이 있어 모든 쿼리가 Default Pool로 몰림

해결 방법

  • spark.executor.maxNumFailures를 사실상 비활성화하고 실패 기록은 주기적으로 비워 장기 누적 방지
  • 여러 Spark Connect replica로 SparkContext를 분리해 장애 범위를 한 대로 축소
  • Gateway를 두고 서버 부하 점수와 세션 수를 반영해 새 세션을 가장 한가한 서버로 배치

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...