[논문 리뷰] A Benchmarking Study to Evaluate Apache Spark on Large-Scale Supercomputers
이 논문은 아르곤나 국립연구소의 테타 슈퍼컴퓨터에서 표준화된 데이터플로우 벤치마크를 사용하여 대규모 슈퍼컴퓨터에서 Apache Spark의 성능을 평가하며, 강한 스케일링과 약한 스케일링 모두에서 전통적인 MPI/C 워크로드와 비교한다. Spark는 JVM 및 네트워킹 오버헤드로 인해 MPI/C보다 약 30배 느리지만, 적절히 튜닝된 경우 혼합 환경에서 공처리 및 후처리 작업에 있어 HPC 워크로드에 대한 Spark의 실현 가능성을 입증한다.
As dataset sizes increase, data analysis tasks in high performance computing (HPC) are increasingly dependent on sophisticated dataflows and out-of-core methods for efficient system utilization. In addition, as HPC systems grow, memory access and data sharing are becoming performance bottlenecks. Cloud computing employs a data processing paradigm typically built on a loosely connected group of low-cost computing nodes without relying upon shared storage and/or memory. Apache Spark is a popular engine for large-scale data analysis in the cloud, which we have successfully deployed via job submission scripts on production clusters. In this paper, we describe common parallel analysis dataflows for both Message Passing Interface (MPI) and cloud based applications. We developed an effective benchmark to measure the performance characteristics of these tasks using both types of systems, specifically comparing MPI/C-based analyses with Spark. The benchmark is a data processing pipeline representative of a typical analytics framework implemented using map-reduce. In the case of Spark, we also consider whether language plays a role by writing tests using both Python and Scala, a language built on the Java Virtual Machine (JVM). We include performance results from two large systems at Argonne National Laboratory including Theta, a Cray XC40 supercomputer on which our experiments run with 65,536 cores (1024 nodes with 64 cores each). The results of our experiments are discussed in the context of their applicability to future HPC architectures. Beyond understanding performance, our work demonstrates that technologies such as Spark, while typically aimed at multi-tenant cloud-based environments, show promise for data analysis needs in a traditional clustering/supercomputing environment.
연구 동기 및 목표
- 고성능 컴퓨팅(HPC) 환경에서 기존에 MPI 중심이었던 분위기에서 Apache Spark를 구현할 수 있는지 평가하기.
- 표준화된 벤치마크를 사용하여 대규모 슈퍼컴퓨터에서 Spark의 성능을 MPI/C와 비교하기.
- 프로그래밍 언어(파이썬 대 비대상 스크립트)가 HPC 환경에서 Spark 성능에 미치는 영향 평가하기.
- 특히 네트워킹 및 JVM 오버헤드에 기인한 Spark 배포에서의 주요 성능 저하 요인 규명하기.
- 혼합 MPI/Spark HPC 워크플로우에서 공처리 및 후처리 작업에 있어 Spark가 효과적으로 사용될 수 있음을 입증하기.
제안 방법
- 실제 분석 워크로드를 반영한 맵리듀스 패턴 기반의 데이터 처리 파이프라인 벤치마크를 개발하였다.
- 크로스 프레임워크 비교를 위해 MPI/C, Spark(Python), Spark(Scala)로 벤치마크를 구현하였다.
- 아르곤나 국립연구소의 테타 슈퍼컴퓨터(65,536코어)에서 강한 스케일링 및 약한 스케일링 실험을 수행하였다.
- 이상적 성능 대비 실제 성능의 스케일링 행동을 비교하기 위해 로그 스케일링 플롯을 사용하였다.
- HPC 호환성을 위해 최소한의 Spark 설정 튜닝을 수행하였으며, Spark 런타임을 수정하지 않았다.
- 작업 제출 스크립트 및 커스텀 런처 프레임워크를 사용하여 생산용 슈퍼컴퓨팅 클러스터에 벤치마크를 배포하였다.
실험 결과
연구 질문
- RQ1대규모 슈퍼컴퓨터에서 데이터 집약적인 HPC 워크로드에 대해 Apache Spark가 수용 가능한 성능을 달성할 수 있는가?
- RQ2강한 스케일링 및 약한 스케일링 측면에서 Spark의 성능은 전통적인 MPI/C와 비교해 어떻게 되는가?
- RQ3프로그래밍 언어 선택(Python 대 비대상 스크립트)이 HPC 환경에서 Spark 성능에 상당한 영향을 미치는가?
- RQ4HPC 시스템에서 Spark를 실행할 때 주요 성능 저하 요인은 무엇인가, 특히 네트워킹 및 JVM 오버헤드 측면에서?
- RQ5기존 HPC 워크플로우에 Spark를 통합할 수 있는 정도는 어느 정도이며, 특히 혼합 MPI/Spark 실행 모델에서의 통합 가능성은 어떻게 되는가?
주요 결과
- 테타 슈퍼컴퓨터에서 강한 스케일링 및 약한 스케일링 실험 모두에서 Spark 워크로드는 MPI/C 대비 약 30배 느렸다.
- 약한 스케일링 결과는 세 프레임워크 모두 유사한 추세를 보였으며, 이는 Spark가 이론적으로는 합리적으로 스케일링 가능하나, 절대적인 실행 시간이 높다는 것을 시사한다.
- 강한 스케일링 결과 역시 이상적 성능과의 괴리가 있었으며, 모든 프레임워크가 역코어 비례성에서 벗어났다.
- Spark Python과 Spark Scala 간에 유의미한 성능 차이가 관찰되지 않아, 본 연구에서 프로그래밍 언어 선택이 성능에 영향을 주지 않았다.
- 주요 성능 저하 원인은 Spark 허트비트 트래픽이 네트워크를 빡빡하게 만들었으며, 실험에서 허트비트를 비활성화함으로써 이 문제를 완화할 수 있었다.
- 성능 오버헤드가 있음에도 불구하고, Spark는 특히 공처리 및 후처리 작업에 있어 대규모 슈퍼컴퓨터에서의 데이터 처리에 실현 가능함을 입증하였다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.