一种实现作业内的MapReduce数据本地化的方法技术

技术编号:12060681 阅读:55 留言:0更新日期:2015-09-17 11:08
本发明专利技术提供一种实现作业内的MapReduce数据本地化的方法,属于计算机技术领域。本发明专利技术通过改变作业内的任务调度算法,使得作业的任务数据本地化程度能够得到进一步提升。针对某一指定作业,本发明专利技术方法在调度一个计算任务给一个计算节点的时候,通过综合考虑计算节点的关于该作业的剩余本地化数据块数目和通过一系列处理计算得来的关于该计算节点的未来预计需要处理的任务数目来进行不同任务的分配。本发明专利技术提供的方法无需预先测量各个计算节点的计算性能,实施灵活方便,且不影像局部作业的执行效率,能在最大程度上降低Map阶段的网络带宽占用,从而提高集群作业并行度,同时各个作业的整体执行时间也得到明显缩短。

【技术实现步骤摘要】

本专利技术属于计算机
,具体涉及一种实现作业内的MapReduce数据本地化的优化方法。
技术介绍
随着分布式计算模型的发展,在MapReduce分布式计算模型之后,涌现出了很多其他的分布式计算模型,例如Spark和Storm。这些模型在数据处理方面各有侧重,所以在大型互联网公司,这些分布式模型都是同时搭载在一个物理集群上的。各个分布式计算模型虽然都可以做到互相隔离,但是整个物理集群的网络带宽资源都是公用的,所以提升MapReduce计算模型的网络带宽消耗,减少MapReduce计算模型的网络带宽消耗量,不仅对同一物理集群的其他计算模型有利,而且与此同时可以提升MapReduce计算模型中作业的执行效率。MapReduce集群的网络带宽消耗的主要由如下几种情况构成:1.用户从本地上传数据到HDFS上造成的网络带宽消耗;2.Shuffle阶段将Map阶段的输出传输到Reduce阶段造成的网络带宽消耗;3.Reduce阶段将处理结果存储到HDFS所造成的网络带宽消耗;4.非本地化的任务造成的网络带宽消耗。上述情况1、2、3下造成的网络带宽消耗是不可避免的,其中情况2的带宽消耗可以通过在Map阶段设置Combiner ( —种在Map端的同Reducer作用类似的函数)和压缩Map阶段的最终输出数据等措施来缓解。情况4的网络带宽消耗主要是由于非本地化任务需要通过网络远程拷贝数据到本地作处理,这种情况造成的网络带宽消耗可以通过优化调度算法来提高数据本地化任务的比率,从而避免不必要的带宽消耗。另外,通过实验发现,大部分非本地化任务都是在Shuffle阶段开始后才出现的,而这时候出现的非本地化任务将同Shuffle阶段竞争网络带宽资源,从而拖延作业自身的执行进度。针对提升Map阶段的数据本地化程度的调度策略非常多,但都存在一些实用性不高,适用范围不广等问题。Zaharia等提出一种延迟调度的算法能有效提升数据本地化程度(“Delay scheduling:a simple technique for achieving locality andfairness in cluster scheduling,,,in Proceedings of the 5th European conferenceon Computer systems.ACM, 2010, pp.265 - 278.),但这种延迟调度的方法是建立在损失局部作业的执行效率的基础上的,并且这种调度算法适用性不广,当只有一个或几个作业在运行时,并不能取得最优的数据本地化程度和作业整体执行时间。Xie等提出一种根据计算节点性能来提前分布数据的方法(“Improving mapreduce performance throughdata placement in heterogeneous hadoop clusters,,,in Parallel&DistributedProcessing, Workshops and Phd Forum(IPDPSff), 2010 IEEE Internat1nal Symposiumon.1EEE, 2010, pp.1 _ 9.),这种方法需要预先测量各计算节点的性能,在可以通过调整参数而动态设置计算节点计算资源的MapReduce平台下,这种方法实用性不高。
技术实现思路
本专利技术侧重提升MapReduce任务数据本地化程度,具体实施手段是通过改变作业内的任务调度算法,使得该作业的任务数据本地化程度能够得到进一步提升。本专利技术提出的调度策略可以同时工作在同构和异构集群环境。针对某一指定作业,该调度策略在调度一个计算任务(Task)给一个计算节点(TaskTracker)的时候,通过综合考虑计算节点的关于该作业的剩余本地化数据块(Block)数目和通过一系列处理计算得来的关于该计算节点的未来预计需要处理的任务数目来进行不同任务的分配。—种实现作业内的MapReduce数据本地化的方法,其流程如图1所示,在拥有η个物理计算节点的集群上,针对得到调度的具体作业Α,在其实施过程中按以下方法实现本地化:步骤1:由于集群有同构和异构之分,在计算尚未开始时假设集群是同构的,即假设所有物理计算节点的计算性能Pi均为1,其中ie ;对于作业Α,假设该作业对应的数据块个数为b个,且每个数据块在HDFS上的默认备份数为3,设各计算节点上的数据块个数为FTi,则总数据块数量Σ Fli= 3b ;以各计算节点的关于作业A的本地化数据块数量为参量建立小顶堆并进行作业A的第一轮任务分配,即为每个物理计算节点分配一个数据块;第一轮任务分配过程中,首先对位于小顶堆堆顶对应的计算节点分配任务,分配完成后,对剩余的尚未分配的各计算节点按上述方法重新构建小顶堆,并对新的小顶堆堆顶对应的计算节点分配任务,按上述方法进行重复操作直至所有物理计算节点均分配到第一个计算任务;每个计算节点处理其分配到的第一个计算任务,并计算每个物理计算节点处理各自申请的第一个计算任务所需要的时间,由此得到每个物理计算节点的实际计算性能RPTi,其中i = 1,…,n ;步骤2:计算各物理计算节点针对作业A还需要处理的任务个数PBTi,计算方法如下:作业A的第一轮任务分配及计算完成后,对于作业A剩余的m = b_n个数据块,每个物理计算节点应处理的数据块数量CBTi= m.;通常情况下CBTi为非整数,对08?向下取整得整数DCBTi,即CBTi= DCBTi+Si,0 ( S^l,则有m = (DCB11+-+DCBTn)+S,其中S = S1+…+Sn为各计算节点取整后剩余小数累加的和得到的整数未分配数据块数量;设A为集群中计算性能最高与最低的物理计算节点之间的实际计算性能值之比,对Qr向上取整得整数Q,即Q〈Qr+l,计算每个物理计算节点分别再处理Di+Ι,…,Di+Q个数据块所需要的时间加上该计算节点处理完正在处理的任务的剩余时间的和tM,由此得到nXQ个时间数据t1;1,..., t1;Q,…,ti;1,..., ti;Q,..., tn;1,…,tn,Q,按由小到大顺序对所述nXQ个时间数据进行排列并构成一个映射列表,列表中的每一个时间均映射一个其相应的物理计算节点;选取映射列表中前S个时间所映射的S个物理计算节点,统计整个计算集群中第i个物理计算节点在这S个物理计算节点中出现的次数Li;针对第i个物理计算节点,经过计算最终需要处理的数据块个数为PBTi =(DCB1^Li)个,且 m= (PBT1+...+PBTn);步骤三:统计各计算节点当前剩余未分配的本地化数据块数量LTi,并将各数据块当前的标记值设为O ;步骤四:计算各计算节点数据块饱和度SATi,其中SATi= LTi/PBTi,St代表各计算节点上剩余的本地化数据块数量相对根据性能计算的数据块数量,SAt值越大,表明该计算节点存在非本地化的可能性越小;相反,如果SAt值当前第1页1 2 3 4 本文档来自技高网
...
一种实现作业内的MapReduce数据本地化的方法

【技术保护点】
一种实现作业内的MapReduce数据本地化的方法,在拥有n个物理计算节点的集群上,针对得到调度的具体作业A,在其实施过程中按以下方法实现本地化:步骤一:由于集群有同构和异构之分,在计算尚未开始时假设集群是同构的,即假设所有物理计算节点的计算性能Pi均为1,其中i∈[1,n];对于作业A,假设该作业对应的数据块个数为b个,且每个数据块在HDFS上的默认备份数为3,设各计算节点上的数据块个数为FTi,则总数据块数量∑FTi=3b;为每个计算节点分配第一轮任务,即为每个物理计算节点分配一个数据块,每个计算节点处理其分配到的第一个计算任务,并计算每个物理计算节点处理各自申请的第一个计算任务的处理效率,由此得到每个物理计算节点的实际计算性能RPTi,其中i=1,…,n;步骤二:计算各物理计算节点针对作业A还需要处理的任务个数PBTi,步骤三:统计各计算节点关于作业A的当前剩余未分配的本地化数据块数量LTi,并将各数据块当前的标记值设为0;步骤四:计算各计算节点数据块饱和度SATi,其中SATi=LTi/PBTi,SAT代表各计算节点上关于作业A剩余的本地化数据块数量相对根据性能计算的数据块数量的比值,SAT值越大,表明该计算节点存在非本地化的可能性越小;将所有计算节点的饱和度SAT由小至大进行排序构成饱和度序列SA;步骤五:对于某个请求任务的计算节点Ti,若该计算节点的饱和度SATi位于所述序列SA的首位,则直接分配一个数据块给Ti;否则,执行步骤六;步骤六:记计算节点Ti的饱和度SATi位于所述序列SA的第p位,1<p≤n,若该计算节点本地存有一个未分配的数据块,且该数据块的其他备份数据块均不位于所述序列SA的前p‑1个序列号对应的计算节点上,则将该数据块分配给计算节点Ti;否则,执行步骤七;步骤七:此时,对于计算节点Ti上每个尚未分配的本地化数据块,其在所述序列SA的前p‑1个序号对应的计算节点中至少存有一个备份,最多有两个备份;标记计算节点Ti上的所有本地化数据块在所述前p‑1个计算节点上的对应的备份数据块,并将各备份数据块的标记值加1;统计各计算节点最近一次处理一个数据块需要的时间,并将所述的时间等同为各节点后续处理每个本地数据块需要的时间,即:设计算节点Ti上有本地化的数据块B1,B2,...,Bk,设最近一次计算节点Ti上的一个本地化任务对应的数据块的处理时间为TBhistory_i,则若B1,B2,...,Bk在节点Ti上处理,所述每个数据块在节点Ti上的处理时间都为TBhistroy_i;针对所述Ti上的数据块B1,B2,...,Bk,每个数据块在所述序列SA的前p‑1个序列号对应的计算节点中存在有一个或者两个备份数据块,设这些备份数据块所在的计算节点在计算节点集合RCTi中,根据集合RCTi中各计算节点的最近一次本地化任务处理时间来计算各备份数据块在各节点的最短处理时间;若某个数据块在RCTi中只有一个备份并设在节点Tj上,则Tj上次本地化任务处理时间即为该数据块未来得到本地化调度的处理时间;若该数据块有两个备份,则该数据块未来得到本地化调度的处理时间取两个备份所在计算节点的最短调度时;经过计算,k个数据块的备份数据块的最小处理时间序列TLB=[TLB1,TLB2,...,TLBk];计算所述序列SA的前p‑1个序列号对应的各计算节点当前任务的剩余处理时间,因为只有当前任务结束才能再调度其他任务执行;针对所述k个数据块,将其各自备份的最小处理时间与该备份所在计算节点当前任务的剩余处理时间相加,得数据块B1,B2,...,Bk的各备份在所述序列SA的前p‑1个序列号对应的计算节点的最快处理完成时间FTLB1,FTLB2,...,FTLBk;若存在FTLBe,有TBhistory_i<FTLBe,其中1≤e≤k,则分配一个满足TBhistory_i<FTLBe条件的时间FTLBe对应的数据块Be给当前计算节点Ti处理,否则,执行步骤八;步骤八:由于计算节点Ti处理任何一个本地化的数据块都比所述序列SA的前p‑1个序列号对应的计算节点耗时长,所以此轮分配任务过程中,计算节点Ti需要等待即不分配任务,执行步骤九完成此轮任务分配;步骤九:统计计算节点Ti上所有本地数据块的各个备份数据块在所述序列SA的前p‑1个序列号对应的计算节点的最小处理时间TLB1,TLB2,...,TLBk与各数据块在节点Ti上的处理时间TBhistory_i的差值,将所得差值从小到大排序得差值序列DB1,DB2,...,DBk,其中DB1最小;所述p‑1个计算节点中,时间差DB1对应的计算节点Tfirst在经过DB1的时间处理完当前的任务后,选择其本地的数据块B1的备份数据块进行处理;步骤三及步骤七已经对所有数据块赋标记值,在每一轮任...

【技术特征摘要】

【专利技术属性】
技术研发人员:高胜立薛瑞尼管仲洋
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

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

1