执行计算任务的方法、装置及系统与流程

文档序号:12801747阅读:224来源:国知局
本申请涉及互联网的领域,特别涉及一种执行计算任务的方法、装置及系统。
背景技术
::在分布式计算平台中,如图1所示,通常会设置一主设备和多个从设备,主设备主要用于接收计算任务,且分配计算任务至从设备;从设备主要用于根据主设备的分配,执行计算任务。而从设备执行计算任务的过程一般如下:首先确定主设备分配计算任务的数据源;然后读取数据源存储的数据;再然后对读取的数据进行过滤,获取目标数据;最后利用计算程序对目标数据进行计算,即执行计算任务。在实际应用中,分布式计算平台可同时接收多个计算任务,而如果所接收的多个计算任务的数据源相同,那么从设备需要从同一数据源多次读取数据;比如分布式计算平台接收到a、b、c三个计算任务,且这三个计算任务的数据源均为m;而主设备分别将a、b、c三个计算任务分配至从设备a、从设备b以及从设备c执行;那么从设备a在执行计算任务a时,需首先确定计算任务a的数据源m,然后从数据源m读取数据;从设备b在执行计算任务b时,也需首先确定计算任务b的数据源m,然后从数据源m读取数据;从设备c在执行计算任务c时,亦是如此。由上可见,在现有技术中,当分布式计算平台所接收多个计算任务的数据源相同时,从设备需多次从同一数据源读取数据,从而使得分布式计算平台执行任务的效率低下。申请内容本申请实施例中提供了一种执行计算任务的方法、装置及系统,以提高分布式计算平台执行任务的效率。为了解决上述技术问题,本申请实施例公开了如下技术方案:第一方面,公开了一种执行计算任务的方法,包括:解析所接收的多个计算任务,获取每个计算任务的数据源;判断多个计算任务中,是否存在数据源相同的计算任务;如果存在,从相同数据源读取数据;输出所读取数据至相同数据源计算任务的执行设备,所述执行设备将根据所读取数 据执行计算任务。可选的,第一方面的方法还包括:判断数据源相同的计算任务中,是否存在过滤条件,所述过滤条件用于对读取的数据进行过滤;如果存在,利用所述过滤条件对所读取的数据进行过滤,获得目标数据。可选的,所读取数据包括目标数据,所述输出所读取数据至相同数据源计算任务的执行设备,包括:输出所述目标数据至相同数据源计算任务的执行设备。可选的,第一方面的方法还包括:判断多个计算任务间是否存在执行顺序;如果不存在,使执行设备并列执行多个计算任务。第二方面,公开了一种执行计算任务的方法,包括:判断一计算任务的输出是否作为多个计算任务的输入;如果是,获取所述计算任务输出的数据源,且从所述数据源读取数据;输出所读取数据至所述多个计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务。可选的,第二方面的方法还包括:判断多个计算任务间是否存在执行顺序;如果不存在,使执行设备并列执行多个计算任务。第三方面,公开了一种执行计算任务的装置,包括:解析模块,用于解析所接收的多个计算任务,获取每个计算任务的数据源;第一判断模块,用于判断多个计算任务中,是否存在数据源相同的计算任务;读取模块,用于当存在数据源相同的计算任务时,从相同数据源读取数据;第一输出模块,用于输出所读取数据至相同数据源计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务。可选的,第三方面的装置还包括:第二判断模块,用于判断据源相同的计算任务中,是否存在过滤条件,所述过滤条件用于对读取的数据进行过滤;过滤模块,用于当所述计算任务中,存在过滤条件时,利用所述过滤条件对所读取的数据进行过滤,获得目标数据。可选的,所读取数据包括目标数据,所述第一输出模块,包括:目标数据输出单元,用于输出所述目标数据至相同数据源计算任务的执行设备。可选的,第三方面的装置还包括:第三判断模块,用于判断多个计算任务间是否存在执行顺序;第一并列执行模块,用于当多个计算任务间不存在执行顺序时,使执行设备并列执行多个计算任务。第四方面,公开一种执行计算任务的装置,包括:第四判断模块,用于判断一计算任务的输出是否作为多个计算任务的输入;获取读取模块,用于当一计算任务的输出作为多个计算任务的输入时,获取所述计算任务输出的数据源,且从所述数据源读取数据;第二输出模块,用于输出所读取数据至所述多个计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务。可选的,第四方面的装置还包括:第五判断模块,用于判断多个计算任务间是否存在执行顺序;第二并列执行模块,用于当多个计算任务间不存在执行顺序时,使执行设备并列执行多个计算任务。第五方面,公开一种执行计算任务的系统,所述系统包括如权利要求7—12任一项所述的执行计算任务的装置以及执行设备;所述执行设备,用于根据执行计算任务的装置所输出的读取数据,执行计算任务。由以上技术方案可见,在本申请实施例中,首先解析所接收的多个计算任务,获得每个计算任务的数据源;然后判断多个计算任务中,是否存在数据源相同的计算任务;如果存在,从相同数据源读取数据;最后,输出所读取数据至相同数据源计算任务的执行设备;由于执行设备可直接根据所读取数据执行任务,因此,采用本申请实施例所公开的方法、装置及系统,对于具有相同数据源的计算任务,仅需从数据源读取一次数据即可,相比现有技术中的多次读取数据的方式,提高了分布式计算平台执行任务的效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例所公开的分布式计算平台的一示意图;图2为本申请实施例所公开的执行计算任务的方法一流程示意图;图3为本申请实施例所公开的执行计算任务的方法另一流程示意图;图4a为本申请实施例所公开的执行计算任务的方法又一流程示意图;图4b为本申请实施例所公开的执行计算任务的方法另一流程示意图;图5为本申请实施例所公开的执行计算任务的方法另一流程示意图;图6为本申请实施例所公开的计算任务示意图;图7为本申请实施例所公开的执行计算任务的方法又一流程示意图;图8为本申请实施例所公开的执行计算任务的装置的一结构示意图;图9为本申请实施例所公开的执行计算任务的系统的一结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请公开了一种执行计算任务的方法,所述方法应用于如图1所示的分布式计算平台中,在本申请实施例中,当分布式计算平台接收到多个计算任务时,分布式计算平台的主设备首先为每个计算任务分配执行计算任务的从设备(即执行设备),然后主设备将按照,如图2所示流程,对计算任务进行处理,具体如下:步骤s21:解析所接收的多个计算任务,获得每个计算任务的数据源;在本申请实施例中,分布式计算平台所接收的计算任务通常以程序代码的形式呈现,且程序代码中通常包含计算任务的数据源。以以下计算任务为例,详细说明步骤s21:“createtabletest__00asselect*fromtbcdm.dim_tb_itmwhereds=’20150904’anditem_id=0;”在本申请实施例中,通过对上述程序代码的解析,即可获得该计算任务的数据源“tbcdm.dim_tb_itm”。步骤s22:判断多个计算任务中,是否存在数据源相同的计算任务;如果存在,执行步骤s23;否则执行步骤s25;步骤s23:从相同数据源读取数据;在本申请实施例中,例如接收两个计算任务,分别为计算任务a和计算任务b,通过步骤s21的解析,获得计算任务a的数据源为“tbcdm.dim_tb_itm”;计算任务b的数据源为“tbcdm.dim_tb_itm”;通过步骤s22的判断,可确定计算任务a与计算任务b的数据源相同,均为“tbcdm.dim_tb_itm”;那么,在步骤s23中,将读取数据源“tbcdm.dim_tb_itm”处所存储的数据。步骤s24:输出所读取数据至相同数据源计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务;在本申请实施例中,上述步骤s24可具体为将所读取数据写入相同数据源计算任务的执行设备,而执行设备将利用相应的应用程序对写入的数据进行处理,从而完成计算任务。步骤s25:输出不相同数据源计算任务至执行设备。在本申请实施例中,不相同数据源计算任务的执行设备,可具体按照如下方式,执行计算任务:首先通过主设备获取不相同计算任务的数据源(由于在本申请实施例中,主设备预先已通过解析计算任务,获得每个计算任务的数据源,因此执行设备可获取计算任务的数据源);然后从相应数据源读取数据;最后,利用相应的计算程序对所读取数据进行计算,从而完成计算任务。在实际应用中,由于分布式计算平台,可处理各种类型的计算任务,比如sql、pl以及mr等类型,而对于不同类型的计算任务,计算平台的处理流程均不相同,因此,在本申请实施例中,当用户需采用上述方法,对计算任务进行处理时,可预先将上述计算任务打包成一预定类型,比如paratask类型,而计算平台一旦检测到预定类型的计算任务时,将采用上述流程对计算任务进行处理。由以上技术方案可见,在本申请实施例中,首先解析所接收的多个计算任务,获得每个计算任务的数据源;然后判断多个计算任务中,是否存在数据源相同的计算任务; 如果存在,从相同数据源读取数据;最后,输出所读取数据至相同数据源计算任务的执行设备;由于执行设备可直接根据所读取数据执行任务,因此,采用本申请实施例所公开的方法,对于具有相同数据源的计算任务,仅需从数据源读取一次数据即可,相比现有技术中的多次读取数据的方式,提高了分布式计算平台执行任务的效率。本申请公开了另一种执行计算任务的方法,所述方法应用于如图1所示的分布式计算平台中,在本申请实施例中,当分布式计算平台接收到多个计算任务时,分布式计算平台的主设备首先为每个计算任务分配执行计算任务的从设备(即执行设备),然后主设备将按照,如图3所示流程,对计算任务进行处理,具体如下:步骤s31:解析所接收的多个计算任务,获得每个计算任务的数据源;步骤s32:判断多个计算任务中,是否存在数据源相同的计算任务;如果存在,执行步骤s33;否则,执行步骤s38;步骤s33:从相同数据源读取数据;步骤s34:判断数据源相同的计算任务中,是否存在过滤条件;如果存在,执行步骤s35;否则执行s37;在实际应用中,分布式计算平台所接收的有些计算任务,并不是对数据源所存储的全部数据进行处理,而仅需对其中的一部分数据进行处理,此时,会在计算任务中,设置过滤条件,所述过滤条件用于对所读取的数据进行过滤;比如,分布式计算平台所接收的一计算任务如下:“createtabletest__00asselect*fromtbcdm.dim_tb_itmwhereds=’20150904’anditem_id=0;”通过对上述计算任务进行分析可得,该计算任务是对数据源“tbcdm.dim_tb_itm”所存储数据中,满足“whereds=’20150904’anditem_id=0”这一条件的数据进行处理,而“whereds=’20150904’anditem_id=0”即为该计算任务的过滤条件。步骤s35:利用所述过滤条件对所读取数据进行过滤,获得目标数据;步骤s36:输出目标数据至相同数据源计算任务的执行设备,所述执行设备将根据目标数据执行计算任务;在本申请实施例中,可具体将目标数据写入至相同数据源计算任务的执行设备,而执行设备直接利用相应计算程序对目标数据进行处理即可。步骤s37:输出所读取数据至相同数据源计算任务的执行设备;步骤s38:输出不相同数据源计算任务至执行设备;由上可见,在本申请实施例中,首先解析所接收的多个计算任务,获得每个计算任务的数据源;然后判断多个计算任务中,是否存在数据源相同的计算任务;如果存在,从相同数据源读取数据;最后,输出所读取数据至相同数据源计算任务的执行设备;由于执行设备可直接根据所读取数据执行任务,因此,采用本申请实施例所公开的方法,对于具有相同数据源的计算任务,仅需从数据源读取一次数据即可,相比现有技术中的多次读取数据的方式,提高了分布式计算平台执行任务的效率。在本申请的另一可行实施例中,上述所有实施例中的步骤s21或步骤s31可包括:a:确定多个计算任务的编写语言;b:根据所述编写语言的语法规则,分别对多个计算任务进行解析,获得每个计算任务的数据源。如前所述,计算任务通常以程序代码的形式呈现,而用户可采用不同的编写语言编写计算任务,且不同编写语言的语法规则为不同的。因此,在本申请实施例中,需根据计算任务编写语言的语法规则,确定计算任务的数据源在本申请的又一可行实施例中,如图4a或4b所示,上述所有实施例中的方法还可包括:步骤s41:判断多个计算任务间是否存在执行顺序;如果存在,执行步骤s42;否则,执行步骤s43;步骤s42:使执行设备按顺序执行多个计算任务;步骤s43:使执行设备并列执行多个计算任务。在实际应用中,分布式计算平台所接收的多个计算任务可能存在执行顺序,比如:接收计算任务a、b、c以及d,且计算任务a的输出作为计算任务b的输入,计算任务b的输出作为计算任务c的输入,计算任务c的输出作为计算任务d的输出,那么此时执行设备必须按顺序执行计算任务a—b—c—d。而分布式计算平台所接收的大部分计算任务为独立的,即多个计算任务间并不存在执行顺序,而现有技术中,仍按接收计算任务 的顺序执行计算任务,那么将造成计算任务的执行效率低下。在本申请实施例中,当多个计算任务不存在执行顺序时,可使执行设备并列执行多个计算任务。具体的,当多个计算任务分配至不同的执行设备时,可使不同的执行设备同时执行多个计算任务,而当多个计算任务分配至同一执行设备时,可使执行设备分配不同的进程为多个计算任务,从而同时执行多个计算任务。本申请还公开了一种执行计算任务的方法,如图5所示,所述方法至少包括:步骤s51:判断一计算任务的输出是否作为多个计算任务的输入;如果是,执行步骤s52;否则,结束流程;在分布式计算平台中,如图6所示,一计算任务的输出结果可作为多个计算任务的输入,此时这多个计算任务的输入实际是相同的。由于在实际应用中,计算任务n0输出结果的数据量较大,因此一般将输出结果的存储地址作为数据源,输入至n1至nn多个计算任务。因此,在现有技术中,执行设备在执行n1至nn多个计算任务时,仍需多次从同一数据源读取数据。步骤s52:获取所述计算任务输出的数据源,且从所述数据源读取数据;在本申请实施例中,仍沿用上述举例,即从上述数据源读取计算任务n0的输出结果。步骤s53:输出所读取数据至所述多个计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务。在本申请实施例中,仍沿用上述举例,即将所读取的输出结果分别输出至计计算任务n0至nn的执行设备。由上可见,采用本申请实施例中的方法,对于n1至nnn个计算任务,只需读取一次数据,相对于现有技术中的,多次读取数据,提高了分布式计算平台执行任务的效率。在本申请的另一可行实施例中,如图7所示,上述所有实施例中的方法,还可包括:步骤s71:判断多个计算任务间是否存在执行顺序;如果存在,执行步骤s72;否则,执行步骤s73;在本申请实施例中,仍沿用上述举例,即判断计算任务n1至nn,n个计算任务间是否存在执行顺序。步骤s72:使执行设备按顺序执行多个计算任务;步骤s73:使执行设备并列执行多个计算任务。在本申请实施例中,仍沿用上述举例,即使计算任务n1至nn的执行设备,并列执行n个计算任务。由于在现有技术中,执行设备一般按顺序执行计算任务,而在本申请中,当多个计算任务间不存在执行顺序时,使执行设备并列执行多个计算任务,从而提高分布式计算平台执行任务的效率。在本申请的另一可行实施例中,以分布式计算平台输入t1、t2、t3以及t4四个计算任务为例,详细说明本申请的过程:假设分布式计算平台输入t1、t2、t3以及t4四个计算任务,且计算任务t1具体如下:“createtabletest__00asselect*fromtbcdm.dim_tb_itmwhereds=’20150904’anditem_id=0;”计算任务t2具体如下:“createtabletest__01asselect*fromtbcdm.dim_tb_itmwhereds=’20150904’anditem_id=1;”计算任务t3具体如下:“createtabletest__02asselect*fromtbcdm.dim_tb_itmwhereds=’20150904’anditem_id=2;”计算任务t4具体如下:“createtabletestasselectitem_idfrom(select*fromtest_00unionallselect*fromtest_01unionallselect*fromtest_02)pargroupbyitem_id分别对计算任务t1、t2、t3以及t4进行解析,可获得计算任务t1的数据源为“tbcdm.dim_tb_itm”,过滤条件为“ds=’20150904’anditem_id=0”;计算任务t2的数据源为“tbcdm.dim_tb_itm”,过滤条件为“ds=’20150904’anditem_id=1”;计算任务t3的数据源为“tbcdm.dim_tb_itm”,过滤条件为“ds=’20150904’anditem_id=2”;计算任务t4的数据源为“select*fromtest_00unionallselect*fromtest_01unionallselect*fromtest_02”,过滤条件为“groupbyitem_id”。由上可见,计算任务t1、t2以及t3的数据源相同,均为“tbcdm.dim_tb_itm”。因此,在本申请实施例中,可读取“tbcdm.dim_tb_itm”处所存储的数据;然后,分别采用计算任务t1的过滤条件““ds=’20150904’anditem_id=0”、计算任务t2的过滤条件“ds=’20150904’anditem_id=1”、计算任务t3的过滤条件“ds=’20150904’anditem_id=2”对所读取的数据进行过滤,获得计算任务t1的目标数据、计算任务t2的目标数据以及计算任务t3的目标数据。最后,将计算任务t1、t2以及t3的目标数据分别写入至执行设备的存储空间,所述执行设备将直接利用目标数据,执行计算任务t1、t2以及t3。同时,由于计算任务t1、t2、t3相互间并不存在执行顺序,因此,可使执行设备并列执行上述三个计算任务。而对于计算任务t4,可直接将t4输出至预先分配的执行设备,所述执行设备按照现有技术中的方法,执行计算任务t4。由于在本申请实施例中,可一次读取t1、t2、t3三个计算任务的数据源,且可同时执行上述三个计算任务,相对于现有技术中的方法,三次读取数据源,且t1、t2、t3三个计算任务按顺序执行,可提高分布式计算平台,执行任务的效率。通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。与本申请提供的执行计算任务的方法实施例相对应的,本申请还提供了一种执行计算任务的装置,如图8所示,所述装置至少包括:解析模块81,用于解析所接收的多个计算任务,获取每个计算任务的数据源;第一判断模块82,用于判断多个计算任务中,是否存在数据源相同的计算任务;读取模块83,用于当存在数据源相同的计算任务时,从相同数据源读取数据;第一输出模块84,用于输出所读取数据至相同数据源计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务。由以上技术方案可见,在本申请实施例中,首先解析所接收的多个计算任务,获得每个计算任务的数据源;然后判断多个计算任务中,是否存在数据源相同的计算任务;如果存在,从相同数据源读取数据;最后,输出所读取数据至相同数据源计算任务的执行设备;由于执行设备可直接根据所读取数据执行任务,因此,采用本申请实施例所公开的装置,对于具有相同数据源的计算任务,仅需从数据源读取一次数据即可,相比现有技术中的多次读取数据的方式,提高了分布式计算平台执行任务的效率。在本申请的又一可行实施例中,上述所有实施例中的装置还可包括:第二判断模块,用于判断据源相同的计算任务中,是否存在过滤条件,所述过滤条件用于对读取的数据进行过滤;过滤模块,用于当所述计算任务中,存在过滤条件时,利用所述过滤条件对所读取的数据进行过滤,获得目标数据。由上可见,在本申请实施例中,可对数据源读取的数据进行过滤。在本申请的另一可行实施例中,上述所有实施例中的所读取数据包括目标数据,所述第一输出模块,包括:目标数据输出单元,用于输出所述目标数据至相同数据源计算任务的执行设备。在本申请实施例中,执行设备可直接对目标数据进行计算,从而提高执行计算任务的效率。在本申请的又一可行实施例中,上述所有实施例中的装置还可包括:第三判断模块,用于判断多个计算任务间是否存在执行顺序;第一并列执行模块,用于当多个计算任务间不存在执行顺序时,使执行设备并列执行多个计算任务。由上可见,采用本申请实施例所公开的装置,可并列执行多个计算任务,从而提高分布式计算平台执行任务的效率。与本申请提供的执行计算任务的方法实施例相对应的,本申请又提供了一种执行计算任务的装置,所述装置至少包括:第四判断模块,用于判断一计算任务的输出是否作为多个计算任务的输入;获取读取模块,用于当一计算任务的输出作为多个计算任务的输入时,获取所述计算任务输出的数据源,且从所述数据源读取数据;第二输出模块,用于输出所读取数据至所述多个计算任务的执行设备,所述执行设备将根据所读取数据执行计算任务。由上可见,采用本申请实施例中的方法,对于多个计算任务,只需读取一次数据,相对于现有技术中的,多次读取数据,提高了分布式计算平台执行任务的效率。在本申请的又一可行实施例中,上述所有实施例中的装置还可包括:第五判断模块,用于判断多个计算任务间是否存在执行顺序;第二并列执行模块,用于当多个计算任务间不存在执行顺序时,使执行设备并列执行多个计算任务。由上可见,采用本申请实施例所公开的装置,可并列执行多个计算任务,从而提高分布式计算平台执行任务的效率。本申请还公开了一种执行计算任务的系统,如图9所示,所述系统包括上述所有实施例中的执行计算任务的装置91以及执行设备92;在本申请实施例中,执行计算任务的装置91的功能可具体由分布式计算平台的主设备实现,执行设备92的功能可具体由分布式计算平台的从设备实现;执行设备92可根据执行计算任务的装置91所输出的读取数据,执行计算任务。采用本申请实施例中所公开的执行计算任务的系统,可提高分布式计算平台执行计算任务的效率。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1