掌桥专利:专业的专利平台
掌桥专利
首页

资源分配方法及分配装置、计算机可读存储介质

文献发布时间:2023-06-19 11:32:36


资源分配方法及分配装置、计算机可读存储介质

技术领域

本发明涉及资源分配技术领域,具体而言,涉及一种资源分配方法及分配装置、计算机可读存储介质。

背景技术

Spark是一种用于大规模数据处理的快速通用计算引擎,相关技术中,使用传统spark on yarn提交任务时,yarn队列可以管理各个任务之间的资源分配,例如可以根据不同队列类型以及优先级等控制资源的分配,但具体到每一个任务时还是需要手动调试来指定该任务的配置参数,以确定其分配的资源。如果系统需要自动批量发起大量任务时,spark的任务参数手动设定会存在许多问题,比如,问题1,如果设定统一默认参数则会给资源需求少的任务分配多余资源,从而造成资源的浪费;问题2,对资源需求大的任务则会因为资源配置的不足,影响任务的执行效率甚至导致任务无法执行;问题3,这些参数通常由开发人员手动设定、调整,对于使用者的专业能力要求较高,使一些非专业人员难以使用。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种资源分配方法及分配装置、计算机可读存储介质,以至少解决相关技术中进行批量任务处理时,手动配置参数会导致资源浪费以及任务执行效率低下的技术问题。

根据本发明实施例的一个方面,提供了一种资源分配方法,包括:接收资源分配任务以及资源初始参数,其中,所述资源分配任务中包括多个任务指标以及每个所述任务指标的权重系数;根据每个所述任务指标的权重系数,计算任务所需资源的影响因子;基于所述影响因子和所述资源初始参数,确定每个任务资源因素的配置参数;基于每个任务资源因素的配置参数,为所述资源分配任务分配对应的资源。

可选地,在接收资源分配任务以及资源初始参数之前,所述资源分配方法还包括:获取在历史时间段中的资源请求任务集群,其中,所述资源请求任务集群中包括每个资源请求任务对应的资源分配量;基于所有的资源分配量,计算资源初始参数。

可选地,所述资源初始参数包括:CPU核数和内存使用量。

可选地,在接收资源分配任务以及资源初始参数之后,所述资源分配方法还包括:确定计算任务抽象接口,其中,所述计算任务抽象接口用于定义所述资源分配任务,以对所述资源分配任务进行资源配置;确定所述资源分配任务的各项任务指标以及指标属性。

可选地,所述指标属性包括下述至少之一:任务涉及到的表数量、任务大小、数据库复杂等级、同类型任务的历史日志分析结果。

可选地,在确定所述资源分配任务的各项任务指标以及指标属性之后,所述资源分配方法还包括:获取历史预设时间段内所有资源分配任务的任务数据;基于历史预设时间段内所有资源分配任务的任务数据和多元线性回归方程,计算每个所述任务指标的权重系数和每个所述任务指标的指标值。

可选地,根据每个所述任务指标的权重系数,计算任务所需资源的影响因子的步骤,包括:将每个任务指标的权重系数和指标值输入任务性能预测模型,输出所述资源分配任务在资源参数列表下的预测执行时长;基于所述预测执行时长和历史任务平均执行时长之间的时长比值,确定所述资源分配任务所需资源的影响因子。

可选地,基于所述影响因子和所述资源初始参数,确定每个任务资源因素的配置参数的步骤,包括:确定每个所述任务指标的取值范围;基于所述影响因子、所述资源初始参数和每个所述任务指标的取值范围,确定每个任务资源因素的配置参数。

根据本发明实施例的另一方面,还提供了一种资源分配装置,包括:接收单元,用于接收资源分配任务以及资源初始参数,其中,所述资源分配任务中包括多个任务指标以及每个所述任务指标的权重系数;计算单元,用于根据每个所述任务指标的权重系数,计算任务所需资源的影响因子;确定单元,用于基于所述影响因子和所述资源初始参数,确定每个任务资源因素的配置参数;分配单元,用于基于每个任务资源因素的配置参数,为所述资源分配任务分配对应的资源。

可选地,所述资源分配装置还包括:第一获取模块,用于在接收资源分配任务以及资源初始参数之前,获取在历史时间段中的资源请求任务集群,其中,所述资源请求任务集群中包括每个资源请求任务对应的资源分配量;第一计算模块,用于基于所有的资源分配量,计算资源初始参数。

可选地,所述资源初始参数包括:CPU核数和内存使用量。

可选地,所述资源分配装置还包括:第一确定模块,用于在接收资源分配任务以及资源初始参数之后,确定计算任务抽象接口,其中,所述计算任务抽象接口用于定义所述资源分配任务,以对所述资源分配任务进行资源配置;第二确定模块,确定所述资源分配任务的各项任务指标以及指标属性。

可选地,所述指标属性包括下述至少之一:任务涉及到的表数量、任务大小、数据库复杂等级、同类型任务的历史日志分析结果。

可选地,所述资源分配装置还包括:第二获取模块,用于在确定所述资源分配任务的各项任务指标以及指标属性之后,获取历史预设时间段内所有资源分配任务的任务数据;第二计算模块,用于基于历史预设时间段内所有资源分配任务的任务数据和多元线性回归方程,计算每个所述任务指标的权重系数和每个所述任务指标的指标值。

可选地,所述计算单元包括:第一输出子模块,用于将每个任务指标的权重系数和指标值输入任务性能预测模型,输出所述资源分配任务在资源参数列表下的预测执行时长;第一确定子模块,用于基于所述预测执行时长和历史任务平均执行时长之间的时长比值,确定所述资源分配任务所需资源的影响因子。

可选地,所述确定单元包括:第一确定子模块,用于确定每个所述任务指标的取值范围;第二确定子模块,用于基于所述影响因子、所述资源初始参数和每个所述任务指标的取值范围,确定每个任务资源因素的配置参数。

根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述存储介质用于存储计算机程序,其中,所述计算机程序在被处理器执行时控制所述计算机可读存储介质所在设备执行上述的资源分配方法。

在本发明实施例中,通过接收资源分配任务以及资源初始参数,其中,资源分配任务中包括多个任务指标以及每个任务指标的权重系数,然后根据每个任务指标的权重系数,计算任务所需资源的影响因子,之后基于影响因子和资源初始参数,确定每个任务资源因素的配置参数,最后基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。在该实施例中,通过自动化配置计算资源参数的方法以及任务参数影响因子的多指标权重计算方式,实现了资源的智能动态分配,避免了在手动配置参数时产生的繁琐工作,同时,也避免了批量任务使用相同资源导致的不同计算任务对计算集群的资源浪费或者效率低下的情况产生,进而解决了相关技术中进行批量任务处理时,手动配置参数会导致资源浪费以及任务执行效率低下的技术问题。

附图说明

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

图1是根据本发明实施例的一种可选的资源分配方法的流程图;

图2是根据本发明实施例的另一种可选的智能动态资源分配的示意图;

图3是根据本发明实施例的一种可选的资源分配装置的示意图;

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或名词做出解释:

Hadoop,是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapReduce,HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

Spark,是专为大规模数据处理而设计的快速通用的计算引擎,是一种与Hadoop相似的开源集群计算环境。Spark启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。它可以完成各种各样的运算,包括SQL查询、文本处理、机器学习等。

YARN,是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。

本发明下述各实施例所涉及的批量任务包括但不限于:spark任务,hadoop任务以及其它涉及到资源分配的任务等,通过一种智能的动态资源分配的方法来解决批量任务进行工作时面临的资源配置问题。

下面结合各实施例对本发明进行详细说明。

实施例一

根据本发明实施例,提供了一种资源分配方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种可选的资源分配方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,接收资源分配任务以及资源初始参数,其中,资源分配任务中包括多个任务指标以及每个任务指标的权重系数;

步骤S104,根据每个任务指标的权重系数,计算任务所需资源的影响因子;

步骤S106,基于影响因子和资源初始参数,确定每个任务资源因素的配置参数;

步骤S108,基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。

通过上述步骤,可以接收资源分配任务以及资源初始参数,其中,资源分配任务中包括多个任务指标以及每个任务指标的权重系数,然后根据每个任务指标的权重系数,计算任务所需资源的影响因子,之后基于影响因子和资源初始参数,确定每个任务资源因素的配置参数,最后基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。在该实施例中,通过自动化配置计算资源参数的方法以及任务参数影响因子的多指标权重计算方式,实现了资源的智能动态分配,避免了在手动配置参数时产生的繁琐工作,同时也避免了批量任务使用相同资源导致的不同计算任务对计算集群的资源浪费或者效率低下的情况产生,进而解决了相关技术中进行批量任务处理时,手动配置参数会导致资源浪费以及任务执行效率低下的技术问题。

下面结合上述各实施步骤对本发明实施例进行详细说明。

步骤S102,接收资源分配任务以及资源初始参数,其中,资源分配任务中包括多个任务指标以及每个任务指标的权重系数。

在本实施例中,资源分配任务中的多个任务指标包括但不限于:任务涉及到的表数量、大小、以及sql复杂度、同类任务历史日志分析结果等指标属性,其中,任务中涉及到的表数量和大小的相关信息可以由sql字符串处理或者通过hadoop文件系统获取;sql复杂度可通过sql中一系列二级指标得到,其中,二级指标包含:join目标数量和大小,以及可以通过spark_sql提供的相关API(应用程序编程接口)分析其物理执行计划,从而得出任务中涉及到的stage数量等信息。

资源初始参数包括但不限于:executor的CPU核数、executor进程的内存使用量、driver的CPU核数、driver进程的内存使用量等公共参数列表,可以根据集群规模日常任务量等对资源初始参数进行初始化,即计算出其平均资源参数。

可选的,在接收资源分配任务以及资源初始参数之前,资源分配方法还包括:获取在历史时间段中的资源请求任务集群,其中,资源请求任务集群中包括每个资源请求任务对应的资源分配量;基于所有的资源分配量,计算资源初始参数。

另一种可选地,资源初始参数包括:CPU核数和内存使用量。

其中,CPU核数包括但不限于:executor的CPU核数、driver的CPU核数等,内存使用量包括但不限于:executor进程的内存使用量、driver进程的内存使用量等。

可选的,在接收资源分配任务以及资源初始参数之后,资源分配方法还包括:确定计算任务抽象接口,其中,计算任务抽象接口用于定义资源分配任务,以对资源分配任务进行资源配置;确定资源分配任务的各项任务指标以及指标属性。

另一种可选地,指标属性包括下述至少之一:任务涉及到的表数量、任务大小、数据库复杂等级、同类型任务的历史日志分析结果。

在本实施例中,任务中涉及到的表数量和大小的相关信息可以通过sql字符串进行处理得到,也可以通过hadoop文件系统获取,数据库复杂度等级可以由数据库中一系列二级指标得出的。上述的sql复杂度与数据库复杂度含义相同。

可选的,在确定资源分配任务的各项任务指标以及指标属性之后,资源分配方法还包括:获取历史预设时间段内所有资源分配任务的任务数据;基于历史预设时间段内所有资源分配任务的任务数据和多元线性回归方程,计算每个任务指标的权重系数和每个任务指标的指标值。

在本实施例中,可以根据获取的历史任务数据以及多元线性回归方程计算出多指标的权重系数常量,因为有些任务参数指标较多,所以使用下述多元线性回归模型计算多指标的权重,

其中,y为任务运行时间,x为指标值,w为权重,b为偏置项。

通过对大量历史日志数据分析计算之后,进行曲线拟合,进而计算出指标的权重系数常量。

步骤S104,根据每个任务指标的权重系数,计算任务所需资源的影响因子。

可选的,根据每个任务指标的权重系数,计算任务所需资源的影响因子的步骤,包括:将每个任务指标的权重系数和指标值输入任务性能预测模型,输出资源分配任务在资源参数列表下的预测执行时长;基于预测执行时长和历史任务平均执行时长之间的时长比值,确定资源分配任务所需资源的影响因子。

例如,在计算任务的资源影响因子时,将上述历史日志得出的回归模型作为spark任务的性能预测模型,输入具体实例任务的各项指标值及权重,得到该任务在默认平均资源参数列表下的预测执行时间t,然后将该t值与历史任务平均时长的比值r为所需资源的影响因子。

步骤S106,基于影响因子和资源初始参数,确定每个任务资源因素的配置参数。

可选的,基于影响因子和资源初始参数,确定每个任务资源因素的配置参数的步骤,包括:确定每个任务指标的取值范围;基于影响因子、资源初始参数和每个任务指标的取值范围,确定每个任务资源因素的配置参数。

在本实施例中,每个任务指标的取值范围包括但不限于:队列的cpu核、内存等,根据每个任务的影响因子、资源初始参数以及指标的取值范围,使用不同的运算方法得出每个任务资源因素的配置参数。

步骤S108,基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。

在本实施例中,可以按照不同任务得出的不同参数配置提交任务,从而达到了动态的对每个提交的任务分配不同的资源,这样既保证了资源的分配充分,同时,又避免了资源需求少的任务浪费不必要的资源,进而提升了整个集群的利用效率。

图2是根据本发明实施例的另一种可选的智能动态资源分配的示意图,如图2所示,在进行智能动态资源分配时,首先,根据历史日志等数据及多元线性回归方程计算出多指标的权重系数常量,再计算任务指标,其中任务指标包括任务涉及到表数量、表文件大小、sql复杂度、历史任务分析结果、其他指标等指标属性,再定义计算任务抽象接口以及计算出具体任务的各项指标值并初始化计算任务实例,之后根据实际集群规模及日常任务量等计算出平均资源参数,从而得到不同任务类型平均资源参数,之后根据各指标的权重系数得出实例任务所需资源的影响因子,最后根据计算的每个实例任务的影响因子和实例任务的平均资源参数并参考集群实际规模及各指标的取值范围(例如,队列的cpu核、内存等),使用不同的运算方法得出任务的每项参数配置,进而执行任务,从而达到动态的对每个提交的任务分配不同的资源,这样既保证了资源的分配充分,又同时保证了较小的资源闲置,提升了整个集群的利用效率。

下面结合另一种可选的实施例来说明本发明。

实施例二

本发明实施例提出资源分配装置,该分配装置中包含的各个实施单元对应于上述实施例一中的各个实施步骤。

图3是根据本发明实施例的一种可选的资源分配装置的示意图,如图3所示,该信息处理装置包括:接收单元30,计算单元32,确定单元34,分配单元36,其中,

接收单元30,用于接收资源分配任务以及资源初始参数,其中,所述资源分配任务中包括多个任务指标以及每个所述任务指标的权重系数;

计算单元32,用于根据每个所述任务指标的权重系数,计算任务所需资源的影响因子;

确定单元34,用于基于所述影响因子和所述资源初始参数,确定每个任务资源因素的配置参数;

分配单元36,用于基于每个任务资源因素的配置参数,为所述资源分配任务分配对应的资源。

上述资源分配装置,可以通过接收单元30接收资源分配任务以及资源初始参数,其中,资源分配任务中包括多个任务指标以及每个任务指标的权重系数,然后通过计算单元32,根据每个任务指标的权重系数,计算任务所需资源的影响因子,之后通过确定单元34,基于影响因子和资源初始参数,确定每个任务资源因素的配置参数,最后通过分配单元36,基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。在该实施例中,通过自动化配置计算资源参数的方法以及任务参数影响因子的多指标权重计算方式,实现了资源的智能动态分配,避免了在手动配置参数时产生的繁琐工作,同时也避免了批量任务使用相同资源导致的不同计算任务对计算集群的资源浪费或者效率低下的情况产生,进而解决了相关技术中进行批量任务处理时,手动配置参数会导致资源浪费以及任务执行效率低下的技术问题。

可选地,资源分配装置还包括:第一获取模块,用于在接收资源分配任务以及资源初始参数之前,获取在历史时间段中的资源请求任务集群,其中,资源请求任务集群中包括每个资源请求任务对应的资源分配量;第一计算模块,用于基于所有的资源分配量,计算资源初始参数。

可选地,资源初始参数包括:CPU核数和内存使用量。

可选地,资源分配装置还包括:第一确定模块,用于在接收资源分配任务以及资源初始参数之后,确定计算任务抽象接口,其中,计算任务抽象接口用于定义资源分配任务,以对资源分配任务进行资源配置;第二确定模块,确定资源分配任务的各项任务指标以及指标属性。

可选地,指标属性包括下述至少之一:任务涉及到的表数量、任务大小、数据库复杂等级、同类型任务的历史日志分析结果。

可选地,资源分配装置还包括:第二获取模块,用于在确定资源分配任务的各项任务指标以及指标属性之后,获取历史预设时间段内所有资源分配任务的任务数据;第二计算模块,用于基于历史预设时间段内所有资源分配任务的任务数据和多元线性回归方程,计算每个任务指标的权重系数和每个任务指标的指标值。

可选地,计算单元包括:第一输出子模块,用于将每个任务指标的权重系数和指标值输入任务性能预测模型,输出资源分配任务在资源参数列表下的预测执行时长;第一确定子模块,用于基于预测执行时长和历史任务平均执行时长之间的时长比值,确定资源分配任务所需资源的影响因子。

可选地,确定单元包括:第一确定子模块,用于确定每个任务指标的取值范围;第二确定子模块,用于基于影响因子、资源初始参数和每个任务指标的取值范围,确定每个任务资源因素的配置参数。

上述的资源分配装置还可以包括处理器和存储器,上述接接收单元30,计算单元32,确定单元34,分配单元36等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来计算任务所需资源的影响因子,之后基于影响因子和资源初始参数,确定每个任务资源因素的配置参数,最后基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。

上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,存储介质用于存储计算机程序,其中,计算机程序在被处理器执行时控制计算机可读存储介质所在设备执行上述的资源分配方法。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收资源分配任务以及资源初始参数,然后根据每个任务指标的权重系数,计算任务所需资源的影响因子,之后基于影响因子和资源初始参数,确定每个任务资源因素的配置参数,最后基于每个任务资源因素的配置参数,为资源分配任务分配对应的资源。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 资源分配方法及分配装置、计算机可读存储介质
  • 时频空资源分配方法、计算机装置及计算机可读存储介质
技术分类

06120112966135