通过内存感知的任务共置提升 Spark 应用吞吐量:一种专家混合方法
分布式、并行与集群计算
2017-10-03 v1
摘要
构建于 Apache Spark 等大数据处理框架之上的数据分析应用是一类重要的应用。其中许多应用对延迟不敏感,因此可以作为批处理作业在数据中心运行。通过在单个计算主机上运行多个应用,任务共置可以显著提高服务器利用率和系统吞吐量。然而,有效的任务共置并非易事,因为它需要理解共运行应用的计算资源需求,以确定哪些任务以及多少任务可以共置。在本文中,我们提出了一种专家混合方法来建模 Spark 应用的内存行为。我们通过离线学习一系列典型应用上的专门内存模型来实现这一点;然后在运行时确定哪个内存模型(即专家)最能描述目标应用的内存行为。我们表明,通过准确估计所需的资源水平,共置方案可以有效地确定在同一主机上可以共置多少应用,从而在考虑共运行应用任务的内存和 CPU 需求的前提下提高系统吞吐量。我们的技术应用于一组基于 Apache Spark 框架构建的代表性数据分析应用。我们在一个多核集群上评估了我们的方法在系统吞吐量和平均归一化周转时间方面的表现。我们的方法达到了使用理想内存预测器所提供性能的 83.9% 以上。与隔离执行应用任务相比,我们平均获得了 8.69 倍的系统吞吐量提升和 49% 的周转时间缩短,这相对于最先进的共置方案,在系统吞吐量和周转时间上分别实现了 1.28 倍和 1.68 倍的改进。
引用
@article{arxiv.1710.00610,
title = {Improving Spark Application Throughput Via Memory Aware Task Co-location: A Mixture of Experts Approach},
author = {Vicent Sanz Marco and Ben Taylor and Barry Porter and Zheng Wang},
journal= {arXiv preprint arXiv:1710.00610},
year = {2017}
}
备注
ACM/IFIP/USENIX Middleware 2017