论文部分内容阅读
Spark作为基于内存的计算框架,在保留了MapReduce计算模型的容错机制的同时,将数据交换从磁盘级别提高到内存级别,极大提高了大数据计算的处理效率。Spark也非常适用于机器学习领域多次迭代计算的场景,正是由于Spark的基于内存的计算使得Spark框架对于内存非常依赖,内存的使用情况将直接影响到Spark框架的执行速率,而Spark目前仅仅使用LRU算法来对缓存管理,当前的优化工作主要针对于框架的缓存策略,在部分场景下仍然存在低效的缓存替换的问题,本文针对Spark的缓存策略进行研究,主要完成了如下工作:1.针对LRU算法没能考虑RDD的使用情况淘汰掉部分复杂的RDD,以及在缓存替换过程中没有考虑到替换后框架的计算代价,导致重建RDD耗时增加问题,论文提出了一种基于计算代价模型的缓存替换策略,该策略首先建立包括计算代价在内的权重模型,根据新的权重模型进行缓存替换,并基于RDD计算代价模型,选择代价最小的方案进行缓存替换,从而进一步减少重建RDD的时间,提高Spark的执行效率。并将本文策略与权重替换策略和Spark原生的替换策略分别进行实验对比,结果表明,本文策略在数据集较大或者迭代次数多的情况下能够有效提高Spark框架的执行效率。2.针对Spark框架RDD缓存数据恢复机制效率低下的问题,提出一种基于恢复点的RDD缓存快速恢复的策略,将Spark任务以Stage为界限,在每个Stage中分别设置起始恢复点和关键恢复点,并将恢复点数据序列化,当根据RDD血统重建RDD时,直接从恢复点获得数据,缩短了RDD重建的血统路径长度,加速了RDD的重建过程,并在此基础上增加了恢复点清理算法,确保该策略在Spark运行过程中只会占用少量的磁盘空间,节省磁盘资源。并将本文策略与Spark原生数据恢复策略进行实验对比,结果表明,本文策略相比框架原生的数据恢复策略能够加速RDD重建过程,提高Spark的运行速率。3.对本文提出的基于计算代价模型的缓存替换策略、基于恢复点的RDD缓存快速恢复策略进行了设计与实现。论文工作表明,针对Spark的缓存策略进行研究优化,在缓存替换的过程中基于RDD计算代价选择代价最小的方案进行缓存替换,可以降低重建RDD的时延,并将重要RDD序列化,加速RDD的重建过程,进一步减少RDD恢复的时间,提升Spark计算框架的性能,对Spark框架处理大数据有重要意义。