Apache Gluten은 Spark SQL의 실행 속도를 획기적으로 개선하기 위해 만들어진 네이티브 가속 엔진 플러그인이다. Spark의 분산 처리 아키텍처는 그대로 유지하면서, JOIN이나 집계, 정렬 같은 무거운 연산들만 C++ 기반의 네이티브 엔진으로 처리하는 것이 핵심 아이디어다.
Gluten은 Spark의 실행 계획(Physical Plan)을 Substrait라는 표준 형식으로 변환한 다음, Velox나 ClickHouse 같은 고성능 벡터화 엔진에서 실제 연산을 수행한다. 사용자는 기존 DataFrame이나 SQL 코드를 전혀 수정하지 않고도 설정 한 줄만 추가하면 이 모든 혜택을 누릴 수 있다.
Velox 백엔드가 보여주는 놀라운 성능의 비밀은 SIMD(Single Instruction Multiple Data) 기술에 있다. 최신 CPU들은 AVX2, AVX-512(x86 계열)이나 NEON(ARM 계열) 같은 특별한 명령어 세트를 갖추고 있는데, 이를 활용하면 한 번의 CPU 사이클에 여러 데이터를 동시에 처리할 수 있다.
예를 들어 100개의 숫자를 더한다고 생각해보자. 기존 방식에서는 CPU가 100번의 덧셈을 순차적으로 수행해야 했다. 하지만 SIMD를 사용하면 한 번에 4개, 8개, 심지어 16개의 숫자를 동시에 더할 수 있다. 이론적으로 처리 속도가 최대 16배까지 빨라지는 셈이다.
Velox는 데이터를 컬럼 단위로 메모리에 연속적으로 배치하여 SIMD 레지스터가 한꺼번에 데이터를 읽어들이기 최적화된 구조를 갖추고 있다. 이러한 연속적인 메모리 접근은 CPU 캐시 효율도 높여 메모리 병목 현상까지 줄여준다.
이런 최적화들이 모여 Gluten은 평균적으로 2~3배의 성능 향상을 보여준다. 특정 쿼리에서는 무려 10배 이상 빨라지기도 한다. JVM 기반 Spark가 겪던 행 단위 처리의 오버헤드와 분기 예측 실패 문제를 근본적으로 해결했기 때문이다.
물론 몇 가지 제약사항도 있다. macOS ARM 환경은 아직 지원되지 않으며, 일부 복잡한 오퍼레이터는 JVM으로 폴백(Fallback)될 수 있다. 또한 Off-heap 메모리를 많이 사용하기 때문에 메모리 튜닝이 중요하다.
하지만 이런 제약사항에도 불구하고 Gluten은 충분히 매력적이다. 기존 코드를 전혀 수정하지 않고도 설정 추가만으로 극적인 성능 향상을 얻을 수 있기 때문이다.
Apache Gluten은 Spark의 안정성과 네이티브 엔진의 폭발적인 속도를 결합한 하이브리드 솔루션이다. 대규모 ETL 작업이나 데이터 웨어하우스 워크로드를 다루고 있다면, Gluten은 분명 고려해볼 만한 선택지다. SIMD 기술과 벡터화 실행이 만들어내는 성능 향상은 데이터 처리의 새로운 가능성을 열어준다.