Skip to main content
QUICK REVIEW

[论文解读] A Benchmarking Study to Evaluate Apache Spark on Large-Scale Supercomputers

George K. Thiruvathukal, Cameron Christensen|arXiv (Cornell University)|Apr 26, 2019
Cloud Computing and Resource Management参考文献 18被引用 4
一句话总结

本文通过标准化的数据流基准测试,评估了Apache Spark在大规模超级计算机上的性能,对比了其与传统MPI/C工作负载在强扩展和弱扩展下的表现。尽管由于JVM和网络开销,Spark的性能比MPI/C慢约30倍,但本研究证明,通过适当调优,Spark在混合环境中用于联合处理和后处理任务时,仍具备在HPC工作负载中应用的可行性。

ABSTRACT

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.

研究动机与目标

  • 评估在传统上由MPI主导的高性能计算(HPC)环境中部署Apache Spark的可行性。
  • 使用标准化基准测试,比较Spark与MPI/C在大规模超级计算机上的性能表现。
  • 评估在HPC环境中,编程语言(Python与Scala)对Spark性能的影响。
  • 识别在领导级系统上部署Spark时的主要性能瓶颈,特别是网络和JVM开销问题。
  • 证明Spark可有效用于混合MPI/Spark HPC工作流中的联合处理和后处理任务。

提出的方法

  • 基于Map-Reduce模式开发了一个数据处理流水线基准,代表真实世界的数据分析工作负载。
  • 在MPI/C、使用Python的Spark和使用Scala的Spark中实现该基准,以支持跨框架比较。
  • 在阿贡国家实验室的Theta超级计算机(65,536个核心)上执行强扩展和弱扩展实验。
  • 使用对数缩放图测量性能,比较各框架在理想与实际扩展行为之间的差异。
  • 对Spark配置进行最小程度调优,仅调整关键属性以适配HPC环境,未修改Spark运行时。
  • 使用作业提交脚本和自定义启动框架,将基准部署到生产级超级计算集群中。

实验结果

研究问题

  • RQ1Apache Spark能否在大规模超级计算机上实现可接受的性能,以满足数据密集型HPC工作负载的需求?
  • RQ2在强扩展和弱扩展方面,Spark的性能与传统MPI/C相比如何?
  • RQ3在HPC环境中,选择编程语言(Python与Scala)是否显著影响Spark的性能?
  • RQ4在HPC系统上运行Spark时,主要性能瓶颈是什么,特别是网络和JVM开销方面?
  • RQ5Spark在多框架混合执行模型中,能在多大程度上集成到现有HPC工作流中,特别是在混合MPI/Spark执行模式下?

主要发现

  • 在Theta超级计算机上,基于Spark的工作负载在强扩展和弱扩展实验中均比MPI/C慢约30倍。
  • 弱扩展表现出相似趋势,表明Spark在理论上具有合理的可扩展性,尽管绝对运行时间较高。
  • 强扩展结果也显示相对于理想情况的较差可扩展性,所有框架均偏离了与核心数成反比的预期。
  • 未观察到Spark Python与Spark Scala之间存在显著性能差异,表明在本研究中编程语言选择不影响性能。
  • 主要性能下降被归因于Spark的心跳流量过度占用网络带宽,通过实验禁用心跳机制得以缓解。
  • 尽管存在性能开销,Spark在大规模超级计算机上进行数据处理仍具可行性,尤其适用于联合处理和后处理任务。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。