一种集群中的任务执行方法及装置与流程

文档序号:11133717阅读:271来源:国知局
一种集群中的任务执行方法及装置与制造工艺

本申请涉及计算机技术领域,尤其涉及一种集群中的任务执行方法及装置。



背景技术:

在一个繁忙的大型集群中,每天都可能接收到大量的任务。其中,所述集群可以是用于提供云计算、大数据处理等服务的集群。

在现有技术中,集群一般可以根据获取到任务的时间,按照时间顺序,利用集群资源,依次执行各任务。各任务的数据量可能不同,可以将数据量较大的任务称为大任务,将数据量不大的任务称为中小任务。其中,区分大任务和中小任务的数据量阈值可以由集群设定。

但是,集群在执行大任务的过程中,可能需要长时间地占用全部集群资源,这样的话,可能有大量的中小任务由于无法抢到集群资源而长期等待,直至集群将大任务执行完毕后,大任务占用的集群资源得到释放,集群才可以执行等待的中小任务。

因此,采用现有技术中集群执行任务的方式执行任务时,可能会导致当诸如上述的大任务之类的某个任务长时间占据着全部的集群资源时,集群无法及时执行其他任务的问题。



技术实现要素:

本申请实施例提供一种集群中的任务执行方法及装置,用以解决采用现有技术中集群执行任务的方式执行任务时,可能会导致当某个任务长时间占据着全部的集群资源时,集群无法及时执行其他任务的问题。

本申请实施例提供的一种集群中的任务执行方法,包括:

获取待执行任务;

根据所述待执行任务的指定属性,在预先划分的各集群资源集合中,确定所述待执行任务对应的集群资源集合;

利用确定出的集群资源集合中包含的集群资源,执行所述待执行任务。

本申请实施例提供的一种集群中的任务执行装置,包括:

获取模块,用于获取待执行任务;

确定模块,用于根据所述待执行任务的指定属性,在预先划分的各集群资源集合中,确定所述待执行任务对应的集群资源集合;

执行模块,用于利用确定出的集群资源集合中包含的集群资源,执行所述待执行任务。

本申请实施例通过上述至少一种技术方案,不同的待执行任务可能对应着不同集群资源集合,任一个待执行任务可以只占用该待执行任务对应的集群资源集合包含的集群资源,而不会占有集群的全部集群资源,因此,即使某个待执行任务长时间的占用该待执行任务对应的集群资源集合包含的全部集群资源,集群仍然可以利用其它集群资源集合包含的集群资源,及时地执行所述其它集群资源集合对应的其他待执行任务。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的集群中的任务执行过程的示意图;

图2为一种在实际应用中可以实现本申请提供的集群中的任务执行方法的集群架构;

图3为本申请实施例提供的图2中集群的任务执行过程的示意图;

图4为本申请实施例提供的集群中的任务执行装置结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1为本申请实施例提供的集群中的任务执行过程,具体包括以下步骤:

S101:获取待执行任务。

本申请实施例提供的集群中的任务执行方法的执行主体可以是集群,所述集群可以是Hadoop集群,或者基于其他分布式架构的集群等,在实际应用中,所述集群可以用于提供云计算、大数据处理等服务。所述任务执行方法中的每个步骤具体可以由所述集群中的一台或多台机器执行,所述机器可以是集群中的任务调度机和/或任务执行机。

在本申请实施例中,用户可以通过集群对应的客户端,向集群提交待执行任务,则集群可以获取到该待执行任务。所述待执行任务可以是请求所述集群执行的、针对指定数据的指定操作。

例如,假定用户想要查询某个技术名词(称为技术名词a)在某个论文数据库中的全部论文中出现的总次数,则可以向集群提交查询任务。该查询任务中可以包含查询的关键词,以及所述全部论文的相关信息,如所述全部论文的地址索引等。集群根据该查询任务中包含的信息,可以确定该查询任务的数据量,所述数据量可以是存储有所述全部论文的文件的大小。在这种情况下,前文所述的指定数据,在此例中是指存储了所述全部论文的文件;而前文所述的指定操作,在此例中则是指查询技术名词a出现的总次数。

当然,除了上例中的查询操作以外,所述指定操作还可以是删除、修改、 创建、授权等操作,本申请对所述待执行任务涉及的指定操作的操作方式和操作内容并不做限定。

在本申请实施例中,集群可以同时获取到多个待执行任务,也可以基于任务队列等方式,依次获取任务队列中的每个待执行任务。对于上述步骤S101,当集群获取到不止一个待执行任务时,可以针对获取到的每个待执行任务,分别执行后续步骤。为了便于描述,在后续步骤中提及的待执行任务可以指:集群获取的各待执行任务中的任一待执行任务。

S102:根据所述待执行任务的指定属性,在预先划分的各集群资源集合中,确定所述待执行任务对应的集群资源集合。

在本申请实施例中,集群资源可以是执行待执行任务时所使用的计算资源。所述集群资源可以以不同的单位进行度量,包括但不限于以下三种单位:

第一种,机器的台数。在这种情况下,集群中的任一台机器都可以作为一个单位的集群资源。对于划分出的集群资源集合,所述集群资源集合中可以包含设定台数的机器。

第二种,中央处理器(Central Processing Unit,CPU)的个数。在这种情况下,集群中的任一台机器中的任一个CPU(多核机器中可以有多个CPU)都可以作为一个单位的集群资源。对于划分出的集群资源集合,所述集群资源集合中可以包含第一设定数量的CPU。

第三种,用于执行任务的进程的数量。在这种情况下,集群中的任一台机器中的任一个用于执行任务的进程(操作系统会为该进程分配CPU时间片、内存等计算资源)都可以作为一个单位的集群资源。对于划分出的集群资源集合,所述集群资源集合中可以包含第二设定数量的用于执行任务的进程。

以上是对本申请中所述的集群资源的说明。

在本申请实施例中,可以预先将集群中包含的所有集群资源划分为至少两个集群资源集合,每个集群资源集合中包含的集群资源均可以作为集群的利用对象,使得集群实现利用集群资源集合中包含的集群资源,执行与集群资源集 合对应的待执行任务。

例如,在划分出的各集群资源集合中,其中一个集群资源集合(或其中多个集群资源集合)可以用于集群执行大任务,另外一个集群资源集合(或另外多个集群资源集合)可以用于集群执行中小任务。这样的话,在执行大任务的过程不会占用执行中小任务所需的集群资源,因此,可以提高执行中小任务的效率。

对于上例,在上述步骤S102中所述指定属性可以包括数据量。一般的,待执行任务的数据量可以反映任务的大小程度。当待执行任务的数据量不大于设定的数据量阈值时,可以认为该待执行任务为中小任务,当待执行任务的数据量大于设定的数据量阈值时,可以认为该待执行任务为中小任务。当然,在实际应用中,可以设定多个数据量阈值,由所述多个数据量阈值可以划分出多个数据量区间,对应的数据量落在同一个数据量区间的各待执行任务可以对应于相同的集群资源集合。

进一步的,所述指定属性还可以是任务执行方式、任务优先级,等等中的至少一种。

当所述指定属性是任务执行方式时,所述任务执行方式具体可以是在线执行或离线执行,其中,在线执行可以指在执行主体在执行任务时连接着互联网,以便于快速返回执行结果,离线执行可以指在执行主体在执行任务时未连接互联网。在实际应用中,对于中小任务,用户所要求的返回执行结果的速度较高,集群可以在线执行中小任务,对于大任务,用户所要求的返回执行结果的速度较低,集群可以离线执行大任务。

需要说明的是,所述任务执行方式可以由用户指定,也可以由集群指定。

当所述指定属性是任务优先级时,若用户向集群提交的待执行任务具有不同的任务优先级,集群会优先执行任务优先级较高的待执行任务。可以分别为每个任务优先级的各待执行任务对应划分出一个集群资源集合,这样的话,任务优先级不同的待执行任务不会占据划分给对方的集群资源。

在本申请实施例中,划分出的各集群资源集合中包含的集群资源的数量可以不同。假定所述指定属性为数据量,由于执行大任务所需的集群资源相对较多,因此,预先划分集群资源集合时,可以使大任务对应的集群资源集合包含较多的集群资源,如可以包含全部的集群资源的80%,相应的,中小任务对应的集群资源集合可以包含全部的集群资源的20%。这样的话,可以提高集群的负载均衡能力,使得集群在执行大任务和中小任务均可以获取到足够的集群资源。

S103:利用确定出的集群资源集合中包含的集群资源,执行所述待执行任务。

通过上述方法,不同的待执行任务可能对应着不同集群资源集合,任一个待执行任务可以只占用该待执行任务对应的集群资源集合包含的集群资源,而不会占有集群的全部集群资源,因此,即使某个待执行任务长时间的占用该待执行任务对应的集群资源集合包含的全部集群资源,集群仍然可以利用其它集群资源集合包含的集群资源,及时地执行所述其它集群资源集合对应的其他待执行任务。

例如,当所述指定属性为数据量时,大任务、中小任务可以分别对应于不同的集群资源集合,这样的话,大任务可以只占用大任务对应的集群资源集合包含的集群资源,而不用占用中小任务对应的集群资源集合包含的集群资源,进而,集群在执行大任务的同时,也可以利用中小任务对应的集群资源集合包含的集群资源,执行中小任务,因此,集群可以及时地执行中小任务。

在本申请实施例中,对于中小任务,集群可以在线执行,对于大任务,集群可以离线执行。基于这种场景,在一种实施方式中,对于上述步骤S102,所述各集群资源集合至少包括:为在线执行任务提供集群资源的集群资源集合、为离线执行任务提供集群资源的集群资源集合。

进一步的,对于上述步骤S103,当确定出的集群资源集合是为在线执行任务提供集群资源的集群资源集合时,执行所述待执行任务,具体可以包括: 在线执行所述待执行任务。

当确定出的集群资源集合是为离线执行任务提供集群资源的集群资源集合时,执行所述待执行任务,具体可以包括:离线执行所述待执行任务。

在实际应用中,为在线执行任务提供集群资源的集群资源集合,以及集群中在线执行任务的各机器可以构成一个完整的系统,该系统可以称为:在线大规模并行处理(Massively Parallel Processing,MPP)系统。具体的,在线MPP系统可以是有诸如Impala、Sql On Spark等进程常驻、可以快速在线执行中小任务的系统。相应的,为离线执行任务提供集群资源的集群资源集合,以及集群中离线执行任务的各机器也可以构成一个完整的系统,该系统可以称为:离线映射归约(MapReduce,MP)系统。具体的,离线MP系统可以是诸如Hadoop等实现了计算模型的离线大数据处理系统。

进一步的,对于上述步骤S102,当所述指定属性包括数据量时,确定所述待执行任务对应的集群资源集合,具体可以包括:判断所述待执行任务的数据量是否不大于数据量阈值;若是,则将为在线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合;否则,将为离线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合。

例如,假定所述数据量阈值为1千兆字节(GigaByte,GB),所述待执行任务为查询任务,则集群获取该查询任务后,可以判断执行该查询任务所需查询的数据量是否不大于1GB;

若是,则可以认为该查询任务属于中小任务,因此,可以确定该查询任务对应于为在线执行任务提供集群资源的集群资源集合,进而,可以由集群中的在线MPP系统,利用为在线执行任务提供集群资源的集群资源集合中包含的集群资源,在线执行该查询任务;

否则,可以认为该查询任务属于大任务,因此,可以确定该查询任务对应于为离线执行任务提供集群资源的集群资源集合,进而,可以由集群中的离线 MP系统,利用为离线执行任务提供集群资源的集群资源集合中包含的集群资源,离线执行该查询任务。

更进一步的,在实际应用中,集群在获取待执行任务后,还可能将该待执行任务分解为设定数量的任务实例(所述任务实例也可以称为子任务),后续可以将各任务实例分别递交给集群中的不同进程分别执行,以及在各任务实例执行完毕后,对各任务实例的执行结果进行汇总合并,获得该待执行任务的执行结果。需要说明的是,本申请对集群分解待执行任务所采用的方法并不做限定,可以根据数据量进行分解,也可以根据待执行任务的其他属性进行分解。

在这种情况下,对于上述步骤S102,所述指定属性也可以是从所述待执行任务中分解出的任务实例的数量,则确定所述待执行任务对应的集群资源集合,具体可以包括:判断从所述待执行任务中分解出的任务实例的数量是否不大于实例数阈值;若是,则将为在线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合;否则,将为离线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合。

例如,假定所述实例数阈值为4,所述待执行任务为查询任务,且该查询任务的数据量为1GB。假定集群根据数据量,从该查询任务中分解任务实例,设定每个任务实例的数据量为256兆字节(MByte,MB),则该查询任务可以被分解为4个任务实例。可以看到,任务实例的数量不大于实例数阈值,因此,可以确定该查询任务对应于为在线执行任务提供集群资源的集群资源集合,进而,可以由集群中的在线MPP系统,利用为在线执行任务提供集群资源的集群资源集合中包含的集群资源,在线执行该查询任务。

在本申请实施例中,一般说来,为离线执行任务提供集群资源的集群资源集合中包含的集群资源,多于为在线执行任务提供集群资源的集群资源集合中包含的集群资源,相应的,集群离线执行任务的能力可能比在线执行任务的能力强。

在实际应用中,利用为在线执行任务提供集群资源的集群资源集合中包含 的集群资源,执行某些中小任务也可能耗费较长的时间,导致后面的中小任务不能被及时执行。在这种情况下,也可以利用为离线执行任务提供集群资源的集群资源集合中包含的集群资源,执行这些中小任务,从而可以防止集群中的各中小任务阻塞。

具体的,对于上述步骤S103,在线执行所述待执行任务时,所述方法还可以包括:对在线执行所述待执行任务的过程进行计时;当计时时长大于时长阈值时,停止在线执行所述待执行任务,并释放所述待执行任务占用的集群资源;利用为离线执行任务提供集群资源的集群资源集合,离线执行所述待执行任务。在实际应用中,一般可以将时长阈值设定为600秒。

需要说明的是,本申请对上述的数据量阈值、实例数阈值、时长阈值的具体取值并不做限定,这几个阈值均可以根据实际应用场景进行设定。

在本申请实施例中,预先划分各集群资源集合之后,还可以对集群基于所述各集群资源集合,执行各待执行任务的执行过程以及执行结果,以日志的形式进行记录。通过分析日志,可以确定集群内的负载均衡状况,进而可以根据所述负载均衡状况,定期地或不定期地对各集群资源集合中包含的集群资源进行调整,以优化集群内的负载均衡状况。

例如,假定通过分析近一周的日志,发现利用为在线执行任务提供集群资源的集群资源集合包含的集群资源,执行中小任务时,经常执行超时,而对于为离线执行任务提供集群资源的集群资源集合,该集群资源集合中的部分集群资源却经常处于空闲状态。这样的话,可以将经常处于空闲状态的这部分集群资源,重新划分至为在线执行任务提供集群资源的集群资源集合中,以用于在线执行中小任务,从而优化了集群内的负载均衡状况。

在本申请实施例中,还提供了一种在实际应用中,可以实现本申请提供的集群中的任务执行方法的集群架构。如图2所示。

可以看到,图2中包括L个客户端,一个集群,该集群中包括:任务调度机、在线MPP系统、离线MR系统,其中,在线MPP系统中包含有N台任 务执行机,离线MR系统中包含有M台任务执行机。

在线MPP系统可以包括为在线执行任务提供集群资源的集群资源集合,离线MR系统可以包括为离线执行任务提供集群资源的集群资源集合。集群资源集合中包含的集群资源可以为任务执行机。

基于图2中的集群架构,实现的本申请提供的集群中的任务执行过程,如图3所示,具体可以包括以下步骤:

S301:任务调度机获取到用户通过客户端提交的待执行任务。

S302:任务调度机判断所述待执行任务的数据量是否不大于数据量阈值,若是,则执行步骤S303,否则,执行步骤S306。

S303:任务调度机将所述待执行任务发送给在线MPP系统。

S304:在线MPP系统通过自身中包含的任务执行机,在线执行所述待执行任务,同时开始对执行所述待执行任务的时间进行计时。

S305:当计时时长不大于时长阈值时,继续执行所述待执行任务直至执行完毕,当计时时长大于时长阈值时,停止执行所述待执行任务,并将所述待执行任务发送给离线MR系统离线执行。

S306:任务调度机将所述待执行任务发送给离线MR系统离线执行。

以上为本申请实施例提供的集群中的任务执行方法,基于同样的思路,本申请实施例还提供相应的集群中的任务执行装置,如图4所示。

图4为本申请实施例提供的集群中的任务执行装置结构示意图,具体包括:

获取模块401,用于获取待执行任务;

确定模块402,用于根据所述待执行任务的指定属性,在预先划分的各集群资源集合中,确定所述待执行任务对应的集群资源集合;

执行模块403,用于利用确定出的集群资源集合中包含的集群资源,执行所述待执行任务。

所述各集群资源集合至少包括:为在线执行任务提供集群资源的集群资源 集合、为离线执行任务提供集群资源的集群资源集合。

当所述指定属性包括数据量时,所述确定模块402具体用于:判断所述待执行任务的数据量是否不大于数据量阈值;若是,则将为在线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合;否则,将为离线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合。

当所述指定属性包括从所述待执行任务中分解出的任务实例的数量时,所述确定模块402具体用于:判断从所述待执行任务中分解出的任务实例的数量是否不大于实例数阈值;若是,则将为在线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合;否则,将为离线执行任务提供集群资源的集群资源集合,确定为所述待执行任务对应的集群资源集合。

当确定出的集群资源集合是为在线执行任务提供集群资源的集群资源集合时,所述执行模块403具体用于:利用为在线执行任务提供集群资源的集群资源集合中包含的集群资源,在线执行所述待执行任务;

当确定出的集群资源集合是为离线执行任务提供集群资源的集群资源集合时,所述执行模块403具体用于:利用为离线执行任务提供集群资源的集群资源集合中包含的集群资源,离线执行所述待执行任务。

所述装置还包括:

切换模块404,用于对所述执行模块403在线执行所述待执行任务的过程进行计时,当计时时长大于时长阈值时,停止在线执行所述待执行任务,并释放所述待执行任务占用的集群资源,利用为离线执行任务提供集群资源的集群资源集合,离线执行所述待执行任务。

具体的上述如图7所示的装置可以位于集群中的机器上。

本申请实施例提供一种集群中的任务执行方法及装置,该方法获取待执行任务,根据所述待执行任务的指定属性,在预先划分的各集群资源集合中,确定所述待执行任务对应的集群资源集合,利用确定出的集群资源集合中包含的 集群资源,执行所述待执行任务。通过上述方法,不同的待执行任务可能对应着不同集群资源集合,任一个待执行任务可以只占用该待执行任务对应的集群资源集合包含的集群资源,而不会占有集群的全部集群资源,因此,即使某个待执行任务长时间的占用该待执行任务对应的集群资源集合包含的全部集群资源,集群仍然可以利用其它集群资源集合包含的集群资源,及时地执行所述其它集群资源集合对应的其他待执行任务。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1