一种基于Value均值的MapReduce任务分配策略
2019-04-30薛愈洁
薛愈洁
(太原学院,山西 太原 030001)
0 引言
大数据是巨量数据集合,与传统数据不同,其不仅数据量庞大,数据维度高,而且数据结构复杂,处理难度大,因此对大数据的精确高效处理一直都是研究的热点。目前,分布式计算是解决大数据难题的重要方法,由google公司提出的MapReduce编程思想是并行与分布式计算的重要思想[1-2],是一种简化的并行计算模型,其核心是“分而治之”——将数据处理流程进行Map过程和Reduce过程的高度抽象划分,虽然两者的计算相互独立,但是又通过Map输出与Reduce输入相互联系。
大多数并行与分布式计算平台对于MapReduce编程思想都有相应的实现[3]——常见的有Hadoop平台与Spark平台,该类平台将内部并行运行机制进行封装,使算法设计逻辑与具体实现流程相对独立,将程序并行运行在分布式系统上[4],提高了程序设计的高效性。作为较成熟的编程思想,目前对MapReduce编程思想主要研究集中在借助现有的分布式计算机平台,对已有算法的可并行化研究,优化数据处理过程,提高数据处理性能,实现处理效果的提升[5-6],而对于MapReduce自身的任务分配机制研究不够充分。利用MapReduce思想,在数据处理过程中,容易出现相同的Map值的Value集合数据量差别巨大的情况,导致不同的Reduce任务工作量不同,造成集群负载不均衡问题,相对降低了数据处理效率。目前大多数并行与分布式计算平台通过静态HDFS文件系统的数据块容量解决任务分配不均衡问题,但效果有待提高。为了能更好地提升MapReduce框架的计算性能,本文通过分析MapReduce思想中Map任务与Reduce任务处理机制,针对MapReduce思想中Reduce任务所在节点的负载不均衡现象,提出一种基于Value均值的MapReduce任务分配策略,通过制定Value均值收敛规则,使Value集合能够相对均匀地分布于不同Reduce任务中,使Reduce任务计算节点负载趋于均衡,不仅提高了数据处理效率,而且具有广泛性。
1 MapReduce思想
1.1 基本原理
MapReduce编程思想[7-8]的核心是将单个复杂的任务划分为多个简单的任务分别进行处理,分为Map任务与Reduce任务。Map任务主要用于数据格式化处理,将数据格式化为 图1 MapReduce处理过程Fig.1 The processing of MapReduce 由图1可知,不同Map任务会产生不同的Key,Reduce任务会将相同Key值的Value值进行合并。每个Reduce任务会处理相同Key值的Value值集合,不同Key值的Value集合被分配到不同的Reduce任务中,导致Reduce任务量不同。 定义1:在MapReduce任务中,若不同key值所划分的Reduce任务量相差不大,则Reduce任务所在节点的负载相差不大,称Reduce任务分配相对均衡状态(RBS状态);反之,则称Reduce任务分配相对不均衡状态(RIS状态)。 传统的MapReduce中Map任务不改变Key值,将原始数据格式化成 数据处理时,两组List T(S2)=T(S1)×10^3。 由此可得,处理集合S2的时间开销T(S2)大于处理集合S1的时间开销T(S1),为T(S1)的10^3倍。 传统任务分配算法(TTA)无法均衡不同Reduce任务的数据集合,导致每个Key值的Reduce任务待处理的数据量存在差异。针对上述问题,提出基于Key值的任务分配策略(KTTA),Map任务执行完毕后,Value任务先计算每个 其主要过程如下: 步骤1:输入数据集InputDataSet(IS),通过Map任务,将IS数据集输出为 步骤2:获取每个key值所对应的 步骤3:通过Map任务,将所有大于ε的List 步骤4:将Reduce任务分配于不同计算节点,执行时间t后,返回执行步骤2,使Reduce任务分配趋于相对动态均衡状态(RBS状态)。 实验平台: 1)Linux Ubuntu 14.04,Apache Hadoop-2.6.5运行平台。 2)Eclipse集成开发环境,java 1.7.0-55 编程语言。 数据集:Automobile数据集、Air Quality数据集、Bike-Sharing数据集、Computer Hardware数据集,分别使用TTA策略与KTTA策略实现算法。 四个实验数据集分别在两种不同策略的算法下的时间开销T(s)如表1所示。 表1 不同策略的时间开销(四个数据集)Table 1 The cost of different strategies(four data sets) 由表1可知,实验中Automobile数据集、Air Quality数据集、 Bike-Sharing数据集和Computer Hardware数据集,TTA与KTTA两种任务分配策略时间开销不同,KTTA策略比TTA策略效率分别提高18.56%、21.51%、18.13%、16.73%,总体KTTA策略比TTA策略数据处理效率高19.143%,并且不同数据集,效率提高程度不同。经过分析,效率的差异性同时取决于同一Key值Value集合数据量的差异,Value集合数据量越多,效率提升越明显,验证了KTTA策略的高效性和广泛性。1.2 处理过程
2 Key值标签
2.1 传统任务分配(Traditional Task Allocation,TTA)
2.2 基于Key值任务分配(Key-Traditional Task Allocation,KTTA)
3 实验结果及分析
3.1 实验准备
3.2 实验结果及分析