Spark平台执行器调度策略研究文献综述

 2022-11-29 16:35:02

研究背景:

我们正处于工业信息化的时代,对处理大量数据的需求不断增长。Apache Spark是一个功能强大的开源数据处理平台。随着处理大量数据的需求不断增长,它越来越受欢迎。与基于MapReduce的Hadoopensp;编程框架不同,Spark通过称为弹性分布式数据集(RDD)的高效抽象模型在集群上利用分布式内存,并且如果内存足够,则在迭代工作负载上的性能远远优于Hadoop 。但数据处理仍旧需要通过动态资源分配进行优化以减少处理时间,且需要与资源重新分配相关的优化,因为去除不必要的资源可以降低总成本。问题在于如何确定最佳资源量以满足特定工作量下的所需延迟处理?Apache Spark Streaming和现有模型的当前实现不能给我们这样的可能性。

研究现状:

Spark集群组成包括

  1. Cluster Manager:集群管理器,负责资源分配与管理,仅初级分配如worker的内存、CPU等资源(不负责Executor的资源分配);
  2. Worker:工作节点,创建Executor并分配其资源与任务;
  3. Executor:执行任务的一线进程,负责任务的执行和Worker和客户端应用程序的信息更新;
  4. Driver App:客户端执行程序;

可以说Executor就是基础执行者的意思,每个Executor 位于名为Worker的特殊实例中,使用多个核心并同时运行指定的Task,然后在计算资源(Executing Notes)上处理汇总。所以Executor配额的动态分配扩展是这次科研的一个重要思路。在《Exploring The Power of Resource Allocation for Spark Executor》中就是从Executor分析并提出Spark性能调优建议,它没有专注于目前主流的从调整配置项优化的方法,而是从jobs特性探讨了Executor配额分配对Spark作业的影响。 通过调整CPU核数和内存大小,调整分为两组监视性能。一个保持CPU更改内存配额。另一个更改CPU保持内存配额。每组分配都要进行十次测试。在每次测试之前,操作系统缓冲区缓存都会被清除,并且不再向集群提交任何工作来测量性能准确度。最后数十个精心设计的实验表明,随着Executor配额的变化,工作阶段之间的执行时间会发生变化,因此工作执行时间会有所不同。相信这个结论有助于Executor资源分配,有助于提高Spark集群的利用率。

Spark有近200个配置参数,其中一些参数对系统有很大影响。我们可以调整这些参数以改善性能或满足特定要求。Spark允许用户根据参数调整参数部署环境或应用程序功能。因此,应用程序性能模型对于为正确的系统配置提供建议非常重要。《A gray-box performance model for Apache Spark》中提出了基于机器学习算法的Spark应用程序的灰盒性能模型。对于给定的Spark应用程序的输入数据的大小和一些关键系统参数,该性能模型能够根据历史信息预测其执行时间。为了获得更准确,该模型也考虑了Spark的基本硬件信息和资源分配策略。简单说,该模型选择了每个Executor分配的CPU核数,内存大小,Driver分配的核数等十余个参数性能参数作为模型输入,将性能预测作为一个回归问题,估计可用资源后,预估出一个程序的阶段执行时间来作为预测结果。论文不止是Spark在Wordcount程序执行时每阶段的参数的良好展示,更是每种Spark配置参数对性能影响的完美实验,结果也较令人满意。我认为此灰盒模型有助于进一步研究Apache Spark,可以为系统管理员提供有关配置的建议,并且如果利用算法来预测相对性能改进并指导性能调优过程,在性能调整方面此模型也很有帮助。

Apache Spark Streaming是一个基于Apache Spark API的扩展,支持实时数据流的处理,它能够在微批处理间隔内执行任务,并且具有可扩展,高吞吐量,容错的特点,且可以使用复杂的算法进行处理。最后,处理后的数据可以推送到文件系统,数据库等。实际上,Spark的机器学习和图形处理算法就可以应用于数据流。流式数据分析在许多应用中变得越来越重要,Spark Streaming的执行过程和数据处理过程也是spark研究的相关学习过程。然而虽然Executor可并行执行,但当数据流太大或处理逻辑过于复杂时,可能会出现不同的情况,从而导致处理延迟和延迟增加。所以Spark Streaming也可以通过改变动态调度方法来让提高性能。《Adaptive Scheduling Parallel Jobs with Dynamic Batching in Spark Streaming》提出了A-scheduler,一种自适应调度方法,可以运用在Spark Streaming中动态调度并行微批处理作业,并自动调整调度参数以提高性能和资源效率。该方法根据数据依赖性动态调度多个并发作业,并自适应地调整作业之间的作业并行度和资源份额。文中实验结果表明,与默认的Spark Streaming调度器USGov相比,具有动态批处理的A-scheduler可以将端到端延迟减少38%,同时分别将工作负载吞吐量和能效提高23%和15%。Spark在调度由多个作业组成的工作负载时效率很低,A-scheduler方法则可以显着提高现有Spark作业调度程序的应用程序性能和能效。若其对所以的Spark工作负载仍有适用性和有效性。那么这个方法也许会是一个相对较为完善的Spark动态资源调度方法,无论是完成算法实现或是成功改善该方法都会对本次研究提供很大帮助。

最后则是本次翻译的《Adaptive performance model for dynamic scaling Apache Spark Streaming》则更是一篇对本次项目有着极大帮助的文献。同样是基于Apache Spark Streaming,文中提出了自适应性能模型,它可以在AWS上动态扩展并扩展Apache Spark Streaming平台。该模型根据延迟处理来调配系统资源,并分别通过三个实验来展示该模型以减少Executor的CPU核数和增加核数,以及在AWS节点扩展Executor, Worker三种情况下该模型的调度效果,结果显示该模型都表现较为理想。

总结:

上述论文都是对本次科研有较高帮助的文献,无论是对Executor的探索或是之后的性能模型和A-scheduler这种自适应调度算法,都是本次课题各个阶段的一种先例,无论是从Apache Spark的Executor配额的动态分配,或是到CPU内存等硬件资源的动态分配,都给了我较多的思考思路,相信在之后的研究过程中,我也会对这些文献中的核心有更深刻的理解最后对我的研究也产生全新的思路开拓。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版