Columnar Execution Engine
JVM 오버헤드를 우회하는 C++ 기반 벡터화 실행 엔진으로 분석 쿼리를 대폭 가속하는 기술
핵심 개념
컬럼나 실행 엔진은 기존 JVM 기반 실행(Spark, Hive 등)의 GC 오버헤드, 행 단위 처리, SIMD 미활용 문제를 해결하기 위해 C++로 구현된 벡터화 연산 레이어다. 논리적 쿼리 플랜을 변환 없이 재사용하면서 물리적 실행만 가속한다.
왜 JVM이 분석 워크로드에 불리한가
- GC 오버헤드: 예측 불가한 GC 일시 정지
- 행 단위 처리: Parquet·Delta 같은 컬럼나 포맷의 이점 활용 불가
- SIMD 미활용: 현대 CPU의 8~32개 동시 연산 능력을 사용하지 못함
Velox + Apache Gluten 스택
Meta가 오픈소스로 공개한 Velox와 Apache incubating 프로젝트인 Gluten의 조합이 이 접근의 표준 스택으로 부상했다.
아키텍처
Spark SQL / DataFrame API
↓
논리적 최적화 (AQE, 비용 기반 재작성, 컬럼 프루닝)
↓
물리적 플랜
↓
Apache Gluten (Spark ↔ Velox 브릿지)
├── 지원 연산자 → Velox 네이티브 플랜으로 변환
└── 미지원 연산자 → JVM fallback (자동, 경계에서 변환)
↓
Velox (C++ 벡터화 커널)
- 컬럼나 배치 연산
- SIMD 명령어 활용
- CPU 캐시 지역성 최적화
주요 특성
- 코드 변경 없이 기존 Spark 워크로드에 적용
- Spark의 모든 최적화(AQE, 컬럼 프루닝 등) 보존
- 지원되지 않는 연산자는 자동 JVM fallback
- Apache Spark Advisor로 fallback 연산자 실시간 가시성
Microsoft Fabric에서의 적용
Microsoft Fabric의 Native Execution Engine이 Velox + Gluten 스택을 Spark 서비스에 통합한 대표 사례다:
- Parquet, Delta 포맷 데이터에서 성능 극대화
- 복잡한 변환·집계, 컴퓨트 집약적 쿼리에 특히 효과적
- 추가 컴퓨트 비용 없음
성능 수치
| 벤치마크 | 개선 |
|---|---|
| TPC-DS SF1000 (Delta) | 오픈소스 Spark 대비 최대 6배 |
| 컴퓨트 비용 절감 | ~83% (고정 클러스터 기준) |
| NYC Taxi 데모 쿼리 | ~2.4배 속도 향상 |
최적 활용 조건
컬럼나 실행 엔진이 가장 효과적인 워크로드:
- Parquet, Delta 포맷 데이터
- 복잡한 집계, 조인, 필터
- SIMD로 가속 가능한 수치 연산
- fallback을 최소화하도록 설계된 쿼리
연관 개념
Source: Microsoft Fabric - Under the Hood - Native Execution Engine