论文部分内容阅读
在迭代之间使用内存做数据传输的并行计算框架是当前的一个研究热点。与传统的基于硬盘和网络的计算方式相比,使用内存可以减少数据传输的时间。对于数据密集类型的任务,可以将运行时间提升十几倍。在新一代框架快速发展的同时,如何充分利用相对仍然紧缺的内存资源,保证任务的运行效率,成为一个亟待解决的问题。本文基于集群计算引擎Spark,研究了并行计算集群对于内存的使用行为。通过对内存行为进行建模与分析,对内存的使用进行了决策自动化以及替换策略优化。提高了任务在资源有限情况下的运行效率,以及在不同集群环境下任务效率的稳定性。本文的贡献主要有:通过对代码的语义进行分析,实现了内存策略的自动化。即调度器可以自动识别出价值的数据集(RDD)放入缓存,避免缓存存污染的同时,也减轻了程序员的编程负担。在对代码语义分析,获得任务详细信息的基础上,对内存使用的替换策略进行了优化。主要包括RDD大小和权重的计算,操作顺序的优化重排,使用寄存器分配模型加权重信息形成新的替换算法,代替原有的LRU算法以及多级缓存模型的智能化。最后对内存在异构集群群上的行为也进行了初步的分析。最后通过不同的实验,验证了优化后的方案可以提高任务对不同集群环境的适应性,并且在在内存资源相对有限的情况下使任务运行效率更高,使系统的实用性整体增强,对于其他并行系统中的内存使用也有实际的参考价值。