论文部分内容阅读
自Google提出了 MapReduce编程模型后,其作为一种大数据处理工具一直被广泛地使用,如今MapReduce已被认为是最为高效的大数据处理工具之一。然而,MapReduce模型也存在不足,其分区过程中默认的hash分区会使得各个reduce分区的数据出现倾斜状况。为此,本文提出了一种能简易高效地解决MapReduce编程模型中reduce端数据划分造成的数据倾斜问题的算法。本论文主要使用了轻量级的采样方式和启发式的分区划分策略,来实现Reduce端的数据均衡划分。通过与Map的并行执行和对普通键值集的精简来实现轻量级采样,再通过对采样数据的估算构建描述数据分布的负载列表来指导分区划分。本论文首先利用MapReduce框架的InputFormat接口实现了融合在Map中的并行采样,并提出了一种基于随机采样和蓄水池采样采样方法来获取样本数据集合。随后,对采样的数据集合进行收集和合并,找出样本集合中的高频键值,根据高频键值集合数量对普通键值集合进行精简。之后,根据高频键值集合和精简后的普通键值集合来构建真实数据集合的负载列表。最后,根据负载列表中高频键值频率占比的不同,本论文设计了相应的启发式的分区算法。同时,为了应对特大的键值集,本文又提出了带有分裂阈值的改进式的启发式分区算法。实验结果表明,本文的轻量级负载均衡算法能有效地平衡reduce端分区划分时产生的数据倾斜状况,使系统性能得到提升。