一种任务调度方法、系统及装置的制作方法

文档序号:7654651阅读:88来源:国知局
专利名称:一种任务调度方法、系统及装置的制作方法
技术领域
本发明涉及分布式计算领域,尤其涉及一种任务调度方法、系统及装置。
背景技术
MapReduce (映射和汇总)是一种编程模型,用于处理海量数据的并行运算。在MapReduce编程模型中,一个数据处理过程称为一个Job (作业);Job提交后,会将该Job的待处理数据分为N份,每份待处理数据由一个Map (映射)任务进行处理,Map任务运行在分布式环境中的一个结点上,一个结点可以运行一个到多个Map任务;所有Map任务的输出结果由Reduce (汇总)任务进行汇总、计算并最终输出。因为Map任务是直接对源数据进行处理,所以如果Map任务的待处理数据在Map·任务的运行结点上或与Map任务处于同一机架中,将会大大提升整个Job的处理效率。Hadoop是MapReduce编程模型的一个具体实现,Hadoop这个名称不是一个缩写,是一个虚构的名字。Hadoop是一个能够对大量数据进行分布式处理的软件框架。如图I所示,Hadoop中有一个主节点和多个处理结点,主节点负责Job中Map任务和Reduce任务的调度,处理结点定期向主节点报告任务的处理情况并申请新的Map任务或Reduce任务到本地执行。在Hadoop中,可以通过分布式文件系统确定待处理数据所处的网络结点位置,通过机架感知功能确定处理结点和待处理数据所在结点的网络层次,同时Hadoop对所有的网络结点的拓扑结构建立了层次关系。当处理结点向主节点申请Map任务时,主节点就可以根据处理结点在网络拓扑结构中的位置,分配距离该处理结点最近的Map任务给该处理结点。Hadoop在分配Map任务时,将Map任务分为两种本地Map任务和非本地Map任务,其中,本地Map任务一般指本地结点任务和同一机架下的任务。Hadoop可以为多种应用提供服务。例如,为搜索引擎提供服务。搜索引擎需要对海量数据进行处理,以对外提供检索服务。搜索引擎的处理过程一般分为采集和索引,由于是对海量数据进行处理,因此可以采用MapReduce编程模型进行海量数据的采集和索引,目前一般采用Hadoop框架。再次参考图1,当采集和索引同时运行时,搜索引擎的采集子系统和索弓I子系统,会向主节点提交Job,可以看成搜索引擎向Hadoop提交了一个采集Job和一个索引Job。Hadoop对这两个Job的Map任务进行的调度,将会直接影响整个系统的处理效率和检索数据的实时性。目前,Hadoop对Job的Map任务的调度一般分为两种方式,说明如下
(一)队列式,队列式的处理流程如图2所示,包括
步骤201 :处理结点向主节点申请Map任务;
步骤202 :主结点接收到申请后,计算对申请Map任务的处理结点的最多Map任务分配
数;
步骤203 :主节点按照先进先出的原则搜索Job队列,从Job队列中选定一个Job ;先进先出的原则是指,先将Job队列中最早提交到主节点的Job的Map任务分配给处理结点,当最早提交的Job中的Map任务分配完成后,再分配下一个Job中的Map任务。
步骤204 :主节点判断选定的Job中是否含有申请Map任务的处理结点的本地未处理Map任务,如果含有,则执行步骤205 ;否则,执行步骤207 ;
步骤205 :主节点添加一个本地Map任务到任务列表中;
步骤206 :主节点判断为申请Map任务的处理结点分配的本地Map任务的数量是否达到最多Map任务分配数,如果达到,则执行步骤210 ;否则,执行步骤204 ;
步骤207 :主节点判断选定的Job中是否含有申请Map任务的处理结点的非本地未处理Map任务,如果含有,则执行步骤208 ;否则,执行步骤209 ;
步骤208 :主节点添加非本地Map任务到任务列表中,执行步骤210 ;
步骤209 :主节点按照先进先出的原则从Job队列中选定下一个Job,执行步骤204,如果Job队列循环结束,则执行步骤210 ;
步骤210 :主节点向申请Map任务的处理节点返回任务列表。(二)对Job限制Map任务数量的方式,处理流程如图3所示,包括
步骤301 :处理结点向主节点申请Map任务;
步骤302 :主结点接收到申请后,计算对申请Map任务的处理结点的最多Map任务分配
数;
步骤303 :主节点按照先进先出的原则搜索Job队列,从Job队列中选定一个Job ;步骤304 :主节点判断选定的Job中正在运行的Map任务的数量是否达到设置值,如果未达到,则执行步骤305 ;否则,执行步骤308 ;
步骤305 :主节点判断Job中是否含有未处理的Map任务,如果有,则执行步骤306 ;否贝U,执行步骤308 ;
步骤306 :主节点添加一个本地Map任务到任务列表中;
步骤307 :主节点判断为申请Map任务的处理结点分配的本地Map任务的数量是否达至IJ最多Map任务分配数,如果达到,则执行步骤309 ;否则,执行步骤304 ;
步骤308 :主节点按照先进先出的原则从Job队列中选定下一个Job,执行步骤304,如果Job队列循环结束,则执行步骤309 ;
步骤309 :主节点向申请Map任务的处理节点返回任务列表。

发明内容
本发明要解决的技术问题是提供一种任务调度方法、系统及装置,可以充分地为处理节点分配本地Map任务,提高任务的执行效率。为解决上述技术问题,本发明的一种任务调度方法,应用于Hadoop架构中,包括 处理节点向主节点提交申请映射(Map)任务的请求;
主节点接收到申请Map任务的请求后,在为处理节点分配Map任务的过程中,将一个作业(Job)中处理节点的本地Map任务分配给处理节点后,在未达到处理节点的最多Map任务分配数的情况下,选定下一个Job,为处理节点继续分配本地Map任务。进一步地,还包括
主节点在为处理节点分配完本地Map任务后,若仍未达到处理节点的最多Map任务分配数,贝1J在已选定的Job中为处理节点分配一个非本地Map任务。进一步地,还包括
主节点读取预先配置的一次最多调度的Job数,在执行选定下一个Job前,判断已选定的Job的数量是否达到一次最多调度的Job数,如果未达到,则执行选定下一个Job ;如果达到,则执行在已选定的Job中为处理节点分配一个非本地Map任务。进一步地,还包括
主节点读取预先配置的一次最多调度的Job数,在为处理节点分配本地Map任务前,建立长度为一次最多调度的Job数的待调度Job队列,从主Job队列中选取Job,加入到待调度Job队列中;
主节点在为处理节点分配本地Map任务时,是从待调度Job队列中选定Job。进一步地,主节点在为处理节点分配完本地Map任务后,若仍未达到处理节点的 最多Map任务分配数,是从待调度Job队列中选定Job,为处理节点分配一个非本地Map任
务。 进一步地,一种任务调度装置,应用于Hadoop架构中,包括分配控制实体和本地任务分配实体,其中
分配控制实体,用于在接收到处理节点提交的申请映射(Map)任务的请求后,调用本地任务分配实体为处理节点分配本地Map任务;
本地Map任务分配实体,用于将一个作业(Job)中处理节点的本地Map任务分配给处理节点后,在未达到处理节点的最多Map任务分配数的情况下,选定下一个Job,为处理节点继续分配本地Map任务。进一步地,还包括非本地任务分配实体,其中
分配控制实体,还用于在本地Map任务分配实体为处理节点分配完本地Map任务后,若仍未达到处理节点的最多Map任务分配数,则调用非本地任务分配实体为处理节点分配非本地Map任务;
非本地任务分配实体,用于在本地Map任务分配实体已选定的Job中为处理节点分配一个非本地Map任务。进一步地,本地任务分配实体,还用于读取预先配置的一次最多调度的Job数,在为处理节点分配本地Map任务前,建立长度为一次最多调度的Job数的待调度Job队列,从主Job队列中选取Job,加入到待调度Job队列中;
本地任务分配实体在为处理节点分配本地Map任务时,是从待调度Job队列中选定
Job。进一步地,一种任务调度系统,应用于Hadoop架构中,包括主节点和多个分布式部署的处理节点,其中
处理节点,用于向主节点提交申请映射(Map)任务的请求;
主节点,用于接收到申请Map任务的请求后,在为处理节点分配Map任务的过程中,将一个作业(Job)中处理节点的本地Map任务分配给处理节点后,在未达到处理节点的最多Map任务分配数的情况下,选定下一个Job,为处理节点继续分配本地Map任务。进一步地,主节点,还用于在为处理节点分配本地Map任务后,若仍未达到处理节点的最多Map任务分配数,贝U在已选定的Job中为处理节点分配一个非本地Map任务。综上所述,本发明在将一个Job中处理节点的本地Map任务分配给处理节点后,在未达到处理节点的最大Map任务分配数的情况下,选定下一个Job为处理节点分配本地Map任务,可以实现对多个Job进行Map任务的分配,且Job个数可以配置;提高了多Job运行时的Map任务本地化执行率,降低了网络开销,提高了整个系统的处理效率。


图I为现有技术中Hadoop的架构 图2为现有技术中队列式任务调度方法的流程 图3为现有技术中对Job限制Map任务数量方式的任务调度方法的流程 图4为本发明实施方式的任务调度系统的架构 图5为本发明实施方式的任务调度方法的流程图。
具体实施方式
在Hadoop中,对Job的Map任务的调度方式中,队列式和对Job限制其运行的Map任务数量的方式虽然已有使用,但却存在一定的局限性,分析如下
对于队列式,假设处理结点最多可以申请N个Map任务(N>1),在给处理节点分配Map任务的过程中,主节点给处理节点分配一个非本地Map任务后,此时即使分配的总Map任务数小于N,也会结束此次Map任务的分配,这就会导致如下问题
如果上一个Job中没有足够的本地Map任务但有非本地Map任务,而下一个Job中有本地Map任务,在分配完上一个Job的本地Map任务后,会分配I个非本地Map任务并返回任务列表,而并不会分配下一个Job中的本地Map任务,导致对处理节点的本地Map任务分配不充分、本地Map任务执行率不高的问题。对于限制Job中Map任务的执行数量的方式,主节点是对每个Job最多同时执行的Map任务的数量进行限制,如果当前正在调度的Job中,其正在执行的Map任务的数量达到了限定值,则会为下一个Job进行Map任务的分配,而不管当前Job的Map任务是否已分配完,虽然可以同时对多个Job进行调度,但并没有考虑本地Map任务优先的原则,导致Map任务的本地化执行率很低。本实施方式针对以上两种方式的局限性,通过设定一次最多调度的Job数,在设定的个数内,按先进先出的原则依次为Job进行调度。在调度时,遵循本地Map任务优先的原则,先分配本地Map任务;在设定个数的Job中,本地Map任务分配完后,再依次调度这些Job,从中找出一个非本地Map任务进行分配,然后返回;如果没有找到非本地Map任务,也可直接返回。本实施方式的调度方法在Hadoop框架中的处理流程包括
步骤一主节点收到处理结点申请Map任务的请求时,计算处理结点的最多Map任务分配数;
步骤二 主节点按先进先出的原则搜索Job队列,选定Job ;
步骤三主节点分配选定的Job的Map任务,将查找到的处理结点的本地Map任务添加到任务列表中;如果选定的Job已经查找完成,但还未达到处理节点的最多Map任务分配数,且已经调度的Job数也未达到一次最多调度的Job数,则选定下一个Job继续查找本地Map任务。在为处理节点分配的Map任务达到最多Map任务分配数时,向处理节点返回任务列表。在调度的Job的个数达到一次最多调度的Job数,为处理节点分配的Map任务未达到最多Map任务分配数时,在已调度的Job队列中,按照先进先出的顺序查找一个非本地Map任务添加到任务列表中,并向处理节点返回任务列表;如果未查找到非本地Map任务,则直接返回任务列表。为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图4为本发明实施方式的任务调度系统,包括主节点和多个分布式部署的处理节点,其中,主节点包括Job列表及状态维护实体、本地任务分配实体、非本地任务分配实体和分配控制实体;
Job列表及状态维护实体,用于接收应用提交的Job,将Job加入到Job队列中,初始化Job的状态,并对Job队列和Job的状态进行实时维护。分配控制实体,用于接收处理结点申请Map任务的请求,调用本地任务分配实体对Job的本地Map任务进行分配,在完成本地Map任务的分配后,如果未达到处理节点的最 多Map任务分配数,则调用非本地任务分配实体进行非本地Map任务的分配;还用于在完成对处理节点的Map任务分配时,向处理节点返回任务列表。本地任务分配实体,用于分配选定的Job的Map任务,将查找到的处理结点的本地Map任务添加到任务列表中;如果选定的Job已经查找完成,但还未达到处理节点的最多Map任务分配数,且已经调度的Job数也未达到一次最多调度的Job数,则选定下一个Job继续查找本地Map任务。非本地任务分配实体,用于在已调度的Job队列中,按照先进先出的顺序查找一个非本地Map任务添加到任务列表中。图5为本发明实施方式的任务调度方法,包括
步骤S501 :处理结点向主节点的分配控制实体提交申请Map任务的请求;
步骤S502,主结点的分配控制实体计算处理结点的最多Map任务分配数;
步骤S503,主节点的分配控制实体调用本地任务分配实体,本地任务分配实体按先进先出的顺序搜索Job队列,选定待调度Job,对待调度Job的本地Map任务进行分配;
步骤S504,主节点的本地任务分配实体记录待调度Job的标识(ID);
步骤S505,主节点的本地任务分配实体根据待调度Job的ID查询待调度Job的相关信息,判断待调度Job中是否含有处理节点的本地Map任务,如果含有,则执行步骤S506,否贝U,执行步骤S508 ;
步骤S506,本地任务分配实体将待调度Job中的一个本地Map任务添加到任务列表
中;
步骤S507,本地任务分配实体判断为处理节点分配的本地Map任务的数量是否达到最多Map任务分配数,如果未达到,则执行步骤S505 ;否则,执行步骤S511 ;
步骤S508,本地任务分配实体读取预先配置的一次最多调度的Job数,判断已调度的Job数是否达到一次最多调度的Job数,如果达到,则执行步骤S510 ;否则,执行步骤S509 ;分配控制实体可以根据已记录的待调度Job的ID的个数,获知已调度的Job数。步骤S509,完成本Job的Map任务调度,选定下一个待调度Job,执行步骤S504,开始对下一个Job的调度;
步骤S510,分配控制实体调用非本地任务分配实体从已调度的Job中,按先进先出的顺序查找处理结点的非本地Map任务,添加一个非本地Map任务到任务列表中;
分配一个非本地Map任务是最优的方式,例如,对处理节点A而言,Map任务y为非本地Map任务,但对处理节点B可能就是本地Map任务,因为处理节点A和处理节点B是分布式部署的,如果处理节点B已经执行完了自己的Map任务,此时Map任务y由处理节点B执行效果更好,所以一次性分配给处理节点A多个非本地Map任务,可能造成处理节点B空闲,或者处理节点B不得不执行非本地Map任务。步骤S511,分配控制实体将任务列表返回给处理结点。在本实施方式的另一实施例中,本地任务分配实体也可以建立待调度Job队列,按照先进先出的原则,从主Job队列中选定一次最多调度的Job数个Job,加入到待调度Job队列中。本地任务分配实体在进行本地Map任务的分配时,依次对待调度Job队列中 的Job进行调度;非本地任务分配实体也是按照先进先出的原则从待调度Job队列中查找Job,为处理节点选择一个非本地Map任务。采用这种方式时,分配控制实体无需在本地任务分配实体完成一个Job的本地Map任务调度后,就判断一次已调度的Job数是否达到一次最多调度的Job数,本地任务分配实体和非本地任务分配实体均对待调度Job队列中的Job进行调度即可。显然,本领域的技术人员应该明白,上述的本发明的各模块、各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们的多个模块或者步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种任务调度方法,应用于Hadoop架构中,包括 处理节点向主节点提交申请映射(Map)任务的请求; 所述主节点接收到所述申请Map任务的请求后,在为所述处理节点分配Map任务的过程中,将一个作业(Job)中所述处理节点的本地Map任务分配给所述处理节点后,在未达到所述处理节点的最多Map任务分配数的情况下,选定下一个Job,为所述处理节点继续分配本地Map任务。
2.如权利要求I所述的方法,其特征在于,还包括 所述主节点在为所述处理节点分配完本地Map任务后,若仍未达到所述处理节点的最多Map任务分配数,则在已选定的Job中为所述处理节点分配一个非本地Map任务。
3.如权利要求2所述的方法,其特征在于,还包括 所述主节点读取预先配置的一次最多调度的Job数,在执行所述选定下一个Job前,判断已选定的Job的数量是否达到所述一次最多调度的Job数,如果未达到,则执行所述选定下一个Job ;如果达到,则执行所述在已选定的Job中为所述处理节点分配一个非本地Map任务。
4.如权利要求2所述的方法,其特征在于,还包括 所述主节点读取预先配置的一次最多调度的Job数,在为所述处理节点分配本地Map任务前,建立长度为所述一次最多调度的Job数的待调度Job队列,从主Job队列中选取Job,加入到所述待调度Job队列中; 所述主节点在为所述处理节点分配本地Map任务时,是从所述待调度Job队列中选定Job。
5.如权利要求4所述的方法,其特征在于 所述主节点在为所述处理节点分配完本地Map任务后,若仍未达到所述处理节点的最多Map任务分配数,是从所述待调度Job队列中选定Job,为所述处理节点分配一个非本地Map任务。
6.一种任务调度装置,应用于Hadoop架构中,包括分配控制实体和本地任务分配实体,其中 所述分配控制实体,用于在接收到处理节点提交的申请映射(Map)任务的请求后,调用所述本地任务分配实体为所述处理节点分配本地Map任务; 所述本地Map任务分配实体,用于将一个作业(Job)中所述处理节点的本地Map任务分配给所述处理节点后,在未达到所述处理节点的最多Map任务分配数的情况下,选定下一个Job,为所述处理节点继续分配本地Map任务。
7.如权利要求6所述的装置,其特征在于,还包括非本地任务分配实体,其中 所述分配控制实体,还用于在所述本地Map任务分配实体为所述处理节点分配完本地Map任务后,若仍未达到所述处理节点的最多Map任务分配数,则调用所述非本地任务分配实体为所述处理节点分配非本地Map任务; 所述非本地任务分配实体,用于在所述本地Map任务分配实体已选定的Job中为所述处理节点分配一个非本地Map任务。
8.如权利要求7所述的装置,其特征在于 所述本地任务分配实体,还用于读取预先配置的一次最多调度的Job数,在为所述处理节点分配本地Map任务前,建立长度为所述一次最多调度的Job数的待调度Job队列,从主Job队列中选取Job,加入到所述待调度Job队列中; 所述本地任务分配实体在为所述处理节点分配本地Map任务时,是从所述待调度Job队列中选定Job。
9.一种任务调度系统,应用于Hadoop架构中,包括主节点和多个分布式部署的处理节点,其中 所述处理节点,用于向所述主节点提交申请映射(Map)任务的请求; 所述主节点,用于接收到所述申请Map任务的请求后,在为所述处理节点分配Map任务的过程中,将一个作业(Job)中所述处理节点的本地Map任务分配给所述处理节点后,在未达到所述处理节点的最多Map任务分配数的情况下,选定下一个Job,为所述处理节点继续分配本地Map任务。
10.如权利要求9所述的系统,其特征在于 所述主节点,还用于在为所述处理节点分配本地Map任务后,若仍未达到所述处理节点的最多Map任务分配数,则在已选定的Job中为所述处理节点分配一个非本地Map任务。
全文摘要
本发明公开了一种任务调度方法、系统及装置,应用于Hadoop架构中,包括处理节点向主节点提交申请映射(Map)任务的请求;主节点接收到申请Map任务的请求后,在为处理节点分配Map任务的过程中,将一个作业(Job)中处理节点的本地Map任务分配给处理节点后,在未达到处理节点的最多Map任务分配数的情况下,选定下一个Job,为处理节点继续分配本地Map任务。本发明在将一个Job中处理节点的本地Map任务分配给处理节点后,在未达到处理节点的最大Map任务分配数的情况下,选定下一个Job为处理节点分配本地Map任务,提高了多Job运行时的Map任务本地化执行率,降低了网络开销。
文档编号H04L29/08GK102760073SQ201110110940
公开日2012年10月31日 申请日期2011年4月29日 优先权日2011年4月29日
发明者娄江国 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1