本发明涉及计算机技术领域,特别是指一种任务优化调度方法。
背景技术:
近年来,MapReduce等大数据处理框架在处理数据密集型应用方面发挥着越来越大的作用。不可忽视的是,在实际应用中,部分业务的输入数据之间存在关联性,这种关联性既可表现为几个数据块可能被同一任务处理,也可表现为下一阶段的输入数据包含上一阶段的中间结果。以社交网络中用户画像信息为例,处于同一社交圈或在某方面有共同属性的用户,其相互之间的数据信息即存在关联性。在进行用户数据分析时,若对此类用户信息进行合并/聚合处理,则可有效减少任务输出结果大小,进而减少任务执行过程中的数据迁移。
为了提升任务执行性能,可从数据本身特点(如访问频率、位置等因素)及数据间相关性出发,将相关度高的数据聚合放置,以减少数据传输代价。针对此类问题,一些研究者提出了“共享数据”的概念。对于“共享数据”,Gu等人提出对访问频率超过相应阈值的数据块创建新副本;而Abad等提出将经常访问的数据直接放置在本地缓存中。虽然上述针对“共享数据”的处理机制在一定程度上减小了不必要的网络带宽消耗,但新增副本、创建缓存窗口等行为带来了创建副本的通信开销及本地缓存的存储开销,影响了节点的性能。
在此基础上,另外一些研究者从数据关联性本身出发,给出了感知任务对数据需求的任务调度方案。Fan等人提出的依赖性感知的MapReduce本地性优化机制(DALM,Dependency-Aware Locality for MapReduce)实现数据在集群间的公平分配;Shang等人提出的数据聚合感知的数据放置策略(DRAW,Data-gRouping-Aware data placement scheme)实现数据在集群中的均衡分配。这两种机制都是基于集群同构的假设进行设计的,可在同构集群中实现负载均衡;但以上机制并未考虑异构集群中节点间存储资源分布不均这一问题,在异构集群中可能导致资源利用率下降;且由于并未根据当前数据本地性约束对调度方案进行动态调整,因此其调度方案可能不是最优解。
技术实现要素:
本发明要解决的技术问题是提供一种任务优化调度方法,以解决现有技术所存在的异构集群中资源利用率低,且并未根据当前数据本地性约束对调度方案进行动态调整,导致调度方案不是最优解的问题。
为解决上述技术问题,本发明实施例提供一种任务优化调度方法,包括:
S1,获取DC中任意两数据块之间的关联性,构建所述DC中任意两数据块之间的关联性矩阵,其中,所述任意两数据块之间的关联性由共同访问所述两数据块的任务数量确定;
S2,将所述关联性矩阵转化为用于反映以至少2个数据块为单位的数据块簇间的关联性的数据聚合矩阵;
S3,根据所述DC中的机架及所述机架内节点的最大可用存储容量,对所述数据聚合矩阵进行子矩阵分割,依据分割结果,将所述数据聚合矩阵对应的数据块放置在所述机架内的节点上,得到当前数据放置方案;
S4,在所述当前数据放置方案的数据关联性约束下,以任务执行过程中数据迁移代价最小化为目标确定当前最优任务调度方案;
S5,当任务执行过程中的数据本地性程度及所述数据迁移代价满足预定的条件时,重复执行S1至S4;否则,输出当前的数据放置方案和当前的任务调度方案作为任务调度的最优解。
其中,所述S1包括:
S11,获取DC中任务与数据块集合之间的映射关系;
S12,将获取的所述任务与数据块集合之间的映射关系转换为数据块与任务集合之间的映射关系;
S13,根据转换得到的所述数据块与任务集合之间的映射关系,获取所述DC中任意两数据块之间的关联性,并根据所述DC中任意两数据块之间的关联性,构建所述DC中任意两数据块之间的关联性矩阵;
其中,所述任意两数据块之间的关联性由共同访问所述两数据块的任务数量确定。
其中,所述S11包括:
从历史日志文件中,获取DC中任务与数据块集合之间的映射关系。
其中,所述S2包括:
S21,对所述关联性矩阵进行行列变换;
S21,计算每一次行列变换后的关联性矩阵的键能,将最大键能值对应的变换后的关联性矩阵作为数据聚合矩阵,其中,所述数据聚合矩阵为用于反映以至少2个数据块为单位的数据块簇间的关联性的矩阵。
其中,计算所述键能的表达式为:
其中,B表示键能,Di,j表示共同访问第i数据块和第j数据块的任务数量,N表示DC中数据块的数目。
其中,所述S3包括:
S31,按照机架的当前最大可用存储容量从大到小,对所述DC中的机架进行排列;
S32,获取当前可用存储容量最大的机架r,若机架r的当前最大可用存储容量为Mr,则从所述数据聚合矩阵中获取维数为Mr的子矩阵Ar,其中,Mr表示所述机架r最多存储Mr个数据块;
S33,按照节点的当前最大可用存储容量从大到小,对所述机架r中当前节点进行排列;
S34,获取机架r中当前可用存储容量最大的节点若节点的当前最大可用存储容量为则从所述子矩阵Ar中获取维数为的子矩阵并将所述子矩阵对应的数据块簇放置在所述节点上,若子矩阵Ar分割完毕,则转至S32;否则,继续执行S34;
S35,当所述数据聚合矩阵分割完毕,所述数据聚合矩阵对应的所有数据块完成放置后,生成当前数据放置方案Pn。
其中,所述S4包括:
S41,确定在所述当前数据放置方案Pn的数据关联性约束下的任务调度方案Sn的初始解,并确定所述初始解中J个任务的数据迁移代价;
S42,以数据迁移代价最小化为目标,将数据迁移代价的最小值转化为求任务执行过程中J个任务的数据本地性程度I(Sn,Pn)的最大值;
S43,迭代执行S41、S42,调整初始解,直至I(Sn,Pn)达到最大值,并同时满足各任务执行截止时间的要求,当前的任务调度方案Sn为在所述当前数据放置方案Pn的数据关联性约束下的最优任务调度方案。
其中,所述任务执行过程中各任务的数据迁移代价表示为:
其中,ct表示t时刻J个任务的数据迁移代价,ct(tj)为第j个任务tj的数据迁移代价,J表示任务的数目,αt表示单位时间内使用带宽资源的代价,为任务tj的任务执行节点,为任务tj的输入数据块,表示任务tj的输入数据块的数目,数据块分别放置在数据放置节点上,为数据放置节点到任务执行节点的通道带宽。
其中,所述任务执行过程中各任务的数据本地性程度表示为:
其中,I(Sn,Pn)表示任务执行过程中各任务的数据本地性程度,Sn表示任务调度方案,Pn表示当前数据放置方案,J表示任务的数目,表示任务tj的调度决策的数据本地性程度,为任务tj的任务执行节点和数据放置节点关系的评价函数,表示任务tj的输入数据块的数目,分别表示机架r1、r2的节点集合,表示执行任务tj所需的数据放置节点集合。
其中,所述S5包括:
S51:比较当前次迭代所得的数据本地性程度I(Sn,Pn)是否大于等于上一次迭代所得的数据本地性程度I(Sn-1,Pn-1);若I(Sn,Pn)≥I(Sn-1,Pn-1),则执行步骤S52;否则,终止迭代;
S52:比较当前次迭代所得的数据迁移代价是否小于等于上一次迭代所得的数据迁移代价若则重复执行S1至S4,当时,所得的Pn、Sn为最优解,其中,δ为预设的阈值;否则,当前得到的Pn、Sn为最优解。
本发明的上述技术方案的有益效果如下:
上述方案中,通过对数据块之间的关联性进行发现,并依据DC中的机架及所述机架内节点的最大可用存储容量,将数据聚合矩阵中强关联的数据块放置于同一机架节点上,能够解决异构集群中节点间存储资源分布不均的问题,从而可以提供异构集群中资源的利用率,完成数据块放置后,以任务执行过程中数据迁移代价最小化为优化目标,以数据本地性为约束条件,不断迭代调整任务调度方案,直至得到任务调度的最优解。这样,通过基于数据块关联性和数据本地性得到的任务调度的最优解去完成任务队列中所有任务的调度工作,能够最大程度上减少任务执行过程中跨节点、跨机架甚至跨DC的数据迁移,从而能够提升任务执行性能。
附图说明
图1为本发明实施例提供的任务优化调度方法的流程示意图;
图2为本发明实施例提供的任务优化调度方法的工作流程示意图;
图3为本发明实施例提供的数据关联性矩阵及数据聚合矩阵的产生过程示意图;
图4为本发明实施例提供的数据放置决策产生的流程示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明针对现有的异构集群中资源利用率低,且并未根据当前数据本地性约束对调度方案进行动态调整,导致调度方案不是最优解的问题,提供一种任务优化调度方法。
参看图1所示,本发明实施例提供的任务优化调度方法,包括:
S1,获取数据中心(DC,Data Center)中任意两数据块之间的关联性,构建所述DC中任意两数据块之间的关联性矩阵,其中,所述任意两数据块之间的关联性由共同访问所述两数据块的任务数量确定;
S2,将所述关联性矩阵转化为用于反映以至少2个数据块为单位的数据块簇间的关联性的数据聚合矩阵;
S3,根据所述DC中的机架及所述机架内节点的最大可用存储容量,对所述数据聚合矩阵进行子矩阵分割,依据分割结果,将所述数据聚合矩阵对应的数据块放置在所述机架内的节点上,得到当前数据放置方案;
S4,在所述当前数据放置方案的数据关联性约束下,以任务执行过程中数据迁移代价最小化为目标确定当前最优任务调度方案;
S5,当任务执行过程中的数据本地性程度及所述数据迁移代价满足预定的条件时,重复执行S1至S4;否则,输出当前的数据放置方案和当前的任务调度方案作为任务调度的最优解。
本发明实施例所述的任务优化调度方法,通过对数据块之间的关联性进行发现,并依据DC中的机架及所述机架内节点的最大可用存储容量,将数据聚合矩阵中强关联的数据块放置于同一机架节点上,能够解决异构集群中节点间存储资源分布不均的问题,从而可以提供异构集群中资源的利用率,完成数据块放置后,以任务执行过程中数据迁移代价最小化为优化目标,以数据本地性为约束条件,不断迭代调整任务调度方案,直至得到任务调度的最优解。这样,通过基于数据块关联性和数据本地性得到的任务调度的最优解去完成任务队列中所有任务的调度工作,能够最大程度上减少任务执行过程中跨节点、跨机架甚至跨DC的数据迁移,从而能够提升任务执行性能。
在前述任务优化调度方法的具体实施方式中,进一步地,所述S1包括:
S11,获取DC中任务与数据块集合之间的映射关系;
S12,将获取的所述任务与数据块集合之间的映射关系转换为数据块与任务集合之间的映射关系;
S13,根据转换得到的所述数据块与任务集合之间的映射关系,获取所述DC中任意两数据块之间的关联性,并根据所述DC中任意两数据块之间的关联性,构建所述DC中任意两数据块之间的关联性矩阵;
其中,所述任意两数据块之间的关联性由共同访问所述两数据块的任务数量确定。
本实施例中,如图2所示,当用户提交任务请求时,首先由数据放置引擎从日志仓库中提取历史日志文件并将其发送至数据关联性发现器,由数据关联性发现器从历史日志文件中获取DC中“任务~数据块集合”之间的映射关系,并将所述“任务~数据块集合”之间的映射关系转化为“数据块~任务集合”之间的映射关系,如图3(a)和图3(b)所示;接着,根据共同访问DC中数据块di和数据块dj的任务数量确定任意两数据块di和dj的关联性大小Di,j,其中,Di,j=||Ti∩Tj||,Ti∩Tj为共同访问数据块di和数据块dj的任务集合,并以此为依据得到反映任意两数据块之间关联性的关联性矩阵(DDM,Data Dependency Matrix),如图3(c)所示,其中,DDM中的任一元素由Di,j决定。
在前述任务优化调度方法的具体实施方式中,进一步地,所述S2包括:
S21,对所述关联性矩阵进行行列变换;
S22,计算每一次行列变换后的关联性矩阵的键能,将最大键能值对应的变换后的关联性矩阵作为数据聚合矩阵,其中,所述数据聚合矩阵为用于反映以至少2个数据块为单位的数据块簇间的关联性的矩阵。
本实施例中,由所述数据关联性发现器将DDM通过控制流信息交由放置决策器。为了挖掘以至少2个数据块为单位的数据块簇间的关联性大小,由所述放置决策器根据DDM中所反映的任意两数据块间的关联性信息,对所述DDM进行行列变换,并按式(1)计算每次变换后的DDM的键能,直至找到最大键能值对应的变换后的矩阵,即数据聚合矩阵(DCM,Data Clustering Matrix):
式(1)中,B表示键能,Di,j表示共同访问第i数据块和第j数据块的任务数量,N表示DC中数据块的数目。
本实施例中,如图3(c)与图3(d)所示,反映了通过DDM得到DCM的一个实例。对图3(c)所示的DDM进行逐次行变换,可得到如图3(d)所示的最大键能值对应的变换后的DCM。在DCM中,强关联的数据块聚集在一起,其中,子矩阵A1、A2分别为具有4个强关联数据块和2个强关联数据块的数据块簇。
在前述任务优化调度方法的具体实施方式中,进一步地,所述S3包括:
S31,按照机架的当前最大可用存储容量从大到小,对所述DC中的机架进行排列;
S32,获取当前可用存储容量最大的机架r,若机架r的当前最大可用存储容量为Mr,则从所述数据聚合矩阵中获取维数为Mr的子矩阵Ar,其中,Mr表示所述机架r最多存储Mr个数据块;
S33,按照节点的当前最大可用存储容量从大到小,对所述机架r中当前节点进行排列;
S34,获取机架r中当前可用存储容量最大的节点若节点的当前最大可用存储容量为则从所述子矩阵Ar中获取维数为的子矩阵并将所述子矩阵对应的数据块簇放置在所述节点上,若子矩阵Ar分割完毕,则转至S32;否则,继续执行S34;
S35,当所述数据聚合矩阵分割完毕,所述数据聚合矩阵对应的所有数据块完成放置后,生成当前数据放置方案Pn。
本实施例中,所述放置决策器按图4所示流程对数据块集合中各数据块进行放置决策,具体步骤包括:
A11,对DC内所有机架当前的最大可用存储容量降序排列;
A12,获取当前可用存储容量最大的机架r,若机架r的当前最大可用存储容量为Mr,即表示机架r最多可存储Mr个数据块,则在DCM中可以按从上到下的顺序寻找维数为Mr的子矩阵Ar,所述子矩阵Ar可放置于该机架r上;
A13,将该机架r内各节点的当前最大可用存储容量按降序进行排列;
A14,获取机架r中当前可用存储容量最大的节点若节点的当前最大可用存储容量为则在子矩阵Ar中再寻找维数为的子矩阵并将子矩阵对应的数据块簇放置于节点若子矩阵Ar分割完毕,则转至A12;否则,继续执行A14;
A15,直至DCM对应所有数据块全部放置完毕,即形成当前数据块放置方案Pn。
在前述任务优化调度方法的具体实施方式中,进一步地,所述S4包括:
S41,确定在所述当前数据放置方案Pn的数据关联性约束下的任务调度方案Sn的初始解,并确定所述初始解中J个任务的数据迁移代价;
S42,以数据迁移代价最小化为目标,将数据迁移代价的最小值转化为求任务执行过程中J个任务的数据本地性程度I(Sn,Pn)的最大值;
S43,迭代执行S41、S42,调整初始解,直至I(Sn,Pn)达到最大值,并同时满足各任务执行截止时间的要求,当前的任务调度方案Sn为在所述当前数据放置方案Pn的数据关联性约束下的最优任务调度方案。
本实施例中,首先由数据放置引擎将放置决策器产生的当前数据块放置方案Pn作为控制流信息传递至任务调度引擎,为其提供当前数据关联性约束信息,并将该约束作为任务调度的决策依据;进而,由任务调度引擎以数据迁移代价最小化为目标,通过不断调整任务调度方案,进行当前数据关联性约束下最优任务调度方案的搜索,直至找到数据迁移代价最小时对应的任务调度方案作为最优任务调度方案。
本实施例中,任务调度引擎对最优任务调度方案进行搜索的具体步骤可以包括:
A21,由于数据放置决策Pn与任务调度方案Sn互相影响,在迭代过程中可以建立Sn和Pn之间的函数关系,例如,Sn=p(Pn)以及Pn+1=s(Sn),根据建立的函数关系,可以确定在当前数据放置方案Pn的数据关联性约束下的任务调度方案Sn的初始解并可以不断调整任务调度方案Sn,假设,Sn中有J个任务,即,DC中当前正在执行的任务的数目为J,可以根据(2)确定中J个任务的数据迁移代价:
式(2)中,ct表示t时刻J个任务的数据迁移代价,ct(tj)为第j个任务tj的数据迁移代价,J表示任务的数目,αt表示单位时间内使用带宽资源的代价,为任务tj的任务执行节点,为任务tj的输入数据块,表示任务tj的输入数据块的数目,数据块分别放置在数据放置节点上,为数据放置节点到任务执行节点的通道带宽;其中,所述单位时间可以为1分、1秒、1毫秒或其他,在实际应用中可以根据实际情况确定。
A22,对每一次调整后的Sn中的每一个任务的调度决策通过式(3)计算其评价函数
式(3)中,为任务tj的任务执行节点和数据放置节点关系的评价函数,表示任务tj的输入数据块的数目,分别表示机架r1、r2的节点集合,表示执行任务tj所需的数据放置节点集合。
本实施例中,具体用于表示任务执行节点与数据放置节点之间的重合程度,设则可表示任务执行过程中任务tj的调度决策的数据本地性程度,将任务执行过程中各任务的数据本地性程度表示为I(Sn,Pn),则本实施例中,以数据迁移代价ct最小化为目标,因此,可以将数据迁移代价ct的最小值可转化为求的最大值。
A23,调整任务调度方案,不断重复A21及A22,直至I(Sn,Pn)取最大值,并使各任务在各自截止时间内执行完毕,此时对应的Sn即为在所述当前数据放置方案Pn的数据关联性约束下的最优任务调度方案。
在前述任务优化调度方法的具体实施方式中,进一步地,所述S5包括:
S51:比较当前次迭代所得的数据本地性程度I(Sn,Pn)是否大于等于上一次迭代所得的数据本地性程度I(Sn-1,Pn-1);若I(Sn,Pn)≥I(Sn-1,Pn-1),则执行步骤S52;否则,终止迭代;
S52:比较当前次迭代所得的数据迁移代价是否小于等于上一次迭代所得的数据迁移代价若则重复执行S1至S4,当时,所得的Pn、Sn为最优解,其中,δ为预设的阈值;否则,当前得到的Pn、Sn为最优解。
本实施例中,根据数据本地性程度及数据迁移代价确定迭代过程是否继续,具体的步骤包括:
A31,由任务调度引擎首先比较当前次迭代所得的数据本地性程度I(Sn,Pn)是否大于等于上一次迭代所得的数据本地性程度I(Sn-1,Pn-1);若I(Sn,Pn)≥I(Sn-1,Pn-1),则执行步骤A32,进一步优化当前数据放置方案Pn为Pn+1;否则,终止迭代;
A32,比较当前次迭代所得的数据迁移代价是否小于等于上一次迭代所得的数据迁移代价若则重复执行S1至S4,当时,算法收敛,所得的Pn、Sn为最优解,其中,δ为预设的一很小的正实数;否则,当前的任务调度方案Sn为在所述当前数据放置方案Pn的数据关联性约束下的最优任务调度方案。
本发明实施例中,通过利用数据块关联性感知的数据放置机制及数据迁移代价感知的任务优化调度机制,以任务执行过程中数据迁移代价最小化为优化目标,对任务进行统一调度,以减少任务执行过程中不必要的数据迁移,从而提升任务执行性能。
综上,本实施例中,Pn和Sn的迭代调整过程可描述为:
A41,分别确定初始任务调度方案及当前数据放置方案S0、P0,执行完毕后确定DCM0;
A42,在第n-1次迭代中,根据DCMn-1确定Pn-1,进而在数据本地性约束下确定Sn-1,并计算此时的数据迁移代价
A43,开始第n次迭代,生成DCMn,进而确定Pn,按Sn-1进行任务调度,若I(Sn-1,Pn)≥I(Sn-1,Pn-1),则算法继续;反之,集群存储资源受限,无继续优化可能,停止迭代,输出n-1次迭代结果;
A44,根据Pn确定Sn,若当前数据本地性程度不低于前次迭代的数据本地性程度,即I(Sn,Pn)≥I(Sn-1,Pn-1),则算法继续;反之,迭代结束;
A45,根据Pn、Sn计算数据迁移代价若数据迁移代价增加,即则迭代结束;反之,重复步骤A42~A45,当(δ为一很小的正实数),输出此时的Pn、Sn为任务调度问题的最优解;
A46,得到任务调度问题的最优解后,由数据放置引擎将最优当前数据放置方案Pn作为控制信息流传递至文件系统(HDFS),并根据该最优当前数据放置方案Pn完成数据块集合的放置工作;任务调度引擎将最优任务调度方案Sn作为控制信息流传递至主节点,并由Master根据该最优任务调度方案Sn完成任务队列中所有任务的调度工作。
本实施例中,对所述务优化调度方法在大数据分析系统Hadoop平台下进行了验证和性能分析,经过编译、打包,形成了一个可插拔调度模块,例如,depScheduler。该方法应用于Hadoop集群时,仅需对预定的配置文件,例如,mapred-site.xml中的mapred.jobtracker.taskScheduler参数进行配置为org.apache.hadoop.mapred.depScheduler即可;性能分析结果表明,本实施例提供的所述任务优化调度方法在减少执行过程中跨节点、跨机架的数据迁移以及执行速度方面得到了很大提升。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。