论文部分内容阅读
随着大数据时代的到来,计算机需要处理的数据量与日俱增,面对互联网、工业物联网等领域不断增长的数据规模和计算需求,单个计算节点不再能有效地满足数据存储和处理的需要。在这样的背景下,Apache Spark作为一种具有良好计算性能和环境适应性的分布式计算框架,得到了广泛地使用。Spark有数十个可以影响系统行为的参数,这些参数可以通过改变计算任务的并行度和使用的内存大小等方式,显著地影响Spark应用的性能。目前这些参数通常由系统管理员手动调整,然而人工调参方法对于使用者的专业能力有一定的要求,并且由于可调参数数量众多以及集群环境之间的差异,具有较大的局限性,难以满足所有Spark应用场景下的需要。为解决上述问题,本文对如何自动化地进行Spark应用参数调整做了研究。本文分别研究了如何利用应用历史运行数据来进行自动参数调优的问题和在缺少应用历史数据的情况下如何自动优化参数的问题。除此以外,本文还探讨了如何基于统计方法进一步提升参数优化效果,并且对这种方法的适用性进行了探讨,最后在前述方法的基础上,实现了一个自动在Spark on yarn部署模式下工作的参数优化系统。在应用运行历史记录充足的场景下,本文基于机器学习方法对系统参数和性能之间的回归关系进行建模,并使用这一模型的预测结果判断候选参数的优劣,最后在指定的搜索空间寻找一个适合的优化参数以达到应用性能优化的目的。在这一过程中,本文使用了更加实用的应用性能预测模型建模方法以求得准确的回归效果。在缺乏应用历史记录的场景下,本文通过启发式方法,根据系统的硬件配置调整应用参数,使应用能够获得一个相对于默认参数而言性能更好的配置。另外,为了使这两种方法能够顺利结合在同一个系统中工作,本文设计可将两者结合起来的策略。最后本文利用统计学方法,对应用性能预测模型的准确性和速度对参数优化结果的影响做了讨论,并根据实验结果提出了一种应用性能预测模型优化策略以进一步提升优化效果。实验结果显示,无论是否有充足的历史数据,本文提出的性能优化方法均能通过调整系统参数对应用性能起到良好的优化效果。在有历史数据集的情况下,本文所述方法可以使得来自性能测试基准程序集的四个应用平均运行时间减少约59.92%。