분산 쿼리에서 특정 워커에만 데이터가 몰리는 쏠림 현상을 해결한 경험
인턴 때 분산 집계 쿼리가 다른 쿼리보다 유독 오래 걸리는 문제를 맡았습니다. 워커 모니터링을 보니 대부분의 워커는 유휴 상태인데 하나만 계속 작동하고 있었습니다.
집계 키의 데이터 분포를 확인하니 특정 값 하나가 전체 데이터의 70%를 차지하고 있었습니다. 해당 키로 셔플하면 그 값이 한 워커로 몰립니다. 집계를 2단계로 나눠 첫 단계에서 랜덤 prefix를 붙여 분산하고, 두 번째 단계에서 prefix를 제거해 합산하는 방식으로 해결했습니다.
쏠림 문제는 쿼리 최적화로는 해결이 안 되고 데이터 특성을 파악해야 보인다는 걸 그때 배웠습니다. 분산 쿼리 병목은 데이터 분포를 확인하는 것부터 시작한다는 것이 지금도 제 첫 번째 진단 순서입니다.