论文部分内容阅读
随着分布式计算框架的不断发展和普及,Spark以其先进的设计理念,迅速成为开源社区的热门研究项目。对于大数据计算框架而言,Shuffle过程的设计优劣和性能高低直接影响着整个系统的性能和吞吐量。本文研究的主要内容为Spark Shuffle过程中不同Task司内存分配算法的分析与优化。在分析已有Shuffle优化算法的基础上,发现因各Task对内存需求不均衡而造成Shuffle运行效率低的瓶颈。针对公平分配内存调度算法的不足,提出了一种基于溢出历史的自适应内存调度算法,并通过典型实验证明本文算法能有效提高内存利用率和程序运行效率,提高Spark系统的整体运行性能。本文的主要贡献包括:1) 阐述了分布式计算的主流框架MapReduce,包括MapReduce的编程模型、现状和不足。通过介绍Spark的设计理念分析了Spark对MapReduce模型的改进,比较了两者的优缺点。2)研究了Spark Shuffle的概念、发展及优化过程,通过阅读分析Spark Shuffle的源码研究Shuffle内存调度的思想,指出了公平分配算法存在的不足。3) 提出了基于溢出历史的自适应内存调度算法SBSA,解决Spark Shuffle公平分配内存调度算法影响Shuffle运行效率的问题。本算法详细设计了空闲内存的计算方式、关键Task可从空闲内存借用的内存比例以及Task可用内存的最大阈值。4) 通过典型实验比较了SBSA算法与先来先服务算法、公平分配调度算法的性能差异,实验结果证明本算法可以大大提高数据分布不均匀的应用程序的执行效率。从综合表现来看,本算法能充分利用空闲内存资源,提高资源利用效率,在一定程度上缓解目前内存资源不足的问题。