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