第 9 期 卞琛等:基于分配适应度的 Spark 渐进填充分区映射算法 ·135·
由于会在作业执行过程中进行数据的二次迁移,因
此,相比于设计分区策略解决数据均衡问题的方
法,SkewTune 具有较大的计算代价。文献[26]在系
统中添加 Sketch-based 数据结构,用于分区容量的
实时统计和动态调配,并通过设计的分组算法将分
区指派给相应的 Reduce 端,达到数据均衡分配的
目标。
另外,一些研究成果期望通过了解近似的数据
分布制定合理的分区策略解决数据均衡问题。文献[27]
提出一种基于采样的分区策略。该策略通过在 Map
端增加独立的采样进程获得近似数据分布,采样达
到阈值后对已生成的分区进行拆分和重组,从而提
高数据分配的均衡性。文献[28,29]提出精细分区和
动态拆分 2 种算法,系统首先通过精细分区算法生
成固定数量的分区,同时进行采样获得近似数据分
布,当 Map 任务完成一定比例后,触发动态拆分函
数,达到数据合理分配的目标。但与上一研究成果
不同的是,系统将采样函数附加到 Map 任务中,避
免了复杂的通信开销。上述 2 种方法都是先采用原
生的散列方法生成分区,当采样达到阈值后进行有
且仅有一次的分区调整,因此,阈值的设定非常关
键,如果调整时机过早,由于数据分布的精确度不
足,数据分配的合理性难以保证,而调整时机过晚
则会延迟数据传输,影响计算效率。文献[30]提出
SCID 策略,该策略首先基于蓄水池采样法获得近
似的数据分布,在 Map 端根据数据量大小对元组进
行排序,然后将数据迭代填充到所有分区,若填充
数据量超过分区容量阈值,则启动一次拆分过程,
从而确保每个分区数据量相对均匀。文献[31,32]提
出基于数据块的采样分区方法,该方法将原生的键
值对转换为<blocking_key,entity>形式,通过设计评
估函数对块内数据进行评估,对不符合条件的数据
块进行调整,但分区调整仅有一次,没有解决如何
定义分区调整时机的问题。文献[33]提出 LIBRA 策
略,该策略通过系统空闲资源槽执行采样程序,从
而以更轻量级的方式获取近似数据分布,分区策略
仍采用二次划分机制,对超限数据元组进行拆分,
保障数据分配的均衡性。文献[34]提出先通过采样
制定分区函数,再执行任务填充分区的方法。该方
法在 Map 任务执行前先运行采样进程,对输入数据
进行 25%的随机采样,通过采样结果获得数据分布
并制定分区函数,然后启动 Map 任务,采用制定的
分区函数填充数据。文献[35]提出 LEEN 策略,通
过对输入数据的预扫描获取数据分布,在 Map 任务
执行过程中对 key 值的频率进行统计,然后综合数
据分布和 key 频率统计设定合理的分区函数。该策
略有效提高了数据分配的均衡性,但由于在原生系
统上嵌入了多个功能模块,算法的时间复杂度较
高。
其他一些研究成果则考虑不同的工作场景和
应用需求。文献[36]没有在即有的分区策略上做任
何改进,而是通过调整 HDFS 即有的副本策略,提
高数据访问本地性,缓解数据倾斜的影响。文献[37]
通过采样感知数据的近似分布,综合距离判定和开
销矩阵制定最优的调度策略,以减少通信开销的方
法缓解数据倾斜的影响。文献[38]
通过支持向量机
模型对集群环境进行性能预测,并设计结构感知的
数据分区方法。文献[39]针对进化采样方法样本密
度不均衡问题,将高密度样本和低密度样本分类管
理和采样,保障采样集的均衡性。文献[40]提出实
体匹配应用中的数据均衡方案,通过自适应调整的
数据窗口,实现近邻排序数据的均匀分配。
上述研究成果普遍以数据的均衡分配为目标,
未考虑节点计算能力差异和当前工作负载状况,仅
适用于同构且任务分布相对均匀计算集群。本文与
以上研究成果的不同之处在于,充分考虑分区映射
算法在异构集群和虚拟集群的适应性问题,从并行
计算模型的基本原理入手,将节点计算能力和当前
工作状况作为 Shuffle 过程数据分配的主要依据,设
计了渐进填充分区映射算法,提高数据分配与节点
计算能力的匹配度,优化作业执行效率。通过分析
作业的执行过程,建立了执行效率模型,提出了
RDD 计算代价和作业执行时间的定义,建立 Shuffle
过程模型,提出了分配适应度的定义,并证明定义
与作业执行效率的逻辑关系。根据渐进填充分区映
射算法的问题定义进行求解,提出了分区扩展算
法、分区筛选算法和分区映射算法,通过扩展式分
区,为数据的渐进填充奠定基础。通过适度倾斜的
数据分配,充分利用高效工作节点的计算能力,减
少 Reduce 任务的同步开销,从而从整体上优化作
业执行效率,改进系统性能。
3 问题的建模与分析
分析作业的并行执行机制,建立执行效率模型
和 Shuffle 过程模型,提出渐进填充分区映射的问题
定义,为渐进填充分区映射算法提供理论基础。
2017188-3