Skip to main content
QUICK REVIEW

[논문 리뷰] Flare: Native Compilation for Heterogeneous Workloads in Apache Spark

Grégory M. Essertel, Ruby Y. Tahboub|arXiv (Cornell University)|2017. 03. 23.
Advanced Database Systems and Queries참고 문헌 29인용 수 10
한 줄 요약

Flare는 Apache Spark용 네이티브 코드 컴파일링 백엔드로, Spark의 JVM 기반 실행 방식을 네이티브로 컴iles된 코드로 대체하여 이질적 워크로드의 성능을 향상시킨다. TPC-H 벤치마크와 머신러닝 커널에서 순서 수준의 성능 향상을 달성하면서도 Spark의 고수준 표현력을 유지한다. Delite의 도메인 특화 언어(DSL) 컴파일 스택을 활용하여 사용자 정의 함수를 최적화하고 현대의 다중 코어, 메모리 기반 시스템에서의 확장성(스케일업)을 가능하게 한다.

ABSTRACT

The need for modern data analytics to combine relational, procedural, and map-reduce-style functional processing is widely recognized. State-of-the-art systems like Spark have added SQL front-ends and relational query optimization, which promise an increase in expressiveness and performance. But how good are these extensions at extracting high performance from modern hardware platforms? While Spark has made impressive progress, we show that for relational workloads, there is still a significant gap compared with best-of-breed query engines. And when stepping outside of the relational world, query optimization techniques are ineffective if large parts of a computation have to be treated as user-defined functions (UDFs). We present Flare: a new back-end for Spark that brings performance closer to the best SQL engines, without giving up the added expressiveness of Spark. We demonstrate order of magnitude speedups both for relational workloads such as TPC-H, as well as for a range of machine learning kernels that combine relational and iterative functional processing. Flare achieves these results through (1) compilation to native code, (2) replacing parts of the Spark runtime system, and (3) extending the scope of optimization and code generation to large classes of UDFs.

연구 동기 및 목표

  • TPC-H 벤치마크에서 여전히 HyPer과 같은 최고 수준의 관계형 엔진에 비해 순서 수준의 성능 격차를 보이는 Spark SQL과의 성능 격차를 해소한다.
  • 특히 이질적 워크로드(관계형 처리와 반복적 기능 처리를 병합)에 대해 Spark의 현재 런타임과 코드 생성 스택의 한계를 극복한다.
  • Delite의 도메인 특화 언어(DSL) 컴파일 스택 통합을 통해 머신러닝 및 데이터 분석 파이프라인에서 사용자 정의 함수(UDF)의 고성능 실행을 가능하게 한다.
  • 스케일아웃 중심 설계를 재고하여, 강력한 메모리 기반 다중 코어 시스템에서의 스케일업이 자원 오버헤드를 줄이며 뛰어난 성능을 제공할 수 있음을 입증한다.
  • 고급 코드 생성 및 최적화 기법을 통해 Spark의 고수준 API와 표현력을 유지하면서도 수작업 최적화된 네이티브 시스템 수준의 성능을 달성한다.

제안 방법

  • Flare Level 1을 도입: 쿼리 스테이지 단위로 Spark의 JVM 기반 코드 생성을 네이티브 코드 생성으로 대체하여 JVM 오버헤드를 제거한다.
  • Flare Level 2를 도입: 전체 쿼리 계획을 네이티브 코드로 컴파일하여 Spark의 RDD 계층을 건너뛰고 공유 메모리 다중 코어 아키텍처를 최적화한다.
  • Flare Level 3를 도입: Spark 쿼리 계획을 Delite의 중간 언어(DMLL)로 매핑하여 관계형 쿼리와 Delite DSL로 작성된 UDF의 종단 간 최적화를 가능하게 한다.
  • Delite의 컴파일러 스택을 활용하여 OptiML, OptiGraph, OptiMesh 등 도메인(머신러닝, 그래프 처리, PDE 해법)에서 GPU 병렬 코드를 포함한 고도로 최적화된 코드를 생성한다.
  • 관계형 연산자는 네이티브로 컴파일하고 UDF는 Delite의 DSL을 통해 컴파일하는 하이브리드 실행 모델을 사용하여 데이터 및 계산 단계 간 통합 최적화를 가능하게 한다.
  • 장애 복구가 덜 중요한 대규모 메모리 기반 다중 코어 아키텍처를 대상으로 Flare를 설계하여 현대 하드웨어 자원을 효율적으로 활용한다.

실험 결과

연구 질문

  • RQ1네이티브 코드 컴파일링이 TPC-H와 같은 표준 벤치마크에서 HyPer과 같은 최고 수준의 관계형 엔진과의 성능 격차를 메울 수 있는가?
  • RQ2Spark의 고수준 API를 사용하면서도 관계형 처리와 반복적 기능 계산(예: 머신러닝 파이프라인)을 병합한 이질적 워크로드의 성능 향상 정도는 어느 정도인가?
  • RQ3Delite의 도메인 특화 언어(DSL) 컴파일 스택과 Spark를 통합하는 것이 UDF 및 관계형 연산자의 종단 간 최적화에 얼마나 효과적인가?
  • RQ4현대 데이터 분석 시스템에서 스케일아웃 중심 설계에서 스케일업 중심 설계로의 전환은 어떤 성능 영향을 미치는가?
  • RQ5고수준 추상화를 유지하면서도 고급 코드 생성 및 최적화 기법을 통해 저수준 성능을 달성할 수 있는가?

주요 결과

  • Flare는 TPC-H 벤치마크에서 순서 수준의 속도 향상을 달성하여, 최고 수준의 관계형 엔진인 HyPer에 비해 2~3배 이내의 실행 시간을 기록한다.
  • DataFrame 연산과 반복적 UDF를 병합한 머신러닝 워크로드에서 Flare는 표준 Spark 구현 대비 10배의 성능 향상을 보였다.
  • 전체 쿼리 계획을 네이티브 코드로 컴파일하는 Flare Level 2는 RDD 계층과 JVM 추상화를 제거함으로써 런타임 오버헤드를 크게 감소시켰다.
  • Delite 통합을 통해 OptiML 및 기타 DSL로 작성된 UDF의 최적화가 가능해졌으며, GPU 병렬 실행이 가능하고 수작업 최적화된 커널과 유사한 성능을 달성했다.
  • 이 연구는 CPU가 성능 저하 요인인 많은 워크로드에서 현대의 대용량 메모리 기반 다중 코어 시스템에서의 스케일업이 기존 스케일아웃 아키텍처를 능가할 수 있음을 입증했다.
  • Flare는 Spark SQL의 고수준 API와 DataFrame 추상화와 완전히 호환되며, 데이터 분석 시스템에서 성능과 표현력이 상호 배제되지 않음을 증명했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.