论文部分内容阅读
在当今大数据时代,大规模数据处理主要是基于分布式的并行处理计算,调度在提高大数据并行处理框架的性能方面起着重要作用。Spark作为大数据处理领域最新技术进展,其是一个基于内存计算的并行计算框架,使用多线程任务调度模型。在Spark任务调度过程中不会考虑内存资源,而是由用户设置参数确定任务执行进程中并发执行的任务线程数量。这对任务线程乃至整个应用程序的执行性能造成了潜在限制。为了克服现有的Spark任务调度中存在的这种限制,本文提出一种动态内存感知的Spark任务调度策略(Dynamic Memory-Aware Task Scheduling,DMATS),在符合Spark原有的任务数据本地化调度原则基础上,考虑内存计算资源,并且通过静态和动态的方式,调整任务并发度,使得任务的并发执行总是最适应于任务执行器的计算资源。具体来说,本文主要贡献包括:
1)本文提出了一种任务数据统计方法来计算任务需要处理的数据量以确定每个任务的资源需求。这种方法通过分析基于RDD的Spark执行引擎,查找现有相关信息经由一定的计算处理获得任务处理数据量的值,在较少额外计算开销和通信延迟下,可以得到实际任务处理数据量的结果数值。
2)本文提出了一种计算执行器中初始任务调度并发度的自适应算法,用以确定初始阶段时,在执行器上可以调度的线程任务的初始数量。该算法在保证现有的调度机制性能不受损害的基础上,考虑了任务资源需求以及执行器可用执行内存资源,给出了自适应执行器内存资源的初始任务调度并发度。
3)本文提出了一种任务调度并发度动态调整算法,该算法可以根据先前完成的任务的内存使用情况反馈来动态调整并发度。在这种动态反馈调整变化中,极大地满足了在任务运行时对内存资源的使用需求,不仅可以提升资源利用率,而且可以提高Spark平台整体运行性能。
4)总结上述提出的研究成果,基于Spark的开源平台,实现了基于动态内存感知的Spark任务调度策略系统平台。该系统平台对上述提出的任务数据统计方法以及初始静态和后序动态任务调度并行度调整算法进行了实际应用。采用了性能测试工具HiBench,选取典型的两种类型的负载对该任务调度策略进行性能与资源使用测试实验。结果分析表明,与原生Spark的调度策略相比,其应用执行时间最大缩短了43.64%,平均缩短了27.8%,CPU与内存资源利用率也有明显的提升,平均提升了5.7%和12.3%,并且与其它基于Spark改进的任务调度策略工作相比其提升效果平均高了将近10.6%。
1)本文提出了一种任务数据统计方法来计算任务需要处理的数据量以确定每个任务的资源需求。这种方法通过分析基于RDD的Spark执行引擎,查找现有相关信息经由一定的计算处理获得任务处理数据量的值,在较少额外计算开销和通信延迟下,可以得到实际任务处理数据量的结果数值。
2)本文提出了一种计算执行器中初始任务调度并发度的自适应算法,用以确定初始阶段时,在执行器上可以调度的线程任务的初始数量。该算法在保证现有的调度机制性能不受损害的基础上,考虑了任务资源需求以及执行器可用执行内存资源,给出了自适应执行器内存资源的初始任务调度并发度。
3)本文提出了一种任务调度并发度动态调整算法,该算法可以根据先前完成的任务的内存使用情况反馈来动态调整并发度。在这种动态反馈调整变化中,极大地满足了在任务运行时对内存资源的使用需求,不仅可以提升资源利用率,而且可以提高Spark平台整体运行性能。
4)总结上述提出的研究成果,基于Spark的开源平台,实现了基于动态内存感知的Spark任务调度策略系统平台。该系统平台对上述提出的任务数据统计方法以及初始静态和后序动态任务调度并行度调整算法进行了实际应用。采用了性能测试工具HiBench,选取典型的两种类型的负载对该任务调度策略进行性能与资源使用测试实验。结果分析表明,与原生Spark的调度策略相比,其应用执行时间最大缩短了43.64%,平均缩短了27.8%,CPU与内存资源利用率也有明显的提升,平均提升了5.7%和12.3%,并且与其它基于Spark改进的任务调度策略工作相比其提升效果平均高了将近10.6%。