Skip to main content
QUICK REVIEW

[논문 리뷰] Sparkle: Optimizing Spark for Large Memory Machines and Analytics

Mijung Kim, Jun Li|arXiv (Cornell University)|2017. 08. 18.
Cloud Computing and Resource Management참고 문헌 9인용 수 6
한 줄 요약

Sparkle는 대용량 메모리 스케일업 시스템에서 Apache Spark의 성능을 최적화하기 위해 TCP 기반의 샤플링을 공유 메모리 샤플링 엔진으로 대체하고, 효율적인 인-place 업데이트를 위한 오프-힙 메모리 스토어를 도입한다. 이로 인해 반복적 그래프 워크로드에서 최대 20배의 성능 향상을 이루었고, 동일한 하드웨어를 사용한 스케일아웃 클러스터 대비 1.6배에서 5배의 속도 향상을 달성한다.

ABSTRACT

Spark is an in-memory analytics platform that targets commodity server environments today. It relies on the Hadoop Distributed File System (HDFS) to persist intermediate checkpoint states and final processing results. In Spark, immutable data are used for storing data updates in each iteration, making it inefficient for long running, iterative workloads. A non-deterministic garbage collector further worsens this problem. Sparkle is a library that optimizes memory usage in Spark. It exploits large shared memory to achieve better data shuffling and intermediate storage. Sparkle replaces the current TCP/IP-based shuffle with a shared memory approach and proposes an off-heap memory store for efficient updates. We performed a series of experiments on scale-out clusters and scale-up machines. The optimized shuffle engine leveraging shared memory provides 1.3x to 6x faster performance relative to Vanilla Spark. The off-heap memory store along with the shared-memory shuffle engine provides more than 20x performance increase on a probabilistic graph processing workload that uses a large-scale real-world hyperlink graph. While Sparkle benefits at most from running on large memory machines, it also achieves 1.6x to 5x performance improvements over scale out cluster with equivalent hardware setting.

연구 동기 및 목표

  • 대용량 메모리 스케일업 시스템에서 실행될 때 기존의 TCP 기반 샤플링과 JVM 힙 관리 방식이 비효율적인 성능 저하 문제를 해결한다.
  • 기계 학습 및 그래프 분석과 같은 반복 워크로드에서 불변 RDD와 빈번한 데이터 샤플링으로 인한 가비지 컬렉션 압박을 줄인다.
  • 스케일업 시스템의 글로벌 공유 메모리 기반으로 네트워크 스택 오버헤드를 제거하고, 작업 간 저지연, 고대역폭 데이터 통신을 가능하게 한다.
  • 오프-힙 메모리 스토어를 도입하여 직접적인 인-플레이스 업데이트를 허용함으로써 메모리 집약적이고 반복적인 데이터 분석의 메모리 효율성과 확장성을 향상시킨다.
  • 스케일업 아키텍처가 적절히 최적화된 Spark를 통해 통신 및 메모리 집약적 워크로드에서 스케일아웃 클러스터를 능가할 수 있음을 입증한다.

제안 방법

  • JVM 객체 오버헤드 없이 워커 프로세스가 네이티브 글로벌 공유 메모리를 직접 액세스하고 관리할 수 있도록 하는 공유 메모리 관리 체계와 할당기 설계.
  • TCP/IP 기반 데이터 전송을 공유 메모리 참조로 대체하는 공유 메모리 샤플링 엔진을 구현하여 직렬화, 역직렬화 및 복사 비용을 제거한다.
  • 신뢰도 벡터, 메시지 등의 데이터 구조를 캐싱하고 업데이트하기 위해 네이티브 메모리에 직접 업데이트할 수 있는 오프-힙 메모리 스토어 도입으로 가비지 컬렉션 압박 감소.
  • 글로벌 메모리 가시성 덕분에 여러 샤플링 스테이지의 통합을 통해 반복 처리의 오버헤드를 줄이는 그래프 처리 최적화.
  • 메시지 집계와 같은 성능에 민감한 커널을 Scala에서 C++로 이관하여 계산 성능을 가속화.
  • 오프-힙 스토어에 주기적인 체크포인팅을 통한 장애 복구 기능 통합으로 최악의 경우 약 8%의 오버헤드만 발생시키며 성능에 미치는 영향 최소화.

실험 결과

연구 질문

  • RQ1대용량 메모리 스케일업 시스템에서 Spark의 공유 메모리 통신이 TCP/IP 대비 샤플링 지연을 크게 줄일 수 있는가?
  • RQ2오프-힙 메모리 스토어가 반복적 Spark 워크로드에서 가비지 컬렉터 압박을 얼마나 줄이고 성능 향상에 기여하는가?
  • RQ3스케일업 대비 스케일아웃 구성에서 Sparkle 아키텍처가 일반 Spark 대비 성능과 메모리 효율성 측면에서 어떻게 비교되는가?
  • RQ4공유 메모리 샤플링과 오프-힙 스토리지가 신뢰도 전파와 같은 대규모 그래프 분석 워크로드 성능에 어떤 영향을 미치는가?
  • RQ5성능에 심각한 영향을 주지 않으면서 오프-힙 스토어에 장애 복구 메커니즘이 효율적으로 통합될 수 있는가?

주요 결과

  • 공유 메모리 샤플링 엔진만으로도 일반 Spark 대비 스케일업 머신에서 1.3배에서 6배의 성능 향상을 달성한다.
  • 공유 메모리 샤플링과 오프-힙 메모리 스토어의 조합이 실제 하이퍼링크 그래프를 사용한 대규모 신뢰도 전파 워크로드에서 20배 이상의 속도 향상을 이룬다.
  • Sparkle는 동일한 하드웨어를 사용한 스케일아웃 클러스터 대비 1.6배에서 5배의 성능 향상을 달성하여, 적절히 최적화된 스케일업 아키텍처의 우수성을 입증한다.
  • 메모리 사용량이 극적으로 감소한다: 동일한 워크로드에서 Sparkle는 힙 캐시 없이도 144GB의 오프-힙 메모리만 사용하지만, 일반 Spark는 700GB 이상을 사용한다.
  • 글로벌 메모리 액세스를 통해 두 개의 샤플링 스테이지를 하나로 통합함으로써, 신뢰도 전파 워크로드에서 반복당 시간을 13초에서 9초로 줄였다.
  • 체크포인팅을 통한 장애 복구는 최악의 경우 약 8%의 실행 시간 오버헤드만 발생시키며, Sparkle의 장애 복구 설계의 효율성을 확인한다.

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

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

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

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