论文部分内容阅读
分布式内存计算平台Spark是大数据处理的最新技术进展。内存资源是Spark平台的核心资源,合理的内存配置能够为Spark负载的运行提供性能保障。Spark内存配置是指依据负载特征和平台特性为Spark负载进行内存资源的分配管理。目前Spark内存配置是以用户为导向的静态配置,由于用户缺乏对Spark平台机理的了解,通常为负载过量配置内存资源,该方法会导致内存资源使用率低下,在多负载场景下降低了负载执行效率。针对当前Spark内存配置方法的不足,本文提出了负载特征驱动的Spark内存配置方法,在Spark负载内存访问特征量化分析的基础上分类构建负载的内存需求预测模型,实现Spark内存精准配置。(1)提出负载特征驱动的Spark内存配置方法框架。本文通过量化实验验证Spark负载具有可分类性。在该结论的基础上,所提出的方法框架包含两个主要阶段,离线阶段和在线阶段。在离线阶段,首先将Spark负载从内存需求的维度进行分类,并对每个负载类别分别构建Spark负载内存需求模型。在线阶段则使用小的测试数据集进行负载类别匹配,根据该类别中的内存需求预测模型对该负载进行内存需求评估。(2)提出基于经验的Spark内存配置方法。在该方法中,提出以“数据膨胀率”指标作为Spark负载内存访问特征分类指标,并使用该特征指标及其变化率进行Spark负载分类;在分类的基础上,依据Spark基准测试负载的内存需求经验计算公式,构建内存需求预测模型。(3)提出了基于机器学习的内存配置方法。该方法首先通过对Spark软硬件系统栈指标的筛选和精简,选取Spark负载内存访问特征指标;依据上述特征指标采用K-Medoid算法对典型Spark负载进行分类;针对每一类负载,使用逐步回归法自动筛选出对该类负载内存需求有显著影响的平台配置参数,并使用基于支持向量机(SVM)的回归算法分别为每一类负载构建Spark负载内存需求预测模型。(4)最后我们使用典型Spark负载集对两种内存配置方法进行了性能评估。实验结果表明,与系统缺省的静态配置相比,两类方法均获得了较好的负载执行效率和内存资源利用率。两类方法中,基于机器学习的内存配置方法具有更准确的内存需求预测和更高的内存利用率。