
4
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 토스증권에서 Spark Connect를 Kubernetes에서 프로덕션 서비스로 운영하며 단일 장애점과 리소스 경합을 줄인 방법을 공유한 니다.
Spark Connect는 Driver를 서버로 분리해 세션 요청을 gRPC로 보내고 결과를 Arrow로 스트리밍하되, long-running 서버에 멀티세션이 붙는 과정에서 ‘앱=워크로드’ 전제가 깨져 문제가 발생함 니다.
단일 장애점(SPOF)은 글로벌 Executor 실패 카운터를 비활성화하고 task/stage 단위 fault tolerance로 격리한 뒤, SparkContext 자체를 replica로 나눠 한 replica 장애가 전체로 번지지 않게 함 니다.
리소스 경합은 서버 내 Scheduler가 모든 세션 Task를 함께 스케줄링해 FIFO로 순서만 나누며 CPU·메모리 격리가 어려워, Gateway가 Driver REST 지표(active/pending/maxTasks)와 세션 수를 결합해 새 세션은 한가한 서버로 배치하고 기존 세션은 유지하도록 라우팅함 니다.
Replica 배포와 라우팅 상태는 Spark Connect Hub의 Controller(Operator)와 Gateway(Data Plane)로 분리해, K8S watch는 Controller에 몰고 ServerPool은 Redis 인스턴스 스토어 폴링으로 동기화함 니다.
운영 가이드는 spark.driver.maxResultSize, spark.driver.memory(및 overhead), spark.executor.failuresValidityInterval, spark.executor.maxNumFailures, spark.sql.autoBroadcastJoinThreshold, spark.task.maxFailures, spark.stage.maxConsecutiveAttempts 같은 설정 점검을 포함함 니다.


