论文部分内容阅读
移动互联网技术的飞速发展使得数据的规模呈爆炸式增长,大数据处理技术飞速发展,以此为基础的学科也纷纷产生,数据挖掘、机器学习、深度学习,这些全部都依赖于数据的处理速度,Spark作为第二代分布式计算框架,基于内存的计算使其在数据处理的速度上具有先天的优势。RDD(Resilient Distributed DataSets)是Spark中最重要的概念,每个RDD对应一个只读数据集,本文从Spark的RDD持久化机制出发,分析RDD持久化机制存在的内存受限的问题,结合天河机预研过程中提出的远端内存的概念,设计并实现了远端内存缓存方案,该方案使用远端内存优化Spark的存储管理模块;远端内存缓存方案实现了远端内存的专用,使用远端内存存放内存放不下或者从内存中淘汰的RDD,提升了Spark的RDD持久化机制的性能,进而提升Spark数据处理的总体性能。远端内存缓存方案的实现分为两部分。第一部分,通过修改Linux内核把远端内存映射到一段固定的用户态的虚拟内存空间;第二部分,使用buddy算法和slab算法管理这段固定的虚拟内存空间,这段虚拟内存空间用来存放从内存中淘汰或者内存存放不下的RDD的数据,当这段空间也被占满时,则使用LRU算法把其他的RDD数据淘汰到磁盘中。我们使用wordcount应用对远端内存缓存方案进行了测试,远端内存的性能低于内存,当数据量较大时,远端内存的性能高于磁盘。本文还深入研究了Spark的checkpoint机制,分析了checkpoint机制的数据重复计算的问题,我们提出了第一种方案,旨在避免RDD的重复计算,并分析了方案的可行性;基于远端内存缓存方案,我们设计并实现了Auto-Caching方案与Auto-Caching-Remote方案,通过自动把需要checkpoint的RDD缓存在内存或者远端内存来提升checkpoint机制的性能。经过测试,Auto-Caching方案的时间性能最好,Auto-Caching-Remote方案次之,相比优化前,这两种方案给checkpoint的性能带来了可观的提升,而且由于checkpoint的RDD的数据缓存在了远端内存,所以Auto-Caching-Remote方案未给内存带来额外的消耗。