CN113641487A - 一种大数据平台sql任务执行引擎智能自动切换的方法 - Google Patents
一种大数据平台sql任务执行引擎智能自动切换的方法 Download PDFInfo
- Publication number
- CN113641487A CN113641487A CN202110761594.8A CN202110761594A CN113641487A CN 113641487 A CN113641487 A CN 113641487A CN 202110761594 A CN202110761594 A CN 202110761594A CN 113641487 A CN113641487 A CN 113641487A
- Authority
- CN
- China
- Prior art keywords
- engine
- execution
- task
- sql
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种大数据平台SQL任务执行引擎智能自动切换的方法,包括获取原始SQL语句和执行参数信息,根据执行参数信息和原始SQL语句,计算决策出当前SQL任务适合的执行引擎及资源配置数据,根据执行引擎类型确认预先设计制作好的引擎落地执行程序包等步骤。本发明提供一个统一的SQL编辑入口,用户编写SQL语句传递给后端服务器,后端服务器根据业务的类型与数量,集群运行环境,资源分配情况进行综合分析建模;统计具体任务运行的时段,占用资源的比例,动态调整计算资源数据来决策当前SQL语句由大数据集群中某个执行引擎来执行,以优化业务的执行,达到资源的最大合理化分配调度,节约计算资源成本并降低开发人员的开发成本及学习成本。
Description
技术领域
本发明涉及大数据处理技术领域,具体是指一种大数据平台SQL任务执行引擎智能自动切换的方法。
背景技术
在大数据平台的数据计算使用过程中,计算任务管理的重要内容是:为支持各种各样的数据展示,业务开发人员使用各种开发方式生成计算任务进行数据统计,支撑着各个业务数据分析及图表数据的收集及存储。在这种趋势背景下,使用SQL语句作为计算任务的开发标准会让开发人员和分析人员更容易接受,学习成本小与入门门槛低,并且很容易对数据指标进行计算逻辑表达。在大数据环境下,各个执行引擎会根据自己的存储属性在SQL标准上做一些自己的特有改进。所以计算任务开发过程中,开发人员往往会选择使用程序语言去编写针对特定执行引擎的任务程序包,然后提交给大数据集群中的执行引擎去执行。但是,这种方式不但增加开发门槛和学习成本,而且加大集群计算的不平衡性,只能通过不断增加服务器硬件资源去分担执行引擎的计算调用,但是这又会使其它执行引擎得不到合理的分配,导致资源浪费。
发明内容
本发明的目的在于解决上述问题,提供一种能够节约计算资源成本并降低开发人员的开发成本及学习成本的大数据平台SQL任务执行引擎智能自动切换的方法。
本发明的目的通过下述技术方案实现:一种大数据平台SQL任务执行引擎智能自动切换的方法,包括以下步骤:
步骤1:获取原始SQL语句和执行参数信息;其中,执行参数信息包括是否有指定执行引擎、是否设置为SQL任务分配的CPU个数及内存资源;
步骤2:根据执行参数信息和原始SQL语句,计算决策出当前SQL任务适合的执行引擎及资源配置数据;
步骤3:根据执行引擎类型确认预先设计制作好的引擎落地执行程序包;
步骤4:将确认好的引擎落地执行程序包提交给确定好的执行引擎去执行,同时,将执行状态数据及占用的资源情况上报给服务器进行数据统计使用;
步骤5:SQL任务执行完成后,将任务的完成状态上报给服务器中进行业务终止数据统计及资源释放数据统计;
步骤6:用户通过前端页面展示查看返回任务执行结果及任务运行状态。
步骤2中计算决策出当前SQL任务适合的执行引擎及资源配置数据包括以下步骤:
S1:根据执行参数信息判定是否已指定执行引擎;是,以指定的执行引擎作为运行原始SQL语句的执行引擎;否,执行步骤S2;
S2:获取当前大数据集群的各执行引擎的当前任务个数和空闲资源以及所有服务器的公共空闲资源;
S3:根据步骤S2中获取到的数据,选择出最优的执行引擎;
S4:通过SQL解析器解析出原始SQL语句的函数列表;
S5:判定函数列表中是否有函数需要改造:是,统计需改造函数,并生成待改造函数列表,执行步骤S6;否,则不对原始SQL语句进行改造,直接输出选择好的执行引擎和原始SQL语句;
S6:根据预先设置好的引擎函数实现方式对待改造函数列表里的函数进行改造,得到改造SQL语句;
S7:输出选择好的执行引擎类型、改造SQL语句以及资源占用参数。
所述步骤S2中获取的空闲资源包括CPU与内存资源中的空闲资源。
步骤S2中通过大数据计算资源模型来获取当前大数据集群的各执行引擎的当前任务个数和空闲资源以及所有服务器的公共空闲资源。
所述大数据计算资源模型包括数据层、收集层、统计计算层以及数据输出层;其中,
数据层,用于将每个SQL任务开始时运行的资源占用数据、每个SQL任务结束后归还的资源数据以及服务器总体资源数据上报到收集层中;
收集层,用于将收集到的数据分别按执行引擎进行数据归类整理,分别对收集服务器资源的占用、空闲情况、任务上报时的执行引擎类型、占用资源信息、任务的运行状态信息进行分字段整理归类集合存放于内存中;
统计计算层,用于统计各项资源数据;包括统计各执行引擎的占用资源、各引擎使用的时长与频次、服务器总体剩下的资源;
数据输出层,用于将统计的各项资源数据写入数据库,以便提供给第三方页面展示用;其还用于将统计的各项资源数据写入缓存,以便后续智能切换计算使用。
步骤S3中选择出最优的执行引擎的方法如下:
方法A:如果所有的引擎都无历史任务执行的情况下,资源都满足的情况下,则在预先设定的业界公认最适合的引擎排名列表中,选择排名最高的引擎作为当前SQL任务的执行引擎。
方法B:如果所有的引擎都没有执行过历史任务,并且当前SQL任务没有指定资源占用情况,则按预先设定的以资源要求高低来排名的引擎排名列表中选择最低资源要求配置的引擎来作为当前SQL任务的执行引擎;如果当前SQL任务指定了资源占用参数,在所有引擎都满足服务器的空闲资源的情况下,按排名高低选择排名最高的引擎作为当前SQL任务的执行引擎,而在所有引擎都不满足服务器的空闲资源的情况下,则选择排名最中间的引擎作为当前SQL任务的执行引擎。
方法C:如果有部分引擎有过历史任务,则选出所有还没有执行过任务的引擎,并参照预先设定的业界公认最适合的引擎排名列表和预先设定的以资源要求高低来排名的引擎排名列表,将没有执行过任务的引擎按资源情况进行排名,满足排名最高的引擎作为当前SQL任务的执行引擎;当资源不满足引擎时,则按照上述B中的方法进行选择。
方法D:当所有引擎都有过执行任务的情况下,统计各引擎任务单位时间内的执行个数及执行时资源占用情况对比,排列出一个效率由高到低的引擎排名,并计算各引擎的策略值,选择策略值最小的引擎作为SQL任务的执行引擎;当出现策略值相同时,则根据预设的最优化引擎排名值最高的引擎作为执行引擎;其中,策略值的计算公式为:CValue=(Abs(Pcpu-eTaskAvgCpu)+Abs(Pmem-eTaskAvgMem))/2;CValue为策略值,Abs为绝对值函数,Pcpu为当前集群中服务器的空闲CPU资源数,Pmem为当前集群中服务器的空闲内存资源数,eTaskAvgCpu为执行引擎单位时间内任务执行的平均CPU资源数,eTaskAvgMem为执行引擎单位时间内任务执行占用的平均内存大小。
步骤4之前还包括对确认好的引擎落地执行程序包进行整合,具体包括以下步骤:
Ⅰ、将步骤2中确定的SQL语句和资源配置数据组装起来作为引擎落地执行程序包的参数,并将参数分配为命令行参数和程序内集群资源分配参数两种调用模式;
Ⅱ、根据确定的执行引擎类型,获取预先设置好的获取地址,拉取到最新版本的执行文件包来解析引擎落地执行程序包的参数,并在启动执行文件包时,解析出资源参数来申请集群的资源,设置调用并行度。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明提供统一的SQL语句入口及语句检查,然后提交后端服务器,减少前端开发使用人员的使用门槛,去掉程序语言的学习与开发要求。
(2)本发明提供统一的SQL开发提交平台,整合大数据集群各个计算引擎的SQL功能,去掉用户对各执行引擎的选择烦恼及性能分析,降低使用门槛及学习成本。
(3)本发明提供各种大数据集群各任务执行运行时长,资源占用等指标策略,为SQL任务的适合引擎运行提供优化选择,平衡各计算资源的使用率。
(4)本发明提供统一分析各个执行引擎任务单位时长运行的个数与时长,资源占用情况等分析,为大数据集群的各执行引擎资源的扩容与缩容提供参与依据和优化方向。
附图说明
图1为本发明的整体步骤流程图。
图2为本发明中计算决策出当前SQL任务适合的执行引擎及资源配置数据的步骤流程图。
具体实施方式
下面结合实施例对本发明作进一步的详细说明,但本发明的实施方式不限于此。
实施例
如图1、2所示,本发明的大数据平台SQL任务执行引擎智能自动切换的方法,包括以下步骤:
步骤1:获取原始SQL语句和执行参数信息;即前端开发使用人员将原始SQL语句和执行参数信息一起提交给后端服务器。其中,执行参数信息包括是否有指定运行原始SQL语句的执行引擎、是否设置为SQL任务分配的CPU个数及内存资源。
步骤2:后端服务器根据执行参数信息和原始SQL语句,计算决策出当前SQL任务适合的执行引擎及资源配置数据;其具体包括以下步骤:
S1:根据执行参数信息判定是否已指定执行引擎;如果已经指定了运行原始SQL语句的执行引擎,则以指定的执行引擎作为运行原始SQL语句的执行引擎,此时原始SQL语句不需要改造。如果没有指定运行原始SQL语句的执行引擎,则执行下面的步骤S2。
S2:没有指定运行原始SQL语句的执行引擎时,则进入到智能选择模式来选择执行引擎。选择前,首先需要知道当前大数据集群中有多少总资源及各个执行引擎,同时需要收集任务上报的消耗资源及运行时长,给出下一个将要执行的任务的所需执行调度依据的数据及任务执行的最优化执行引擎选择策略数据。因此,这里需要通过大数据计算资源模型来获取当前大数据集群的各执行引擎的当前任务个数和空闲资源以及所有服务器的公共空闲资源。其中,空闲资源包括CPU与内存资源中的空闲资源。服务器的公共空闲资源是指非专注计算那部分的空闲资源,例如,服务器可以给专注于计算的引擎使用,也可以给专注于存储的引擎使用,那么这里获取的则是专注于存储的引擎使用的空闲资源。
具体的,所述大数据计算资源模型包括数据层、收集层、统计计算层以及数据输出层,设计设置上述架构来处理对集群环境指标的收集,用来支持SQL任务的智能引擎切换的重要依据。
其中,数据层用于将每一个任务在执行的开始与结束阶段主动将资源占用情况上报汇入到收集层;同时大数据集群的所有服务器会提前设定间隔一定时间上报一次当前服务器总体资源数据,数据层也将服务器总体资源数据上报到收集层中。服务器总体资源数据包括服务器的CPU与内存总体信息、当前正在使用的CPU与内存信息、剩余的CPU与内存信息。
为了追求更实时,更好的反馈资源情况,可以将上报时间间隔设置到秒级或者更精确的毫秒级,同时上报的数据包含执行引擎类型,CPU,内存及时间等数据。服务器的资源数据应该包含服务器资源的类型,分为执行引擎专属和混合公共使用两种。
收集层用于将收集到的数据分别按执行引擎进行数据归类整理,分别对收集服务器资源的占用、空闲情况、任务上报时的执行引擎类型、占用资源信息、任务的运行状态信息进行分字段整理归类集合存放于内存中。
统计计算层用于统计各项资源数据,统计计算层统计的各项资源数据可以用来为后续的SQL任务执行提供引擎选择策略执行的重要依据,并且是一个实时的任务计算,保持长期运行,随时更新当前大数据集群的资源的最新使用情况;也可以用来做一些任务资源分析及资源利用告警使用之需,为后续资源紧张或者富足时做扩容与缩容提供重要指标。
其中,统计的各项资源数据包括统计各执行引擎的占用资源、各引擎使用的时长与频次、服务器总体剩下的资源。各执行引擎的占用资源是指各引擎当前正在运行任务的个数和执行引擎空闲的资源信息。统计各引擎使用的时长与频次可以通过对任务执行的时长与单位时长内运行任务的个数做数据统计,为支持各执行引擎在单位时长内能最佳容入的任务个数提供评判选择。统计服务器总体剩下的资源是指统计当前集群中所有公共资源的空闲资源数据。
数据输出层,用于将统计的各项资源数据写入数据库,以便提供给第三方页面展示用;其还用于将统计的各项资源数据写入缓存,以便后续智能切换计算使用;做到与其它业务逻辑解耦合,相互之间的运算资源不受影响。
S3:根据步骤S2中获取到的数据,选择出最优的执行引擎。选择时根据不同情况采用不同的选择策略,具体方法如下:
方法A:如果所有的引擎都无历史任务执行的情况下,资源都满足的情况下,则在预先设定的业界公认最适合的引擎排名列表中,选择排名最高的引擎作为当前SQL任务的执行引擎。
方法B:如果所有的引擎都没有执行过历史任务,并且当前SQL任务没有指定资源占用情况,则按预先设定的以资源要求高低来排名的引擎排名列表中选择最低资源要求配置的引擎来作为当前SQL任务的执行引擎;如果当前SQL任务指定了资源占用参数,在所有引擎都满足服务器的空闲资源的情况下,按排名高低选择排名最高的引擎作为当前SQL任务的执行引擎,而在所有引擎都不满足服务器的空闲资源的情况下,则选择排名最中间的引擎作为当前SQL任务的执行引擎。
例如:集群中有hive、impala以及spark计算集群,那么排名情况是impala>spark>hive。因为impala的计算资源要求比较高,速度快,而且Spark可以提高并行度及程序支持,速度比hive快,当计算资源三个都不满足时,这时选择spark让计算资源分散;当资源足够时选择impala来做计算;资源更低只满足hive时,则选择hive作计算引擎。
方法C:如果有部分引擎有过历史任务,则选出所有还没有执行过任务的引擎,并参照预先设定的业界公认最适合的引擎排名列表和预先设定的以资源要求高低来排名的引擎排名列表,将没有执行过任务的引擎按资源情况进行排名,满足排名最高的引擎作为当前SQL任务的执行引擎;当资源不满足引擎时,则按照上述B中的方法进行选择。
方法D:当所有引擎都有过执行任务的情况下,统计各引擎任务单位时间内的执行个数及执行时资源占用情况对比,排列出一个效率由高到低的引擎排名,并计算各引擎的策略值,选择策略值最小的引擎作为SQL任务的执行引擎;当出现策略值相同时,则根据预设的最优化引擎排名值最高的引擎作为执行引擎。其中,策略值的计算公式为:CValue=(Abs(Pcpu-eTaskAvgCpu)+
Abs(Pmem-eTaskAvgMem))/2;CValue为策略值,Abs为绝对值函数,Pcpu为当前集群中服务器的空闲CPU资源数,Pmem为当前集群中服务器的空闲内存资源数,eTaskAvgCpu为执行引擎单位时间内任务执行的平均CPU资源数,eTaskAvgMem为执行引擎单位时间内任务执行占用的平均内存大小。
例如:假设集群中有hive、impala以及spark三个集群,预先设置的最优引擎排名为spark>impala>hive,在最近的1个小时内执行的任务个数与计算资源情况如下表所示:
引擎 | hive | Impala | spark |
单位时间 | 最近1小时 | 最近1小时 | 最近1小时 |
执行任务个数 | 1000 | 1500 | 2000 |
平均CPU资源数 | 1 | 10 | 5 |
平均内存大小 | 1G | 2G | 5G |
备注:上表所列数据并非是真实的运行环境数据,只是为计算数据规则作数据展示。
如当前资源只空闲有8个CPU,内存空闲4G,那么各引擎的策略值是:
Hive:(abs(8-1)+abs(4-1))/2=5;
Impala:(abs(8-10)+abs(4-2))/2=2;
Spark:(abs(8-5)+abs(4-5))/2=2;
根据策略要求下,策略值排序为impala、spark、hive,由于impala与spark值相同,则再从预先的最优化排名来选择,最终选择的结果是使用spark引擎来执行当前的SQL任务。
上述方法A~D为不同情况下引擎选择的策略,其中方法A为所有引擎都没有跑过任务,且资源都满足的情况下的引擎选择策略。方法B为所有引擎都没有跑过任务,且资源有可能不足的情况下的引擎选择策略。方法C为所有引擎中只有部分引擎有过历史任务的情况下的引擎选择策略。方法D为所有引擎都有过历史任务的情况下的引擎选择策略。
S4:确定执行引擎后,通过SQL解析器解析出原始SQL语句的函数列表。
S5:将函数列表与预先存储在数据库表中的引擎所对应包含的函数做比较,确定函数列表中是否有需要改造的函数:如果有需要改造的函数,则统计需要改造函数,并生成待改造函数列表,执行步骤S6。如果没有需要改造的函数,则不对原始SQL语句进行改造,直接输出选择好的执行引擎和原始SQL语句。
函数列表中每一个元素包含有函数名字、参数列表、函数类型,如遇到待改造函数没有找到实现目标函数的情况下,会给开发人员报送函数未找到的信息,让开发人员选择具体的报告引擎执行当前SQL任务,同时此函数将记录到数据库中,后续会对此函数做相应的执行引擎支持。另外,SQL解析器也会针对SQL语句进行检查,并判定是否符合公认的SQL标准,不合格的SQL语句将提示开发使用人员SQL的错误。
S6:根据预先设置好的引擎函数实现方式对待改造函数列表里的函数进行改造,得到改造SQL语句。预先设置好的引擎函数实现方式为如类型转换函数,日期时间函数的引擎转化,字符串中的JSON数据解析函数转化等按引擎的规则预先实现这部分的函数逻辑,并且封装到预先制作好的落地执行包中,使之可以用于SQL语句的改造和任务执行支持。
S7:输出选择好的执行引擎类型、改造SQL语句以及资源占用参数。如果当前SQL任务指定执行资源大小,执行任务将以开发使用人员自定义的数据来占用大数据集群资源;但如果没有指定执行资源情况则按预先设置引擎最低资源情况来分配集群资源。
步骤3:获取到执行引擎及资源配置数据后,根据执行引擎类型确认预先设计制作好的引擎落地执行程序包。此落地执行程序包在集群中调度执行时对封装参数进行解析,并将SQL语句通过执行参数传入程序包中,同时在引擎计算资源集群中申请程序执行包所需要的计算资源,此资源由程序包通过参数解析封装到执行的逻辑设置中。
另外,由于落地程序包是预发针对各个引擎的SQL特性编写的执行包,大数据引擎如spark、flink之类的计算引擎是支持使用程序包进行业务提交。如hive、impala之类则不支持程序的引擎,这就需要独立开发程序包进行JDBC方式的连接提交SQL语句并返回结果,因此,作为另一种优选方案,在执行步骤4之前还包括对确认好的引擎落地执行程序包进行整合,具体包括以下步骤:
Ⅰ、将步骤2中确定的SQL语句和资源配置数据组装起来作为引擎落地执行程序包的参数,并将参数分配为命令行参数和程序内集群资源分配参数两种调用模式;
Ⅱ、根据确定的执行引擎类型,获取预先设置好的获取地址,拉取到最新版本的执行文件包来解析引擎落地执行程序包的参数,并在启动执行文件包时,解析出资源参数来申请集群的资源,设置调用并行度。
SQL语句的执行引擎选定及函数改造完成后,接下来就是执行SQL任务,根据各个引擎资源的要求不同,后端预先针对不同的执行引擎开发对应落地执行程序包来为集群中的执行引擎提交SQL任务支持,并同步提交上报执行引擎分配的CPU资源与内存资源。
步骤4:将确认好的引擎落地执行程序包提交给确定好的执行引擎去执行,同时,将执行状态数据及占用的资源情况上报给服务器进行数据统计使用。
当执行引擎不是支持文件程序包执行,只提供查询服务时,如:hive和impala,则落地执行包将以一个单独的命令行程序运行,使用原生服务或者JDBC模式向数据引擎发起查询服务以完成SQL任务逻辑。若引擎支持程序包运行时,则提交给集群的执行引擎去运行程序包及配置封装好的资源与SQL语句参数。
步骤5:SQL任务执行完成后,将任务的完成状态上报给服务器中进行业务终止数据统计及资源释放数据统计。即将任务的完成状态数据上报给大数据计算资源模型中进行业务终止数据统计及资源释放数据统计。
步骤6:用户通过前端页面展示查看返回任务执行结果及任务运行状态。
本发明提供一个统一的SQL编辑入口,用户编写SQL语句传递给后端服务器,后端服务器根据业务的类型与数量,集群运行环境,资源分配情况进行综合分析建模;统计具体任务运行的时段,占用资源的比例,动态调整计算资源数据来决策当前SQL语句由大数据集群中某个执行引擎来执行,以优化业务的执行,达到资源的最大合理化分配调度,节约计算资源成本并降低开发人员的开发成本及学习成本,转而将更多的精力投入于数据业务的展示及报表的开发等方向。
如上所述,便可很好的实现本发明。
Claims (7)
1.一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于:包括以下步骤:
步骤1:获取原始SQL语句和执行参数信息;其中,执行参数信息包括是否有指定执行引擎、是否设置为SQL任务分配的CPU个数及内存资源;
步骤2:根据执行参数信息和原始SQL语句,计算决策出当前SQL任务适合的执行引擎及资源配置数据;
步骤3:根据执行引擎类型确认预先设计制作好的引擎落地执行程序包;
步骤4:将确认好的引擎落地执行程序包提交给确定好的执行引擎去执行,同时,将执行状态数据及占用的资源情况上报给服务器进行数据统计使用;
步骤5:SQL任务执行完成后,将任务的完成状态上报给服务器中进行业务终止数据统计及资源释放数据统计;
步骤6:用户通过前端页面展示查看返回任务执行结果及任务运行状态。
2.根据权利要求1所述的一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于:步骤2中计算决策出当前SQL任务适合的执行引擎及资源配置数据包括以下步骤:
S1:根据执行参数信息判定是否已指定执行引擎;是,以指定的执行引擎作为运行原始SQL语句的执行引擎;否,执行步骤S2;
S2:获取当前大数据集群的各执行引擎的当前任务个数和空闲资源以及所有服务器的公共空闲资源;
S3:根据步骤S2中获取到的数据,选择出最优的执行引擎;
S4:通过SQL解析器解析出原始SQL语句的函数列表;
S5:判定函数列表中是否有函数需要改造:是,统计需改造函数,并生成待改造函数列表,执行步骤S6;否,则不对原始SQL语句进行改造,直接输出选择好的执行引擎和原始SQL语句;
S6:根据预先设置好的引擎函数实现方式对待改造函数列表里的函数进行改造,得到改造SQL语句;
S7:输出选择好的执行引擎类型、改造SQL语句以及资源占用参数。
3.根据权利要求2所述的一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于:所述步骤S2中获取的空闲资源包括CPU与内存资源中的空闲资源。
4.根据权利要求2所述的一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于:步骤S2中通过大数据计算资源模型来获取当前大数据集群的各执行引擎的当前任务个数和空闲资源以及所有服务器的公共空闲资源。
5.根据权利要求4所述的一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于:所述大数据计算资源模型包括数据层、收集层、统计计算层以及数据输出层;其中,
数据层,用于将每个SQL任务开始时运行的资源占用数据、每个SQL任务结束后归还的资源数据以及服务器总体资源数据上报到收集层中;
收集层,用于将收集到的数据分别按执行引擎进行数据归类整理,分别对收集服务器资源的占用、空闲情况、任务上报时的执行引擎类型、占用资源信息、任务的运行状态信息进行分字段整理归类集合存放于内存中;
统计计算层,用于统计各项资源数据;包括统计各执行引擎的占用资源、各引擎使用的时长与频次、服务器总体剩下的资源;
数据输出层,用于将统计的各项资源数据写入数据库,以便提供给第三方页面展示用;其还用于将统计的各项资源数据写入缓存,以便后续智能切换计算使用。
6.根据权利要求2所述的一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于:步骤S3中选择出最优的执行引擎的方法如下:
方法A:如果所有的引擎都无历史任务执行的情况下,资源都满足的情况下,则在预先设定的业界公认最适合的引擎排名列表中,选择排名最高的引擎作为当前SQL任务的执行引擎;
方法B:如果所有的引擎都没有执行过历史任务,并且当前SQL任务没有指定资源占用情况,则按预先设定的以资源要求高低来排名的引擎排名列表中选择最低资源要求配置的引擎来作为当前SQL任务的执行引擎;如果当前SQL任务指定了资源占用参数,在所有引擎都满足服务器的空闲资源的情况下,按排名高低选择排名最高的引擎作为当前SQL任务的执行引擎,而在所有引擎都不满足服务器的空闲资源的情况下,则选择排名最中间的引擎作为当前SQL任务的执行引擎;
方法C:如果有部分引擎有过历史任务,则选出所有还没有执行过任务的引擎,并参照预先设定的业界公认最适合的引擎排名列表和预先设定的以资源要求高低来排名的引擎排名列表,将没有执行过任务的引擎按资源情况进行排名,满足排名最高的引擎作为当前SQL任务的执行引擎;当资源不满足引擎时,则按照上述B中的方法进行选择;
方法D:当所有引擎都有过执行任务的情况下,统计各引擎任务单位时间内的执行个数及执行时资源占用情况对比,排列出一个效率由高到低的引擎排名,并计算各引擎的策略值,选择策略值最小的引擎作为SQL任务的执行引擎;当出现策略值相同时,则根据预设的最优化引擎排名值最高的引擎作为执行引擎;其中,策略值的计算公式为:CValue=(Abs(Pcpu-eTaskAvgCpu)+Abs(Pmem-eTaskAvgMem))/2;CValue为策略值,Abs为绝对值函数,Pcpu为当前集群中服务器的空闲CPU资源数,Pmem为当前集群中服务器的空闲内存资源数,eTaskAvgCpu为执行引擎单位时间内任务执行的平均CPU资源数,eTaskAvgMem为执行引擎单位时间内任务执行占用的平均内存大小。
7.根据权利要求2所述的一种大数据平台SQL任务执行引擎智能自动切换的方法,其特征在于,步骤4之前还包括对确认好的引擎落地执行程序包进行整合,具体包括以下步骤:
Ⅰ、将步骤2中确定的SQL语句和资源配置数据组装起来作为引擎落地执行程序包的参数,并将参数分配为命令行参数和程序内集群资源分配参数两种调用模式;
Ⅱ、根据确定的执行引擎类型,获取预先设置好的获取地址,拉取到最新版本的执行文件包来解析引擎落地执行程序包的参数,并在启动执行文件包时,解析出资源参数来申请集群的资源,设置调用并行度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110761594.8A CN113641487B (zh) | 2021-07-06 | 2021-07-06 | 一种大数据平台sql任务执行引擎智能自动切换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110761594.8A CN113641487B (zh) | 2021-07-06 | 2021-07-06 | 一种大数据平台sql任务执行引擎智能自动切换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113641487A true CN113641487A (zh) | 2021-11-12 |
CN113641487B CN113641487B (zh) | 2023-06-13 |
Family
ID=78416822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110761594.8A Active CN113641487B (zh) | 2021-07-06 | 2021-07-06 | 一种大数据平台sql任务执行引擎智能自动切换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113641487B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116186079A (zh) * | 2023-04-27 | 2023-05-30 | 江苏博云科技股份有限公司 | 一种sql批量查询自动改写和优化方法 |
CN117497159A (zh) * | 2024-01-02 | 2024-02-02 | 智业软件股份有限公司 | 基于自动装载sql的卡片管理医院床位的方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120084859A1 (en) * | 2010-09-30 | 2012-04-05 | Microsoft Corporation | Realtime multiple engine selection and combining |
CN104731657A (zh) * | 2013-12-24 | 2015-06-24 | 中国移动通信集团山西有限公司 | 一种资源调度方法和系统 |
CN107944004A (zh) * | 2017-12-07 | 2018-04-20 | 深圳乐信软件技术有限公司 | Spark‑SQL调度的方法、系统、设备及存储介质 |
CN110222072A (zh) * | 2019-06-06 | 2019-09-10 | 江苏满运软件科技有限公司 | 数据查询平台、方法、设备和存储介质 |
CN110807145A (zh) * | 2018-07-20 | 2020-02-18 | 中兴通讯股份有限公司 | 查询引擎获取方法、设备和计算机可读存储介质 |
CN110825767A (zh) * | 2019-11-15 | 2020-02-21 | 江苏满运软件科技有限公司 | 数据查询方法、平台、设备及存储介质 |
US20200073987A1 (en) * | 2018-09-04 | 2020-03-05 | Salesforce.Com, Inc. | Technologies for runtime selection of query execution engines |
CN111723112A (zh) * | 2020-06-11 | 2020-09-29 | 咪咕文化科技有限公司 | 数据任务执行方法、装置、电子设备及存储介质 |
CN112084015A (zh) * | 2020-08-28 | 2020-12-15 | 的卢技术有限公司 | 一种基于云计算的仿真云平台搭建系统及方法 |
CN112162969A (zh) * | 2020-08-21 | 2021-01-01 | 中国科学院国家授时中心 | 一种任务管理系统及方法 |
-
2021
- 2021-07-06 CN CN202110761594.8A patent/CN113641487B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120084859A1 (en) * | 2010-09-30 | 2012-04-05 | Microsoft Corporation | Realtime multiple engine selection and combining |
CN104731657A (zh) * | 2013-12-24 | 2015-06-24 | 中国移动通信集团山西有限公司 | 一种资源调度方法和系统 |
CN107944004A (zh) * | 2017-12-07 | 2018-04-20 | 深圳乐信软件技术有限公司 | Spark‑SQL调度的方法、系统、设备及存储介质 |
CN110807145A (zh) * | 2018-07-20 | 2020-02-18 | 中兴通讯股份有限公司 | 查询引擎获取方法、设备和计算机可读存储介质 |
US20200073987A1 (en) * | 2018-09-04 | 2020-03-05 | Salesforce.Com, Inc. | Technologies for runtime selection of query execution engines |
CN110222072A (zh) * | 2019-06-06 | 2019-09-10 | 江苏满运软件科技有限公司 | 数据查询平台、方法、设备和存储介质 |
CN110825767A (zh) * | 2019-11-15 | 2020-02-21 | 江苏满运软件科技有限公司 | 数据查询方法、平台、设备及存储介质 |
CN111723112A (zh) * | 2020-06-11 | 2020-09-29 | 咪咕文化科技有限公司 | 数据任务执行方法、装置、电子设备及存储介质 |
CN112162969A (zh) * | 2020-08-21 | 2021-01-01 | 中国科学院国家授时中心 | 一种任务管理系统及方法 |
CN112084015A (zh) * | 2020-08-28 | 2020-12-15 | 的卢技术有限公司 | 一种基于云计算的仿真云平台搭建系统及方法 |
Non-Patent Citations (4)
Title |
---|
SUYEON LEE等: "Performance_Analysis_of_Big_Data_ETL_Process_over_CPU-GPU_Heterogeneous_Architectures", 《2021 IEEE 37TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING WORKSHOPS (ICDEW)》, pages 42 - 47 * |
XIAOPENG LI等: "Performance Comparison of Hive, Impala and Spark SQL", 《2015 7TH INTERNATIONAL CONFERENCE ON INTELLIGENT HUMAN-MACHINE SYSTEMS AND CYBERNETICS》, pages 418 - 423 * |
宋江健: "基于OpenTSDB的能源管理系统并行架构研究", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》, no. 02, pages 039 - 44 * |
崔光范等: "基于Spark SQL的分布式全文检索框架的设计与实现", 《计算机科学》, vol. 45, no. 09, pages 104 - 112 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116186079A (zh) * | 2023-04-27 | 2023-05-30 | 江苏博云科技股份有限公司 | 一种sql批量查询自动改写和优化方法 |
CN116186079B (zh) * | 2023-04-27 | 2023-07-04 | 江苏博云科技股份有限公司 | 一种sql批量查询自动改写和优化方法 |
CN117497159A (zh) * | 2024-01-02 | 2024-02-02 | 智业软件股份有限公司 | 基于自动装载sql的卡片管理医院床位的方法 |
CN117497159B (zh) * | 2024-01-02 | 2024-04-16 | 智业软件股份有限公司 | 基于自动装载sql的卡片管理医院床位的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113641487B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7447680B2 (en) | Method and apparatus for optimizing execution of database queries containing user-defined functions | |
US8762367B2 (en) | Accurate and timely enforcement of system resource allocation rules | |
US8046354B2 (en) | Method and apparatus for re-evaluating execution strategy for a database query | |
US8423534B2 (en) | Actively managing resource bottlenecks in a database system | |
CN113641487B (zh) | 一种大数据平台sql任务执行引擎智能自动切换的方法 | |
CN110166282A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN107612886A (zh) | 一种Spark平台Shuffle过程压缩算法决策方法 | |
CN108595254B (zh) | 一种查询调度方法 | |
US20110022585A1 (en) | Multi-partition query governor in a computer database system | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
CN110740079B (zh) | 一种面向分布式调度系统的全链路基准测试系统 | |
CN103873528A (zh) | 一种为用户分配系统资源的方法与设备 | |
CN112052082B (zh) | 任务属性优化方法、装置、服务器及存储介质 | |
CN111752678A (zh) | 面向边缘计算中分布式协同学习的低功耗容器放置方法 | |
CN114356714A (zh) | 基于Kubernetes智能板卡集群的资源集成监控与调度装置 | |
CN116756150B (zh) | 一种Mpp数据库大表关联加速方法 | |
CN111552569B (zh) | 系统资源调度方法、装置及存储介质 | |
CN111913937A (zh) | 数据库运维方法和装置 | |
CN117194445A (zh) | 物化视图的更新方法及电子设备 | |
CN114942748A (zh) | 一种异构编程模型并行方法 | |
CN112631771A (zh) | 一种大数据系统的并行处理方法 | |
CN112579324A (zh) | 一种基于cost模型的商品汇总统计方法 | |
CN118093644A (zh) | 一种基于历史负载和即时负载的openGauss数据库并行优化方法 | |
CN100552682C (zh) | 一种报表计算任务并发控制的方法 | |
CN117745432B (zh) | 基于微服务架构的量化回测系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |