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

基于遗传算法的ETL任务调度方法、装置和存储介质

文献发布时间:2024-04-18 19:54:45


基于遗传算法的ETL任务调度方法、装置和存储介质

技术领域

本发明涉及数据库技术领域,尤其是一种基于遗传算法的ETL任务调度方法、计算机装置及存储介质。

背景技术

随着企业数字化的发展,大数据的应用也愈来愈广泛。企业级大数据平台,每天基本上都是有几百乃至几千个ETL任务需要运行。这些任务之间往往存在复杂的串行或并行的依赖关系。现时,大多数情况下,ETL任务调度是依赖数据开发或数据平台的运维人员进行配置的,配置的依据主要是业务需求和数据平台运维经验。这种情况下,一般难以充分利用服务器的运算资源,往往出现大量ETL任务聚集都同一时间点,要不造成服务器资源紧张,要不造成任务队列排队严重。

术语解释:

ETL:是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程;

HIVE:是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

发明内容

针对目前的网络切片中,进行切换会占用目标切片的资源等技术问题,本发明的目的在于提供一种基于遗传算法的ETL任务调度方法、计算机装置及存储介质。

一方面,本发明实施例包括一种基于遗传算法的ETL任务调度方法,包括:

从实际运行的数据仓库中,读取多个ETL任务的历史运行参数;

根据各所述历史运行参数,将读取到的所述多个ETL任务分别划分到相应的初始种群中,获得若干个初始种群;

执行多轮迭代过程;在第一轮迭代过程中,分别获取各所述初始种群的总成本,选择出总成本最低的若干个所述初始种群作为本轮的精英种群,对本轮的各所述精英种群进行配对,生成本轮的若干个新种群;在除了第一轮迭代过程之外的其他任一轮迭代过程中,分别获取上一轮迭代过程所得的各新种群的总成本,选择出总成本最低的若干个新种群作为本轮的精英种群,对本轮的各所述精英种群进行配对,生成本轮的若干个新种群;

从各所述新种群中选择出最优种群;

根据所述最优种群所包含的ETL任务的历史运行参数,配置新ETL任务的调度时间。

进一步地,所述根据各所述历史运行参数,将读取到的所述多个ETL任务分别划分到相应的初始种群中,获得若干个初始种群,包括:

根据各所述ETL任务的历史运行参数,确定各所述ETL任务所属的时间段;

将属于同一时间段的各所述ETL任务划分至同一所述初始种群中;所述ETL任务作为所在的所述初始种群中的个体。

进一步地,所述根据各所述历史运行参数,将读取到的所述多个ETL任务分别划分到相应的初始种群中,获得若干个初始种群,还包括:

当各所述初始种群的个体数量不相等,获取随机ETL任务;所述随机ETL任务的运行参数是随机生成的;

将所述随机ETL任务划分至个体数量较少的所述初始种群中,使各所述初始种群的个体数量相等。

进一步地,所述对本轮的各所述精英种群进行配对,生成本轮的若干个新种群,包括:

对本轮的各所述精英种群进行交叉操作后,选择出若干个所述精英种群进行变异运算,获得本轮的若干个所述新种群。

进一步地,所述分别获取各所述初始种群的总成本,包括:

对于所述初始种群中包含的若干个ETL任务,获取各所述ETL任务的成本;

以各所述ETL任务的成本之和作为所述初始种群的总成本;

所述分别获取上一轮迭代过程所得的各新种群的总成本,包括:

对于所述新种群中包含的若干个ETL任务,获取各所述ETL任务的成本;

以各所述ETL任务的成本之和作为所述新种群的总成本。

进一步地,所述获取各所述ETL任务的成本,包括:

从所述ETL任务的运行参数中,提取出多个关键参数;

根据各所述关键参数的加权和,确定所述ETL任务的预测完成时长;

设定所述ETL任务的期望完成时间;

根据所述期望完成时间和所述预测完成时长的差值,确定所述ETL任务的成本。

进一步地,所述从各所述新种群中选择出最优种群,包括:

获取各轮迭代过程各自所得的全部所述新种群的总成本之和;

将除最后一轮迭代过程外,各轮迭代过程对应的各所述总成本之和,按照对应的各轮迭代过程的时间顺序组成时间序列;

根据所述时间序列进行预测,得到总成本预测值;

当最后一轮迭代过程对应的所述总成本大于所述总成本预测值,从各轮迭代过程所得到的全部所述新种群中,选择出成本最小的所述新种群作为所述最优种群。

进一步地,所述数据仓库为HIVE数据仓库。

另一方面,本发明实施例还包括一种计算机装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行实施例中的基于遗传算法的ETL任务调度方法。

另一方面,本发明实施例还包括一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于执行实施例中的基于遗传算法的ETL任务调度方法。

本发明的有益效果是:实施例中的基于遗传算法的ETL任务调度方法,通过将对ETL任务调度的优化问题转化为在一定限定条件下,使每一个ETL任务执行成本变得最小的问题,预期能够取得较小的成本,有利于充分利用服务器资源,提升数据仓库的运算效率。

附图说明

图1为实施例中基于遗传算法的ETL任务调度方法的流程图;

图2为实施例中判断迭代结束条件的原理图。

具体实施方式

本实施例中,参照图1,基于遗传算法的ETL任务调度方法包括以下步骤:

S1.从实际运行的数据仓库中,读取多个ETL任务的历史运行参数;

S2.根据各历史运行参数,将读取到的多个ETL任务分别划分到相应的初始种群中,获得若干个初始种群;

S3.从初始种群开始,执行多轮迭代过程;在第一轮迭代过程中,分别获取各初始种群的总成本,选择出总成本最低的若干个初始种群作为本轮的精英种群,对本轮的各精英种群进行配对,生成本轮的若干个新种群;在除了第一轮迭代过程之外的其他任一轮迭代过程中,分别获取上一轮迭代过程所得的各新种群的总成本,选择出总成本最低的若干个新种群作为本轮的精英种群,对本轮的各精英种群进行配对,生成本轮的若干个新种群;

S4.从各新种群中选择出最优种群;

S5.根据最优种群所包含的ETL任务的历史运行参数,配置新ETL任务的调度时间。

本实施例中,以大数据HIVE数据仓库为基础,对在HIVE上以YARN进行分布式资源管理,并且以MapReduce为运算引擎的,按T+1为执行频率的ETL任务组,通过遗传算法,对任务的调度配置进行优化,以充分利用服务器资源,提升数据仓库的运算效率。

步骤S1中,从实际运行的HIVE数据仓库中,读取多个实际运行过的ETL任务的历史运行参数。HIVE数据仓库中的这些实际运行过的ETL任务,可以由开发人员根据任务优先级和资源利用等因素进行过调度配置。

步骤S1中,一个ETL任务的历史运行参数可以包括这个ETL任务的初始调度时间。在初始调度时间的基础上,给予每个ETL任务在初始调度时间前后各增减3个时间区间的启动时间选择,即一个ETL任务的历史运行参数,可以包括这个ETL任务的初始调度时间,以及初始调度时间之前的3个时间区间和之后的3个时间区间。例如,对于ETL任务1,其在HIVE数据仓库中的初始调度时间为3:00,将时间区间设定为5:00,那么ETL任务1的历史运行参数可以表示为一个数组x=[2:45,2:50,2:55,3:00,3:05,3:10,3:15]。

本实施例中,可以把一个ETL任务表示为x[y],其中y表示历史运行参数对应的数组。为了简洁说明,y可以取个位数以区分不同的ETL任务,例如以x[0]表示一个ETL任务,以x[1]表示另一个ETL任务。

步骤S2中,每个ETL任务的初始调度时间实际都对应某一时间段,例如ETL任务1的初始调度时间为3:00,实际上是某一天(如2022年12月1日)的3:00,那么可以将从HIVE数据仓库中读取到的属于2022年12月1日的ETL任务,都划归都同一初始种群中。

在划分了初始种群后,每个ETL任务都是其所属的那个初始种群中的个体。一个种群的个体数量就是这个种群所包含的ETL任务的数量。

步骤S2中,从实际运行的HIVE数据仓库获取最近25天每个ETL任务,每天的各个ETL任务都被分到相应的一个初始种群中,从而获得25个初始种群。

步骤S2中,对于25天内ETL任务有增减的情况,比如前10天的ETL任务有480个,近15天有500个,则对缺失的变量位置,给予标准化数值范围内的随机数进行补充。例如对于前10天的ETL任务有480个,生成历史运行参数随机的20个ETL任务,从而补足500个ETL任务,使得各个初始种群的个体数量相同。

本实施例中,每个种群的格式如表1所示。

表1

步骤S2中,除了将从实际运行的数据仓库中读取到的ETL任务划分到相应的初始种群,还可以在获得一个初始种群后,对这个初始种群中的个体即ETL任务进行变异,从而获得新的初始种群。例如,对于表1中的种群1:X[0],X[1],X[4],X[3],X[1]…将其中的序号为3的ETL任务的历史运行参数(即X[4])进行随机增减,使得X[4]变为X[3],那么可以得到一个新的种群:X[0],X[1],X[3],X[3],X[1]…;对于表1中的种群2:X[0],X[1],X[1],X[2],X[5]…将其中的序号为2的ETL任务的历史运行参数(即X[1])进行随机增减,使得X[1]变为X[4],那么可以得到一个新的种群:X[0],X[4],X[1],X[2],X[5]…

通过对初始种群中的个体进行变异操作,可以扩展初始种群的数量。例如,对40个种群进行分类,近5天的种群保持变量不变。前20天的种群,执行变量随机增减的变异操作,从20个种群中,变异出195个新种群,和原来的5个种群合起来,构建出200个初始种群。

本实施例中,一个ETL任务的成本可以根据其运行参数计算出来。本实施例中,选择用来计算一个ETL任务的成本的关键参数包括:

(1)参数a:参数a表示数据表是否有数据倾斜问题,若有则参数a取某一值(例如0),若无则参数a取另一值(例如1),参数a的取值可以设定为满足“数据表有数据倾斜问题,则最终计算出来的这个ETL任务的成本较高,反之则较低”这样的条件;

(2)参数b:参数b表示mapreduce任务被分配的map任务数,每个map任务的内存占用数,map数量越少,内存占用越少,这个ETL任务的成本越低;

(3)参数c:参数c表示mapreduce任务被分配的reduce任务数,每个reduce任务的内存占用数,reduce数量越少,内存占用越少,这个ETL任务的成本越低;

(4)参数d:参数d表示hivesql中关联表的数量;

(5)参数e:参数e表示hivesql中出现排序的次数;

(6)参数f:参数f表示hivesql中涉及到所有表的总数据量。

根据上述6个参数,对于每个ETL任务都可以获得一组变量a,b,c,d,e,f。因为不同参数数据的取值范围相差可能会较大,不利于算法的收敛,因此可以使用zscore方法,对属于同一个ETL任务的一组变量a,b,c,d,e,f做数据标准化处理。

本实施例中,对变量a、b、c、d、e、f分别使用权重w

w

再根据业务实际情况,对每一个ETL任务设定一个预期完成时间。比如业务人员希望9点上班前看到报表A,则统计该报表A的ETL任务A的任务期望完成时间为上午9:00,记为T

在获得一个ETL任务的预测完成时长t和预期完成时间T

本实施例中,一个种群的总成本等于这个种群中所包含的全部单个ETL任务成本之和,即C

步骤S3中,参照图1,从初始种群开始,执行多轮迭代过程。

在第一轮迭代过程中,首先,分别获取各初始种群的总成本,也就是每个初始种群中所包含的全部单个ETL任务成本之和。接着,选择出总成本最低的若干个初始种群作为本轮的精英种群,例如,参照表2,假设第一轮迭代过程之前一共有200个初始种群,执行选择算子,从200个初始种群中挑选成本最低的40个初始种群作为选拔后的精英种群。

表2

在第一轮迭代过程中,在选择出40个精英种群之后,对这些精英种群执行交叉操作。交叉操作的一个示例如下:

对于一个精英种群1:X[0],X[1],X[4],X[3],X[1]…以及一个精英种群2:X[0],X[1],X[1],X[2],X[5]…将精英种群1中序号为3的ETL任务的历史运行参数(即X[4])与精英种群2中序号为3的ETL任务的历史运行参数(即X[1])对调,将精英种群1中序号为4的ETL任务的历史运行参数(即X[3])与精英种群2中序号为4的ETL任务的历史运行参数(即X[2])对调,完成交叉操作。执行完交叉操作之后,精英种群1成为:X[0],X[1],X[1],X[2],X[1]…精英种群2成为:X[0],X[1],X[4],X[3],X[5]…

在第一轮迭代过程中,对精英种群执行交叉操作之后,精英种群的数量仍为40个,可以参照步骤S2中对初始种群进行的变异操作,扩充精英种群的数量,使得精英种群的数量增加到200个。

在第一轮迭代过程中,经过交叉操作和变异操作,所获得的200个精英种群作为第一轮迭代过程所得的200个新种群,进入第二轮迭代过程。

在第一轮迭代过程以后的各轮迭代过程中,以第k轮迭代过程为例,执行类似于第一轮迭代过程的步骤。首先,获取第k-1轮迭代过程所得的200个新种群,分别获取各新种群的总成本,也就是每个第k-1轮迭代过程所得的新种群中所包含的全部单个ETL任务成本之和。接着,选择出总成本最低的40个新种群作为本轮即第k轮的40个精英种群。对这40个精英种群依次进行交叉操作和变异操作,获得第k轮迭代过程的200个新种群。

本实施例中,参照图1,每一轮迭代过程执行结束后都检测是否满足迭代结束条件,若满足迭代结束条件则本轮迭代过程为最后一轮迭代过程,跳转到执行步骤S4,若不满足迭代结束条件则执行下一轮迭代过程。

本实施例中,迭代结束条件可以是“难以获得更优种群”,例如如果检测到最后一轮迭代过程所获得的新种群,其成本比之前各轮获得的新种群的成本高,或者虽然其成本比之前各轮获得的新种群的成本低,但是低出的幅度小于预设的阈值,那么可以判断为满足迭代结束条件即“难以获得更优种群”,从而跳转到执行步骤S4;否则,可以判断为未满足迭代结束条件,仍有可能获得成本更低的种群,执行下一轮即第k+1轮迭代过程。

本实施例中,可以通过以下步骤判断是否满足迭代结束条件即“难以获得更优种群”:

S301.获取各轮迭代过程各自所得的全部新种群的总成本之和;

S302.将除最后一轮迭代过程外,各轮迭代过程对应的各总成本之和,按照对应的各轮迭代过程的时间顺序组成时间序列;

S303.根据时间序列进行预测,得到总成本预测值;

S304.当最后一轮迭代过程对应的总成本大于总成本预测值,从各轮迭代过程所得到的全部新种群中,选择出成本最小的新种群作为最优种群。

步骤S301-S304的原理如图2所示。

步骤S301中,对于第1轮迭代过程所得的新种群,将全部新种群各自的总成本加起来,所得到的总和通过图2中“第1轮迭代过程”所对应的实心圆点表示;对于第2轮迭代过程所得的新种群,将全部新种群各自的总成本加起来,所得到的总和通过图2中“第2轮迭代过程”所对应的实心圆点表示……对于第k轮迭代过程所得的新种群,将全部新种群各自的总成本加起来,所得到的总和通过图2中“第k轮迭代过程”所对应的实心圆点表示。

步骤S302中,参照图2,各实心圆点所表示的第1轮迭代过程所得的新种群总成本之和、第2轮迭代过程所得的新种群总成本之和……第k-2轮迭代过程所得的新种群总成本之和、第k-1轮迭代过程所得的新种群总成本之和,能够形成一个时间序列。

步骤S303中,可以使用移动平均法、指数平滑模型或者长短期记忆网络等算法,对图2中的时间序列进行预测,所得到的总成本预测值如图2中的空心圆点所示。图2中的空心圆点的意义为:根据第k轮迭代过程之前各轮迭代过程所得的新种群总成本之和,所预测到的第k轮迭代过程的时刻可能得到的新种群总成本之和,即第k轮迭代过程的时刻的总成本预测值。

步骤S304中,将最后一轮迭代过程对应的总成本,也就是图2中“第k轮迭代过程”所对应的实心圆点表示的总成本,与总成本预测值也就是图2中“第k轮迭代过程”所对应的空心圆点表示的总成本进行比较,如果实心圆点高于空心圆点,即表示第k轮迭代过程实际得到的新种群总成本之和比预测中的新种群总成本之和要高,可以合理推断“难以获得更优种群”,即推断已满足迭代结束条件,不再执行下一轮迭代过程而开始执行步骤S4。

如果执行完步骤S3时,一共执行了第1轮迭代过程、第2轮迭代过程……第k轮迭代过程等迭代过程,步骤S4中,可以从第1轮迭代过程所得到的新种群、第2轮迭代过程所得到的新种群……第k轮迭代过程所得到的新种群当中,选择出最优种群。具体地,从这些新种群中选择出总成本最低的新种群作为最优种群。

步骤S5中,对于最优种群中所包含的多个ETL任务,分别确定每个ETL任务的成本,从最优种群中选择出成本最低的ETL任务,作为最优ETL任务。在后续需要配置新ETL任务的调度时间时,以最优ETL任务的运行参数来进行配置。

例如,最优ETL任务的运行参数为x=[2:55,3:00,3:05,3:10,3:15,3:20,3:25],这表明在2:55、3:00、3:05、3:10、3:15、3:20、3:25等时间进行ETL任务的调配,预期能够取得较小的成本,有利于充分利用服务器资源,提升数据仓库的运算效率。

本实施例中,步骤S1-S5将对ETL任务调度的优化问题转化为在一定限定条件下,使每一个ETL任务执行成本变得最小的问题。所获得的优势包括:

首先,因为数据仓库的实现形式是多样的;数据库选型的不同,数据建模的不同,数据仓库分层的不同,运算引擎的不同,实现出来的数据仓库的差别很大;步骤S1-S5可以基于hive的数据仓库中以yarn进行调度,适用于以mapreduce为运算引擎的任务组;在构建成本函数的时候,步骤S1-S5考虑了具体的mapreduce运行参数以及hivesql关联情况,hive表数据量及存储空间等参数等作为构建成本函数的变量,相比起目前的相关技术,步骤S1-S5的针对性更强、更细化;

其次,步骤S1-S5在遗传算法的初始种群构建上,和目前的相关技术有所不同;步骤S1-S5根据一个已经在运行中的数据仓库项目,根据其历史一段时间内的ETL任务日志的运行数据,进行初始种群的构建,和使用遗传算法使用完全随机的数据构建初始种群不同;采用这个方法的原因是,在大部分情况下,数据仓库的人工调度配置均是有意义的,大部分开发人员并非是随便进行配置的,一般会有对ETL任务优先级和资源利用的考虑;步骤S1-S5无须从零开始进行ETL任务调度,从纯数学的角度通过遗传算法获取最优解,而是在一定的项目实践基础上,对本来存在的调度配置进行更好的优化,并非是对原来配置的全盘推翻;这样做的好处是,会考虑到实际数仓的业务需求,并且调度优化也是一个循序渐进的长期的,互相适应过程,更符合实际的项目情况。

可以通过编写执行本实施例中的基于遗传算法的ETL任务调度方法的计算机程序,将该计算机程序写入至存储介质或者计算机装置中,当计算机程序被读取出来运行时,执行本实施例中的基于遗传算法的ETL任务调度方法,从而实现与实施例中的基于遗传算法的ETL任务调度方法相同的技术效果。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本实施例所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本实施例说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本实施例所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本实施例所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本实施例描述的过程的操作,除非本实施例另外指示或以其他方式明显地与上下文矛盾。本实施例描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本实施例所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本实施例所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

相关技术
  • 一种适合镭雕的聚酯材料及其制备方法
  • 麦克风堵孔检测方法及相关产品
  • 扬声器堵孔检测方法及相关产品
  • 一种锻造产品孔堵镭雕机探头感触检测设备及方法
  • 注塑产品孔堵镭雕机探头感触检测方法及设备
技术分类

06120116380500