一种MapReduce计算模型中基于遗传算法的数据平衡方法技术

技术编号:8701957 阅读:324 留言:0更新日期:2013-05-15 13:36
一种MapReduce计算模型中基于遗传算法的数据平衡方法,先获取全局Map输出信息,利用遗传算法进行组合优化:先将元数据收集,进行编码,然后对种群进行多次随机划分,每次划分形成一个基因组,计算每个基因中所有子集的适应度函数值,并计算出每个目标函数的概率,对每一个基因的适应度进行评价的基础上将选择算子应用于基因组,利用轮盘赌算法随机的选择出基因组中的若干个优质基因,对选出来的基因进行交叉运算,再进行变异操作,经过多轮进化之后依据精英保留策略选择保留的基因,并对基因进行解码,就可获得对元数据的一个优化的组合,保证每个reducer所处理的数据量是近似相等的,本发明专利技术解决了reduce阶段输入数据不均衡的问题,节约计算资源,减少计算成本。

【技术实现步骤摘要】

本专利技术属于计算机MapReduce计算模型
,具体涉及。
技术介绍
Hadoop是由Apache开源组织开发的一个具有高可靠性和高可扩展性的存储与分布式并行计算平台,最早是作为开源搜索引擎项目Nutch的基础平台而开发的,之后从Nutch项目中独立出来,成为典型的开源云计算平台之一。Hadoop核心实现了按块存储的分布式文件系统(Hadoop Distributed File System, HDFS)以及用于分布式计算的MapReduce计算模型。MapReduce计算模型分为Map和Reduce两个大的任务处理阶段。在MapReduce处理过程中,Map阶段将输入数据转化成〈Key, Value〉键值对的数据形式,提供给Reduce阶段进行进一步的处理。在Reduce接受Map输出的键值对数据并对其进行处理前,还需要经过一个Shuffle阶段。Shuffle阶段主要对各个Map任务的输出数据进行混洗,并收集这些Map任务输出数据中需要由同一个reduce任务进行处理的数据。由于收集到的数据规模可能较大,Shuffle阶段会将数据合并存储到reduce任务所在节点的本地文件系统中,从而减少内存空间占用率。每个Map任务依据reduce任务的数量将输出数据划分成相同份数的分区个数,单个reduce任务从所有Map任务中收集与之相对应的分区数据,所有具备相同key值的Map输出键值对将分配到同一个reduce任务进行处理,从而保证各个reduce的最终处理结果是建立在全局范围上的。Shuffle阶段的特点决定了 Reduce阶段各个reduce任务接受的数据量有可能极不平衡,从而导致Reduce阶段计算倾斜的问题。I)由用户自定义分区策略导致的Reduce计算倾斜MapReduce作业提交时根据指定的分区策略,Map阶段需要划分输出分区的个数,建立Map输出与reduce输入之间的对应关系。用户自定义的分区策略依据实际应用需求,将相互关联的数据划分到同一个分区中,由同一个reduce任务完成处理,保证最终结果的正确性,但同时也可能导致各个reduce任务处理数据量不平衡。当MapReduce作业不关心数据的具体分区时,为快速完成Map输出数据的分区划分,通常采用的是hash分区法,通过Key的hash值确定整个〈Key, Value〉键值对的所属分区号,即分区号partitionNum=hashCode (Key) %REDUCER_NUM。这种方法受制于hash计算冲突以及reduce数目有限等因素,很可能出现大量的key汇聚到同一分区上,造成各reduce任务上的数据量不平衡。2)由输入数据自身特征造成的Reduce计算倾斜由于分区操作是在每一个Map的〈Key,Value〉键值对数据输出后执行,往往是依据Key的某些特点来确定其分区位置,缺乏Key对应Value数据规模的全局统计信息。因此,即使分区策略能保证各个分区中key的数量大致平衡,但由于Map阶段输入数据的自身特点,某些特定的key所对应的Value数据量远大于其他key对应的Value量,从而导致部分reduce任务要处理的数据量过大。这种现象通常出现于输入数据中存在一些热点数据的情况。一般情况下,Reduce阶段的输入数据倾斜将使得某些reduce任务相对于其他reduce任务执行时间增加,延长了整个Reduce阶段的运行时间,最终影响整个MapReduce作业的完成时间。
技术实现思路
为了克服上述现有技术的缺点,本专利技术的目的在于提供,减少了任务reducer的处理时间,进而减少了整个MapReduce的处理时间,能很好的节约计算资源和减少计算成本。为了达到上述目的,本专利技术采取的技术方案为:,包括以下步骤:1 )、获取全局Map输出信息,得到reduce任务处理的分区的元数据信息,Reduce元数据的获取过程为:1.1、每个Map任务在完成处理过程并将输出结果写入本地磁盘后,会通过TaskTracker利用心跳信息发送任务完成消息到JobTracker ;1.2、JobTracker为每个MapReduce作业维护一个Map任务完成消息队列,当某个运行reduce任务的TaskTracker请求获取Map任务时,依据该reduce任务所属的作业,从相应队列中取出消息并传递给TaskTracker ;1.3、同一作业中的reduce任务从所在的TaskTracker获取Map任务完成消息,从中提取Map任务的运行时信息,包括Map任务编号,执行节点,利用这些信息,reduce任务建立与执行节点间的HTTP连接,并请求Map任务输出的元数据信息;1.4、TaskTracker依据请求的Map任务编号,从本地文件系统中读取相应Map任务输出的索引文件,并发送给请求的reduce任务;1.5、reduCe任务合并不同索引文件中的相同编号虚拟分区,汇总各个虚拟分区中所有同种类型〈Key,Value〉键值对的数据量,由于每个reduce任务要获取所有map任务输出的元数据信息;2)、对Map的输出数据进行处理,reduce任务获取各个map任务输出的分区原始数据;将汇总后的元数据提交给重分区器,采用基因算法对元数据进行平衡分区,基因算法是对二进制位串进行操作,其具体步骤如下:2.1、将Map输出数据的元数据收集起来放在一个集合中,作为一个种群,对种群中的每个元素进行编码,所谓的编码就是用“O、I”组成的代码表示每一个元素,采用的编码方式是用I的个数来表示元素所在集合中的下标,对该种群进行随机划分,划分成N个子集,其中N与reduce的个数相对应,每一次的划分形成一个基因,经过多次划分之后,形成一个基因组;2.2、在基因算法中适应度函数是用来衡量遗传个体对于生存环境的适应程度,适应度越高的个体获得更多的复制机会,反之亦然,因此,定义一个适应度函数巧一SQ/n公式( ),其中,S=(Zf=-Si) /n为全部子集的元素之和的平均值,公式(i)中目标函数描述的是各个子集合到平均值的平均距离,利用该公式(I ),对每一个基因计算其适应度函数,形成一个新的集合,接着求出每一个基因适应度函数的概率,即一个基因的适应度函数的值除以整个基因组的适应度函数值之和;2.3、将选择算子应用于基因组,采用的选择算子是轮盘赌选择法,利用随机函数产生一个在之间的随机数,判断其在基因组中的适应度概率序列中的位置,如果它最多能大于序列中的第m个值,则表示m号基因被选中,自由指定需要选择的基因的个数;2.4、对选出来基因进行交叉运算,即把优质基因的部分结构加以替换重新组合形成新的基因,采用单点交叉算子,具体操作是:随机设定一个交叉点,对应轮盘赌选择算法选择出来的基因,进行交叉,即该交叉点前后的两个基因的部分结构进行互换,并生成两个新个体,并且确保交换之后的基因组不会出现有空集合的情况,设定一个nullGen标志,遍历交叉后的基因组,如若发现有空集合存在,即将nullGen标志设置为false,并以此来标识该删除的基因;2.5、对交叉后的基因进行变异运算,变异运算是依据变异概率将基因组中某些基因用其它的基因来替换从而形成一个新的个体,采用固定位变异算子,并且将变本文档来自技高网
...

【技术保护点】
一种MapReduce计算模型中基于遗传算法的数据平衡方法,其特征在于,包括以下步骤:1)、获取全局Map输出信息,得到reduce任务处理的分区的元数据信息,Reduce元数据的获取过程为:1.1、每个Map任务在完成处理过程并将输出结果写入本地磁盘后,会通过TaskTracker利用心跳信息发送任务完成消息到JobTracker;1.2、JobTracker为每个MapReduce作业维护一个Map任务完成消息队列,当某个运行reduce任务的TaskTracker请求获取Map任务时,依据该reduce任务所属的作业,从相应队列中取出消息并传递给TaskTracker;1.3、同一作业中的reduce任务从所在的TaskTracker获取Map任务完成消息,从中提取Map任务的运行时信息,包括Map任务编号,执行节点,利用这些信息,reduce任务建立与执行节点间的HTTP连接,并请求Map任务输出的元数据信息;1.4、TaskTracker依据请求的Map任务编号,从本地文件系统中读取相应Map任务输出的索引文件,并发送给请求的reduce任务;1.5、reduce任务合并不同索引文件中的相同编号虚拟分区,汇总各个虚拟分区中所有同种类型键值对的数据量,由于每个reduce任务要获取所有map任务输出的元数据信息;2)、对Map的输出数据进行处理,reduce任务获取各个map任务输出的分区原始数据;将汇总后的元数据提交给重分区器,采用基因算法对元数据进行平衡分区,基因算法是对二进制位串进行操作,其具体步骤如下:2.1、将Map输出数据的元数据收集起来放在一个集合中,作为一个种 群,对种群中的每个元素进行编码,所谓的编码就是用“0、1”组成的代码表示每一个元素,本专利技术采用的编码方式是用1的个数来表示元素所在集合中的下标,对该种群进行随机划分,划分成N个子集,其中N与reduce的个数相对应,每一次的划分形成一个基因,经过多次划分之后,形成一个基因组;2.2、在基因算法中适应度函数是用来衡量遗传个体对于生存环境的适应程度,适应度越高的个体获得更多的复制机会,反之亦然,因此,定义一个适应度函数 min { Σ j = 1 n | S j - S | } / n 公式(1),其中,为全部子集的元素之和的平均值,公式(1)中目标函数描述的是各个子集合到平均值的平均距离,利用该公式(1),对每一个基因计算其适应度函数,形成一个新的集合,接着求出每一个基因适应度函数的概率,即一个基因的适应度函数的值除以整个基因组的适应度函数值之和;2.3、将选择算子应用于基因组,采用的选择算子是轮盘赌选择法,利用随机函数产生一个在[0,1]之间的随机数,判断其在基因组中的适应度概率序列中的位置,如果它最多能大于序列中的第m个值,则表示m号基因被选中,自由指定需要选择的基因的个数;2.4、对选出来基因进行交叉运算,即把优质基因的部分结构加以替换重新组合形成新的基因,采用单点交叉算子,具体操作是:随机设定一个交叉点,对应轮盘赌选择算法选择出来的基因,进行交叉,即该交叉点前后的两个基因的部分结构进行互换,并生成两个新个体,并且确保交换之后的基因 组不会出现有空集合的情况,设定一个nullGen标志,遍历交叉后的基因组,如若发现有空集合存在,即将nullGen标志设置为false,并以此来标识该删除的基因;2.5、对交叉后的基因进行变异运算,变异运算是依据变异概率将基因组中某些基因用其它的基因来替换从而形成一个新的个体,采用固定位变异算子,并且将变异概率设为0.1,以期获得最优解,固定位变异算子是指对单个基因固定的指定的某一位或某几位基因作变异操作:原有基因为0的,则变为1,原有基因为1的,则变为0,经过变异操作之后,对变异后的基因进行非空检查,保证编译后的基因依然会有N个子集;2.6、以上描述了一轮进化过程,经过多轮进化之后依据精英保留策略选择保留的基因,采用的基因保留策略是:经过以上步骤后,计算每一个基因的目标函数值,并将其与基因组中所有基因的目标函数值相比较,将前者小于后者的基因保留下来;2.7、对保留下来的基因进行解码,就可获得对元数据的一个优化的组合,即将元数据划分成N个大小基本相当的子集,然后,将每个子集对应的元数据分配到一个reducer上,这样就保证每个reducer所处理的数据量是相当的。FDA00002743558300022.jpg...

【技术特征摘要】

【专利技术属性】
技术研发人员:伍卫国樊源泉魏伟朱霍高颜
申请(专利权)人:西安交通大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1