CN104915250B - 一种实现作业内的MapReduce数据本地化的方法 - Google Patents
一种实现作业内的MapReduce数据本地化的方法 Download PDFInfo
- Publication number
- CN104915250B CN104915250B CN201510298897.5A CN201510298897A CN104915250B CN 104915250 B CN104915250 B CN 104915250B CN 201510298897 A CN201510298897 A CN 201510298897A CN 104915250 B CN104915250 B CN 104915250B
- Authority
- CN
- China
- Prior art keywords
- physical computing
- computing nodes
- data block
- task
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明提供一种实现作业内的MapReduce数据本地化的方法,属于计算机技术领域。本发明通过改变作业内的任务调度算法,使得作业的任务数据本地化程度能够得到进一步提升。针对某一指定作业,本发明方法在调度一个计算任务给一个计算节点的时候,通过综合考虑计算节点的关于该作业的剩余本地化数据块数目和通过一系列处理计算得来的关于该计算节点的未来预计需要处理的任务数目来进行不同任务的分配。本发明提供的方法无需预先测量各个计算节点的计算性能,实施灵活方便,且不影像局部作业的执行效率,能在最大程度上降低Map阶段的网络带宽占用,从而提高集群作业并行度,同时各个作业的整体执行时间也得到明显缩短。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种实现作业内的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 and fairness incluster scheduling,”in Proceedings of the 5th European conference on Computersystems.ACM,2010,pp.265–278.),但这种延迟调度的方法是建立在损失局部作业的执行效率的基础上的,并且这种调度算法适用性不广,当只有一个或几个作业在运行时,并不能取得最优的数据本地化程度和作业整体执行时间。Xie等提出一种根据计算节点性能来提前分布数据的方法(“Improving mapreduce performance through data placement inheterogeneous hadoop clusters,”in Parallel&Distributed Processing,Workshopsand Phd Forum(IPDPSW),2010 IEEE International Symposium on.IEEE,2010,pp.1–9.),这种方法需要预先测量各计算节点的性能,在可以通过调整参数而动态设置计算节点计算资源的MapReduce平台下,这种方法实用性不高。
发明内容
本发明侧重提升MapReduce任务数据本地化程度,具体实施手段是通过改变作业内的任务调度算法,使得该作业的任务数据本地化程度能够得到进一步提升。本发明提出的调度策略可以同时工作在同构和异构集群环境。针对某一指定作业,该调度策略在调度一个计算任务(Task)给一个计算节点(TaskTracker)的时候,通过综合考虑计算节点的关于该作业的剩余本地化数据块(Block)数目和通过一系列处理计算得来的关于该计算节点的未来预计需要处理的任务数目来进行不同任务的分配。
一种实现作业内的MapReduce数据本地化的方法,其流程如图1所示,在拥有n个物理计算节点的集群上,针对得到调度的具体作业A,在其实施过程中按以下方法实现本地化:
步骤1:由于集群有同构和异构之分,在计算尚未开始时假设集群是同构的,即假设所有物理计算节点的计算性能Pi均为1,其中i∈[1,n];对于作业A,假设该作业对应的数据块个数为b个,且每个数据块在HDFS上的默认备份数为3,设各计算节点上的数据块个数为FTi,则总数据块数量∑FTi=3b;
以各计算节点的关于作业A的本地化数据块数量为参量建立小顶堆并进行作业A的第一轮任务分配,即为每个物理计算节点分配一个数据块;第一轮任务分配过程中,首先对位于小顶堆堆顶对应的计算节点分配任务,分配完成后,对剩余的尚未分配的各计算节点按上述方法重新构建小顶堆,并对新的小顶堆堆顶对应的计算节点分配任务,按上述方法进行重复操作直至所有物理计算节点均分配到第一个计算任务;每个计算节点处理其分配到的第一个计算任务,并计算每个物理计算节点处理各自申请的第一个计算任务所需要的时间,由此得到每个物理计算节点的实际计算性能RPTi,其中i=1,…,n;
步骤2:计算各物理计算节点针对作业A还需要处理的任务个数PBTi,计算方法如下:
作业A的第一轮任务分配及计算完成后,对于作业A剩余的m=b-n个数据块,每个物理计算节点应处理的数据块数量CBTi=m·RPTi/(RPT1+…+RPTn);通常情况下CBTi为非整数,对CBTi向下取整得整数DCBTi,即CBTi=DCBTi+Si,0≤Si<1,则有m=(DCBT1+…+DCBTn)+S,其中S=S1+…+Sn为各计算节点取整后剩余小数累加的和得到的整数未分配数据块数量;
设Qr为集群中计算性能最高与最低的物理计算节点之间的实际计算性能值之比,对Qr向上取整得整数Q,即Qr≤Q<Qr+1,计算每个物理计算节点分别再处理Di+1,…,Di+Q个数据块所需要的时间加上该计算节点处理完正在处理的任务的剩余时间的和ti,1,…,ti,Q,由此得到n×Q个时间数据t1,1,…,t1,Q,…,ti,1,…,ti,Q,…,tn,1,…,tn,Q,按由小到大顺序对所述n×Q个时间数据进行排列并构成一个映射列表,列表中的每一个时间均映射一个其相应的物理计算节点;
选取映射列表中前S个时间所映射的S个物理计算节点,统计整个计算集群中第i个物理计算节点在这S个物理计算节点中出现的次数Li;
针对第i个物理计算节点,经过计算最终需要处理的数据块个数为PBTi=(DCBTi+Li)个,且m=(PBT1+…+PBTn);
步骤三:统计各计算节点当前剩余未分配的本地化数据块数量LTi,并将各数据块当前的标记值设为0;
步骤四:计算各计算节点数据块饱和度SATi,其中SATi=LTi/PBTi,ST代表各计算节点上剩余的本地化数据块数量相对根据性能计算的数据块数量,SAT值越大,表明该计算节点存在非本地化的可能性越小;相反,如果SAT值越小,表明存在非本地化的任务的可能性越大;特别的,当SAT值小于1时,这部分计算节点将一定存在非本地化任务;将所有计算节点的饱和度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需要等待即不分配任务,执行步骤九完成此轮任务分配;
步骤九:统计计算节点Ti上数据块的各个备份在所述序列SA的前p-1个序列号对应的计算节点的最小处理时间TLB1,TLB2,...,TLBk与各数据块在节点Ti上的处理时间TBhistory_i的差值,将所得差值从小到大排序得差值序列DB1,DB2,...,DBk,其中DB1最小;所述p-1个节点中,时间差DB1对应的计算节点Tfirst在经过DB1的时间处理完当前的任务后,选择其本地的数据块B1的备份数据块进行处理;
步骤三及步骤七已经对所有数据块赋标记值,在每一轮任务分配过程中,若申请任务的计算节点Ti处于等待状态,则将该计算节点的所有本地数据块位于所述序列SA的前p-1个序列号对应的计算节点的备份数据块的标记值加1;
完成此轮的任务分配过程时,再经过时间DB1后解除节点Ti的等待状态,即激活Ti的任务申请;节点Ti在最小的DB1时间之内处于等待状态,当过了DB1的时间后,由于其本地数据块被前面的节点所调度,所以对于被调度的数据块所在的节点上的本地化数据块如果在Ti上有备份,这时候Ti来处理可能会有优势,所以唤醒Ti加入任务申请;
步骤十:重复执行步骤五至步骤九,直至为计算节点Ti分配一个本地化的数据块时止,完成计算节点Ti的任务分配;
进一步的,步骤七中,若存在两个以上的时间FTLBe使得TBhistory_i小于FTLBe,则从中选出对应的、且标记值最高的数据块分配给当前计算节点Ti处理。
本发明的有益效果是:
本发明提出一种可以同时工作在同构和异构集群环境下的MapReduce任务调度方法,该方法无需预先测量各个计算节点的计算性能,实施起来灵活方便,且不会影像局部作业的执行效率,能在最大程度上降低Map阶段的网络带宽占用,从而使得集群作业并行度提高,于此同时各个作业的整体执行时间也得到明显缩短。
附图说明
图1为本发明提供的一种实现作业内的MapReduce数据本地化的优化方法流程图。
具体实施方式
一种实现作业内的MapReduce数据本地化的方法,其流程如图1所示,在拥有n个物理计算节点的集群上,针对得到调度的具体作业A,在其实施过程中按以下方法实现本地化:
步骤1:由于集群有同构和异构之分,在计算尚未开始时假设集群是同构的,即假设所有物理计算节点的计算性能Pi均为1,其中i∈[1,n];对于作业A,假设该作业对应的数据块个数为b个,且每个数据块在HDFS上的默认备份数为3,设各计算节点上的数据块个数为FTi,则总数据块数量∑FTi=3b;
以各计算节点的关于作业A的本地化数据块数量为参量建立小顶堆并进行作业A的第一轮任务分配,即为每个物理计算节点分配一个数据块;第一轮任务分配过程中,首先对位于小顶堆堆顶对应的计算节点分配任务,分配完成后,对剩余的尚未分配的各计算节点按上述方法重新构建小顶堆,并对新的小顶堆堆顶对应的计算节点分配任务,按上述方法进行重复操作直至所有物理计算节点均分配到第一个计算任务;每个计算节点处理其分配到的第一个计算任务,并计算每个物理计算节点处理各自申请的第一个计算任务所需要的时间,由此得到每个物理计算节点的实际计算性能RPTi,其中i=1,…,n;
步骤2:计算各物理计算节点针对作业A还需要处理的任务个数PBTi,计算方法如下:
作业A的第一轮任务分配及计算完成后,对于作业A剩余的m=b-n个数据块,每个物理计算节点应处理的数据块数量CBTi=m·RPTi/(RPT1+…+RPTn);通常情况下CBTi为非整数,对CBTi向下取整得整数DCBTi,即CBTi=DCBTi+Si,0≤Si<1,则有m=(DCBT1+…+DCBTn)+S,其中S=S1+…+Sn为各计算节点取整后剩余小数累加的和得到的整数未分配数据块数量;
设Qr为集群中计算性能最高与最低的物理计算节点之间的实际计算性能值之比,对Qr向上取整得整数Q,即Qr≤Q<Qr+1,计算每个物理计算节点分别再处理Di+1,…,Di+Q个数据块所需要的时间加上该计算节点处理完正在处理的任务的剩余时间的和ti,1,…,ti,Q,由此得到n×Q个时间数据t1,1,…,t1,Q,…,ti,1,…,ti,Q,…,tn,1,…,tn,Q,按由小到大顺序对所述n×Q个时间数据进行排列并构成一个映射列表,列表中的每一个时间均映射一个其相应的物理计算节点;
选取映射列表中前S个时间所映射的S个物理计算节点,统计整个计算集群中第i个物理计算节点在这S个物理计算节点中出现的次数Li;
针对第i个物理计算节点,经过计算最终需要处理的数据块个数为PBTi=(DCBTi+Li)个,且m=(PBT1+…+PBTn);
步骤三:统计各计算节点当前剩余未分配的本地化数据块数量LTi,并将各数据块当前的标记值设为0;
步骤四:计算各计算节点数据块饱和度SATi,其中SATi=LTi/PBTi,ST代表各计算节点上剩余的本地化数据块数量相对根据性能计算的数据块数量,SAT值越大,表明该计算节点存在非本地化的可能性越小;相反,如果SAT值越小,表明存在非本地化的任务的可能性越大;特别的,当SAT值小于1时,这部分计算节点将一定存在非本地化任务;将所有计算节点的饱和度SAT由小至大进行排序构成饱和度序列SA,排在靠前的位置,表示本地化的任务相对较少,在后续的调度中越靠前越优先分配;每次当一个节点分配了一个新的任务,该节点的本地化数据块数量将会改变,而且被分配的数据块的备份所在计算节点的数据块数量也会改变,所以SAT的排序也需要改变,新的排序不需要全局重新排序,只需要一个数据块的备份所在的三个计算节点在其上一次排序的位置上前后移动就可以达到重新排序的目的;
步骤五:对于某个请求任务的计算节点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的备份数据块进行处理;
步骤三及步骤七已经对所有数据块赋标记值,在每一轮任务分配过程中,若申请任务的计算节点Ti处于等待状态,则将该计算节点的所有本地数据块位于所述序列SA的前p-1个值对应的计算节点的备份数据块的标记值加1;
完成此轮的任务分配过程时,再经过时间DB1后解除节点Ti的等待状态,即激活Ti的任务申请;节点Ti在最小的DB1时间之内处于等待状态,当过了DB1的时间后,由于其本地数据块被前面的节点所调度,所以对于被调度的数据块所在的节点上的本地化数据块如果在Ti上有备份,这时候Ti来处理可能会有优势,所以唤醒Ti加入任务申请;
步骤十:重复执行步骤五至步骤九,直至为计算节点Ti分配一个本地化的数据块时止,完成计算节点Ti的任务分配;
进一步的,步骤七中,若存在两个以上的时间FTLBe使得TBhistory_i小于FTLBe,则从中选出对应的、且标记值最高的数据块分配给当前计算节点Ti处理。
Claims (4)
1.一种实现作业内的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需要等待即不分配任务,执行步骤九完成此轮任务分配;
步骤九:统计物理计算节点Ti上所有本地数据块的各个备份数据块在所述序列SA的前p-1个序列号对应的物理计算节点的最小处理时间TLB1,TLB2,...,TLBk与各数据块在节点Ti上的处理时间TBhistory_i的差值,将所得差值从小到大排序得差值序列DB1,DB2,...,DBk,其中DB1最小;所述p-1个物理计算节点中,时间差DB1对应的物理计算节点Tfirst在经过DB1的时间处理完当前的任务后,选择其本地的数据块B1的备份数据块进行处理;
步骤三及步骤七已经对所有数据块赋标记值,在每一轮任务分配过程中,若申请任务的物理计算节点Ti处于等待状态,则将该物理计算节点的所有本地数据块位于所述序列SA的前p-1个序列号对应的物理计算节点的备份数据块的标记值加1;
完成步骤八所述的任务分配过程时,再经过时间DB1后解除节点Ti的等待状态,即激活Ti的任务申请;
步骤十:重复执行步骤五至步骤九,直至为物理计算节点Ti分配一个本地化的数据块时止,完成物理计算节点Ti的任务分配。
2.根据权利要求1所述的实现作业内的MapReduce数据本地化的方法,其特征在于,具体按照以下方法实现步骤一所述的为每个计算节点分配第一轮任务:以各计算节点的关于作业A的本地化数据块数量为参量建立小顶堆并进行作业A的第一轮任务分配,即为每个物理计算节点分配一个数据块;第一轮任务分配过程中,首先对位于小顶堆堆顶对应的计算节点分配任务,然后对剩余的尚未分配的各计算节点重新构建小顶堆,并对新的小顶堆堆顶对应的计算节点分配任务,按上述方法进行重复操作直至所有物理计算节点均分配到第一个计算任务。
3.根据权利要求1所述的实现作业内的MapReduce数据本地化的方法,其特征在于,步骤二所述的需要处理的任务个数PBTi具体按照以下方法获得:
作业A的第一轮任务分配及计算完成后,对于作业A剩余的m=b-n个数据块,每个物理计算节点应处理的数据块数量CBTi=m·RPTi/(RPT1+…+RPTn);若CBTi为非整数,对CBTi向下取整得整数DCBTi,即CBTi=DCBTi+Si,0≤Si<1,则有m=(DCBT1+…+DCBTn)+S,其中S=S1+…+Sn为各计算节点取整后剩余小数累加的和得到的整数未分配数据块数量;
设Qr为集群中计算性能最高与最低的物理计算节点之间的实际计算性能值之比,对Qr向上取整得整数Q,即Qr≤Q<Qr+1,计算每个物理计算节点分别在处理Di+1,…,Di+Q个数据块所需要的时间加上该计算节点处理完正在处理的任务的剩余时间的和ti,1,…,ti,Q,由此得到n×Q个时间数据t1,1,…,t1,Q,…,ti,1,…,ti,Q,…,tn,1,…,tn,Q,按由小到大顺序对所述n×Q个时间数据进行排列并构成一个映射列表,列表中的每一个时间均映射一个其相应的物理计算节点;
选取映射列表中前S个时间所映射的S个物理计算节点,统计整个计算集群中第i个物理计算节点在这S个物理计算节点中出现的次数Li;
针对第i个物理计算节点,经过计算最终需要处理的数据块个数为PBTi=(DCBTi+Li)个,且m=(PBT1+…+PBTn)。
4.根据权利要求1所述的实现作业内的MapReduce数据本地化的方法,其特征在于,步骤七中,若存在两个以上的时间FTLBe使得TBhistory_i小于FTLBe,则从中选出对应的、且标记值最高的数据块分配给当前计算节点Ti处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510298897.5A CN104915250B (zh) | 2015-06-03 | 2015-06-03 | 一种实现作业内的MapReduce数据本地化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510298897.5A CN104915250B (zh) | 2015-06-03 | 2015-06-03 | 一种实现作业内的MapReduce数据本地化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104915250A CN104915250A (zh) | 2015-09-16 |
CN104915250B true CN104915250B (zh) | 2018-04-06 |
Family
ID=54084331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510298897.5A Expired - Fee Related CN104915250B (zh) | 2015-06-03 | 2015-06-03 | 一种实现作业内的MapReduce数据本地化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915250B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573827A (zh) * | 2015-12-11 | 2016-05-11 | 联动优势电子商务有限公司 | 一种多机并行处理方法及装置 |
CN111274067A (zh) * | 2018-12-04 | 2020-06-12 | 北京京东尚科信息技术有限公司 | 执行计算任务的方法和装置 |
CN113840014B (zh) * | 2021-11-29 | 2022-02-22 | 中国电子科技集团公司第二十八研究所 | 一种适配高强度弱连接环境的分布式任务分解方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226467A (zh) * | 2013-05-23 | 2013-07-31 | 中国人民解放军国防科学技术大学 | 数据并行处理方法、系统及负载均衡调度器 |
CN104461748A (zh) * | 2015-01-04 | 2015-03-25 | 电子科技大学 | 一种基于MapReduce的最优本地化任务调度方法 |
CN104503820A (zh) * | 2014-12-10 | 2015-04-08 | 华南师范大学 | 一种基于异步启动的Hadoop优化方法 |
-
2015
- 2015-06-03 CN CN201510298897.5A patent/CN104915250B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226467A (zh) * | 2013-05-23 | 2013-07-31 | 中国人民解放军国防科学技术大学 | 数据并行处理方法、系统及负载均衡调度器 |
CN104503820A (zh) * | 2014-12-10 | 2015-04-08 | 华南师范大学 | 一种基于异步启动的Hadoop优化方法 |
CN104461748A (zh) * | 2015-01-04 | 2015-03-25 | 电子科技大学 | 一种基于MapReduce的最优本地化任务调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104915250A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461748B (zh) | 一种基于MapReduce的最优本地化任务调度方法 | |
CN107102552B (zh) | 基于混合集合蛙跳与变邻域算法的平行机调度方法及系统 | |
CN102063336B (zh) | 一种分布式计算多应用功能异步并发调度方法 | |
CN104951372A (zh) | 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法 | |
CN103064745B (zh) | 一种任务分配处理的方法及系统 | |
CN104331321A (zh) | 基于禁忌搜索和负载均衡的云计算任务调度方法 | |
CN103679388B (zh) | 生产调度方法及生产调度系统 | |
CN102521056A (zh) | 任务分配装置和任务分配方法 | |
CN104915250B (zh) | 一种实现作业内的MapReduce数据本地化的方法 | |
CN108270805B (zh) | 用于数据处理的资源分配方法及装置 | |
CN105094970B (zh) | 一种求解分布式系统下可分任务多趟调度模型的方法 | |
CN110414863A (zh) | 一种智能制造车间资源调度方法 | |
CN105808346B (zh) | 一种任务调度方法与装置 | |
CN105550825A (zh) | 云计算环境下的基于MapReduce并行化的柔性工厂作业调度方法 | |
CN101576831A (zh) | 一种分布式计算系统及实现方法 | |
CN104933110B (zh) | 一种基于MapReduce的数据预取方法 | |
CN106354552B (zh) | 并行计算任务分配方法和装置 | |
CN107437138B (zh) | 基于改进引力搜索算法的生产运输协同调度方法及系统 | |
CN111026534B (zh) | 云计算环境下基于多种群遗传算法的工作流执行优化方法 | |
CN105430074A (zh) | 基于数据依赖性和访问量云数据分配存储优化方法及系统 | |
CN107918676A (zh) | 结构化查询的资源优化方法及数据库查询系统 | |
CN104735134B (zh) | 一种用于提供计算服务的方法和装置 | |
CN106708624A (zh) | 一种多工作域计算资源的自适应调整方法 | |
CN113723936B (zh) | 一种电力工程质量监督管理方法及系统 | |
CN112506644B (zh) | 基于云边端混合计算模式系统的任务调度方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180406 Termination date: 20210603 |