멀티 스테이지 엔진을 프로덕션에서 실행하기
멀티 스테이지 엔진을 프로덕션에서 실행하기 (Run Multi-Stage Engine in Production)
Pinot의 멀티 스테이지(다단계) 쿼리 엔진을 프로덕션에서 실행하는 방법을 안내해요.
출처: 문서
본문
개요 (Overview)
Pinot의 멀티 스테이지 쿼리 엔진(Multi-Stage Query Engine, v2 엔진)은 분산 쿼리 처리로 복잡한 쿼리(조인, 서브쿼리, 윈도우 함수 등)를 지원해요. 브로커가 실행 계획을 여러 스테이지로 나누고, 브로커/서버에 상주하는 워커(worker)가 스테이지를 병렬 실행해요. 이 엔진을 프로덕션에서 안정적으로 운영하려면 워커 리소스와 설정을 올바르게 잡아야 해요.
워커 (Workers)
멀티 스테이지 엔진은 브로커와 서버에 워커를 배치해요. 쿼리 실행은:
- 브로커가 쿼리를 계획하고 여러 단계(stage)로 분해해요.
- 각 단계의 연산자(operator)가 워커에서 실행돼요.
- 워커가 단계 간 데이터(셔플)를 교환하며 최종 결과를 만들어요.
워커 리소스 구성 (Worker resource config)
- 워커 스레드 수, 메모리, 셔플 버퍼 크기를 쿼리 부하에 맞게 구성해요.
- 워커 리소스가 부족하면 복잡한 쿼리가 느려지거나 실패할 수 있어요.
- 브로커·서버 JVM 메모리 산정에 멀티 스테이지 워커의 오퍼레이터 메모리 사용을 포함해야 해요.
성능 고려사항 (Performance considerations)
- 멀티 스테이지 엔진은 조인·서브쿼리·윈도우 등 집약적 워크로드에 적합해요.
- 단순 집계 쿼리는 기존(싱글 스테이지) 엔진이 효율적일 수 있어요.
- 대형 셔플이 필요한 쿼리는 네트워크 I/O가 성능 병목이 될 수 있어요.
운영 모범 사례 (Operational best practices)
- 워커 리소스와 쿼리 성능을 모니터링하고 필요 시 스케일을 조정하세요.
- 복잡한 쿼리를 점진적으로 도입하고 부하를 검증하세요.
- 쿼리 스케줄링·격리와 함께 사용해 특정 쿼리가 워커를 독점하지 않게 하세요.