CN109086407A - 面向分布式内存数据库的多流水线调度方法 - Google Patents
面向分布式内存数据库的多流水线调度方法 Download PDFInfo
- Publication number
- CN109086407A CN109086407A CN201810866923.3A CN201810866923A CN109086407A CN 109086407 A CN109086407 A CN 109086407A CN 201810866923 A CN201810866923 A CN 201810866923A CN 109086407 A CN109086407 A CN 109086407A
- Authority
- CN
- China
- Prior art keywords
- assembly line
- resource
- priority
- task
- queue
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的目的是提供一种面向分布式内存数据库的多流水线调度方法,本发明动态地根据集群中现有的可用资源来调度高优先级SQL查询中优先权最大的流水线,并且额外地调度该SQL语句的一些流水线填充空闲的资源,提高整个集群的资源利用率以减少执行时间,提高分布式内存数据库中高优先级SQL查询语句的响应时间。本发明容易实现并且能够取得可观的实际效果。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种面向分布式内存数据库的多流水线调度方法。
背景技术
随着计算机硬件技术的发展,单台商业服务器的主存持续增大。现有单台服务器的内存量最大可达TB级别,能够容纳更多的数据,以减少传统磁盘I/O的代价。但是单台服务器的内存和计算能力毕竟有限,并不能满足大数据应用的需求。比如联机查询处理(OLAP)应用需要实时地在海量数据上处理SQL查询语句的请求,而这些海量数据远超过一台服务器的内存容量。因此,分布式内存集群成为大数据处理的常规平台,尤其针对类似于OLAP的实时性要求高的应用。它通常包括多台大内存的多核服务器,服务器之间通过高速网络连接。在这种架构中,如何有效地利用CPU和网络资源以迅速完成任务是一个挑战。
在OLAP应用中,数据库接收到SQL查询语句之后,会将每条SQL语句转换成一个物理执行计划树。该树中的节点表示物理算子,例如扫描算子(scan)、过滤算子(filter)、聚集算子(aggregation)、排序算子(sort)、哈希连接中哈希表建立算子(build)和探测算子(probe)等。节点之间的有向边表示数据流向。如果一个物理算子只要从孩子算子那里获得一条数据就可以独立执行,那么该算子称为非阻塞型算子,比如扫描算子、过滤算子和探测算子等。相应的,如果一个物理算子的执行需要获取其孩子算子的所有数据,那么它被称为阻塞型算子,例如聚集算子、排序算子和建立算子。这些阻塞型算子会将一棵物理执行计划树分割成多个独立的执行片段,每个执行片段以流水线的方式执行来提高执行效率。故而每个执行片段可以形象地称为流水线,是调度执行的基本单位。多个流水线之间存在数据依赖,并且一个流水线最多有一个后继,整体形成一个树状的有向无环图(DAG)。在分布式环境中,每个流水线还包含需要在哪些服务器上运行的信息,这个可以从原来的查询计划树中提取。一个运行的流水线跨多台服务器,分成多个任务在不同的数据分片上执行。如何协调这些任务以优化单个运行的流水线的性能已经很好地被弹性流水线解决。但是如何并发多个流水线缩短整个SQL查询的耗时是一个新的难题。
在分布式内存数据库中,多个流水线可能来自于一个SQL查询语句,也可能来自多个SQL查询语句。其中来自于同一个SQL查询语句的流水线之间存在树状DAG的依赖关系,多个SQL查询语句的流水线之间可能存在优先级的要求。如何调度这些流水线以尽快完成高优先级的SQL查询是一个值得研究的问题。
现有的在分布式内存数据库中调度多个流水线的方法是按照传统的静态方式进行。首先为每个流水线估计资源需求量,比如分配多少内存以及多少CPU核。这种事先估计主要是基于数据库中的统计信息。然后根据当前资源剩余量,调度当前运行的SQL语句中合适的流水线。通常多个SQL查询之间是串行执行,不允许等待的SQL查询抢占正在执行SQL的资源。这种方式存在如下两个主要问题:
(1)静态的预先设置资源会导致严重的资源浪费。静态方法往往给出次优的调度策略,因为它无法准确估计中间结果的统计信息、数据倾斜以及属性之间的关联等信息。事实上,运行中的流水线的资源消耗是动态变化的,它受运行时任务之间的供需变化影响以及硬件资源的限制。即使这种情况能够被最新的弹性流水线技术优化,但是单个流水线在给定的隔离资源中运行,仍然会浪费资源。首先,一个运行的流水线可能受某一种特定的资源限制而浪费另外的资源。比如一个流水线是CPU密集的,那么网络资源可能会空闲。反之亦然。其次,如果中间结果数据倾斜,那么某些机器会一直忙碌,而另外一些机器可能空闲。最后,给一个流水线分配过多的资源并不会带来相应的性能提升。因为多核程序之间存在的同步或者资源竞争会降低性能。这一点遵循阿姆达定律(Amdahl's Law)。
(2)非抢占式的调度会得出次优的执行顺序,影响高优先级SQL查询的响应时间。一个优先级高的SQL查询可以在等待队列中调整顺序,但是并不能抢占当前运行的SQL查询。除非系统把当前运行的SQL查询强制杀死,但是这会带来昂贵的代价。一旦让高优先级的SQL查询等待,那么它的响应时间就会延迟。此外,即使在一个运行的SQL查询中,如果不允许关键路径上的流水线抢占资源,也会影响该SQL语句的完成时间。因为关键路径上流水线的执行时间决定了整个SQL查询完成时间的下限。
发明内容
本发明的一个目的是提供一种面向分布式内存数据库的多流水线调度方法。
根据本发明的一个方面,提供了一种面向分布式内存数据库的多流水线调度方法,该方法包括:
全局层调度器负责调度流水线,同时本地层调度器负责为对应服务器上多个流水线的任务调度资源。
进一步的,上述方法中,全局层调度器负责调度流水线,包括:
步骤S1,将输入的SQL查询语句转换成多个流水线,由这些流水线构成的DAG按照优先级顺序放入等待队列中,将所述等待队列中前三个DAG的就绪流水线放到就绪队列中,其中,所述就绪流水线没有前驱节点或者它的前驱节点都已经完成;
步骤S2,从次要队列和所述就绪队列中选取优先级最高的流水线Pi,然后按照预设抢占条件判断流水线Pi是否要抢占主要队列中的流水线Pj,如果满足所述预设抢占条件,则将流水线Pj从主要队列中移到次要队列中,对应的,将流水线Pi作为主要流水线移动到主要队列中,如果流水线Pi之前在所述就绪队列中,则将流水线Pi的任务发到对应的服务器上执行;
步骤S3,从所述就绪队列中选取一个流水线Pk,如果流水线Pk所涉及的服务器上的次要流水线个数小于3个,那么将所述流水线Pk从所述就绪队里中移到次要队列中,并将流水线Pk调度为一个次要流水线执行,即将流水线Pk的任务发送到对应的服务器上执行,其中,所述次要流水线用于填充主要队列中的流水线的空闲资源;
步骤S4,如果一个主要或者次要的流水线Pa完成,则流水线Pa的后继节点流水线Pb更新它的前驱节点信息,如果流水线Pb的所有前驱节点完成,则流水线Pb转变成就绪状态,放入所述就绪队列中,然后转到步骤S2,如果Pa所在的SQL查询语句完成,则转到步骤S1。
进一步的,上述方法中,所述预设抢占条件包括:流水线Pi跟所述主要队列中比流水线Pi优先级高的流水线之间没有资源竞争;并且,流水线Pi的优先级比流水线Pj的优先级高,并且流水线Pi和流水线Pj两个之间有资源竞争关系。
进一步的,上述方法中,所述方法还包括:
每隔预设时间如1秒钟,重复执行所述步骤S2~S4。
进一步的,上述方法中,将输入的SQL查询语句转换成多个流水线,由这些流水线构成的DAG按照优先级顺序放入等待队列中,包括:
将输入的高优先级的SQL查询语句和低优先级的SQL查询语句所转换成的流水线构成的DAG按照优先级顺序放入同一个等待队列中,其中,所述等待队列中,所述高优先级的SQL查询语句所转换成的流水线构成的DAG的优先级顺序高于所述低优先级的SQL查询语句所转换成的流水线构成的DAG的优先级顺序。
进一步的,上述方法中,所述流水线Pi和流水线Pj运行于同一个SQL查询语句中,也可能运行于不同的SQL查询语句中。
进一步的,上述方法中,本地层调度器负责为对应服务器上多个流水线的任务调度资源,包括:
所述本地层资源协调器按照资源互补优先和优先级来为次要流水线的任务分配资源。
进一步的,上述方法中,所述本地层资源协调器按照资源互补优先和优先级来为次要流水线的任务分配资源,包括:
如果主要流水线的任务是计算密集型的负载,则优先选择网络密集的次要流水线的任务填充空闲的网络;反之,如果主要流水线的任务是网络密集的负载,则优先选择计算密集型的次要流水线的任务填充空闲的计算资源;
优先级高的次要流水线的任务优先调度;
反之,如果主要流水线的任务需要更多的资源,则优先收缩资源不互补并且优先级低的次要流水线任务的资源。
本发明还提供一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至8中任一项所述的方法。
本发明还提供一种用于在网络设备端信息处理的设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1至8中任一项所述的方法。
与现有技术相比,本发明的有益效果是:
(1)本发明通过从次要队列中和所述就绪队列选取优先级最高的流水线Pi,然后按照预设抢占条件判断流水线Pi是否要抢占主要队列中的流水线Pj,如果满足所述预设抢占条件,则将流水线Pj从主要队列中移到次要队列中,对应的,将流水线Pi作为主要流水线移动到主要队列中,如果流水线Pi之前在所述就绪队列中,则将流水线Pi的任务会发到对应的服务器上执行;从所述就绪队列中按照优先级顺序从高到低选取一个流水线Pk,如果流水线Pk所涉及的服务器上的次要的流水线个数小于3个,那么将所述流水线Pk从所述就绪队里中移到次要队列中,并将流水线Pk调度为一个次要流水线执行,即将流水线Pk的任务发送到对应的服务器上执行,其中,所述次要流水线用于填充主要队列中的流水线的空闲资源,实现对CPU和网络资源敏感性不同的流水线调度,以充分使用服务器的资源;
(2)本发明允许多个SQL查询语句之间抢占,加快高优先级SQL查询的响应时间;
(3)本发明允许一个SQL查询语句中的多个流水线抢占,让关键路径上的流水线优先完成以缩短整个SQL查询的执行时间;
(4)本发明提出的是一种实时调度方法,可以避免静态调度算法的诸多不足。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出本发明一实施例的两层调度器的示意图;
图2示出本发明一实施例的所用到的一个SQL查询语句Q3的一个物理计划图;
图3a、3b、3c示出实施例一中三种调度算法的资源利用率对比图;
图4a、4b示本发明实施例二中两种调度算法的资源利用率对比图。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如图1所示,本发明提供一种面向分布式内存数据库的多流水线调度方法,所述方法包括:
全局层调度器(global layer)负责调度流水线(pipeline scheduler),同时本地层调度器(local layer)负责为对应服务器(server)上多个流水线的任务调度资源(resource coordinator)。
在描述所述全局层之前,介绍每个流水线P会出现的状态:
●等待:P所在的SQL语句在等待队列中,等待更高优先级的SQL执行完成。或者是正在运行的SQL语句中,P的前驱流水线还没有完成。
●就绪:在优先级最高的SQL语句中,P的前驱节点都已经完成。所有的就绪流水线按照优先权从高到低的顺序放在就绪队列中。
●主要运行:P能够分配到足够的资源得以运行。所有的主要流水线按照从高到低的优先权顺序放在主要队列中。
●次要运行:P以填充空闲资源的方式运行。所有的次要流水线按照从高到低的优先权顺序放在次要队列中。
●完成:P完成执行。
本发明的面向分布式内存数据库的多流水线调度方法中,全局层调度器负责调度流水线,包括:
步骤S1,将输入的SQL查询语句转换成多个流水线,由这些流水线构成的DAG按照优先级顺序放入等待队列中,将所述等待队列中前三个DAG的就绪流水线放到就绪队列中,其中,所述就绪流水线没有前驱节点或者它的前驱节点都已经完成;
步骤S2,从次要队列和所述就绪队列中选取优先级最高的流水线Pi,然后按照预设抢占条件判断流水线Pi是否要抢占主要队列中的流水线Pj,如果满足所述预设抢占条件,则将流水线Pj从主要队列中移到次要队列中,对应的,将流水线Pi作为主要流水线移动到主要队列中,如果流水线Pi之前在所述就绪队列中,则将流水线Pi的任务发到对应的服务器上执行;本发明一优选实施例中,所述预设抢占条件包括:流水线Pi跟所述主要队列中比流水线Pi优先级高的流水线之间没有资源竞争;并且,流水线Pi的优先级比流水线Pj的优先级高,并且流水线Pi和流水线Pj两个之间有资源竞争关系;
在此,所述主要队列和次要队列初始为空,后续所述主要队列和次要队列中的流水线从所述就绪队列里选出;
步骤S3,从所述就绪队列中选取一个流水线Pk,如果流水线Pk所涉及的服务器上的次要流水线个数小于3个,那么将所述流水线Pk从所述就绪队里中移到次要队列中,并将流水线Pk调度为一个次要流水线执行,即将流水线Pk的任务发送到对应的服务器上执行,其中,所述次要流水线用于填充主要队列中的流水线的空闲资源;
步骤S4,如果一个主要或者次要的流水线Pa完成,则流水线Pa的后继节点流水线Pb更新它的前驱节点信息,如果流水线Pb的所有前驱节点完成,则流水线Pb转变成就绪状态,放入所述就绪队列中,然后转到步骤S2,如果Pa所在的SQL查询语句完成,则转到步骤S1。
在此,为了提升资源利用率,本发明提出自适应填充技术。本发明能够根据已有资源调度尽量多的流水线之外再调度一些额外的流水线,用于填充空闲的资源。比如调度的流水线主要消耗CPU资源,那么再可以调度一些消耗网络的流水线。这样的调度能够充分使用集群中的多维度的资源,即CPU和网络。其中把用于填充空闲资源的流水线称为次要流水线,对应的其他能够调度的流水线称为主要流水线。
本发明动态地根据集群中现有的可用资源来调度高优先级SQL查询中优先权最大的流水线,并且额外地调度该SQL语句的一些流水线填充空闲的资源,提高整个集群的资源利用率以减少执行时间,提高分布式内存数据库中高优先级SQL查询语句的响应时间。本发明容易实现并且能够取得可观的实际效果。
本发明的面向分布式内存数据库的多流水线调度方法一实施中,所述方法还包括:
每隔预设时间如1秒钟,重复执行所述步骤S2~S4。
本发明的面向分布式内存数据库的多流水线调度方法一实施中,步骤S1中,将输入的SQL查询语句转换成多个流水线,由这些流水线构成的DAG按照优先级顺序放入等待队列中,包括:
将输入的高优先级的SQL查询语句和低优先级的SQL查询语句所转换成的流水线构成的DAG按照优先级顺序放入同一个等待队列中,其中,所述等待队列中,所述高优先级的SQL查询语句所转换成的流水线构成的DAG的优先级顺序高于所述低优先级的SQL查询语句所转换成的流水线构成的DAG的优先级顺序。
在此,提出基于优先权的抢占技术。它允许高优先级SQL语句中的流水线抢占正在运行的低优先级SQL语句中流水线的资源。
本发明的面向分布式内存数据库的多流水线调度方法一实施中,所述流水线Pi和流水线Pj运行于同一个SQL查询语句中,也可能运行于不同的SQL查询语句中。
在此,允许同一个运行的SQL查询语句中高优先级的流水线Pi抢占低优先级的流水线Pj,缩短这些流水线所在高优先级SQL查询的执行时间。
允许在同一个SQL语句中发生,即高优先权的流水线抢占低优先权流水线的资源。同一个SQL语句中的流水线(P)的实时优先权(rank)根据如下公式确定:
rank(p)=rank(succ(p))+cost(p)*rest(p)
其中succ(p)表示p的后继,并且在树状DAG中,任意一个流水线最多只有一个后继;cost(p)表示p的执行代价,可以根据数据库中的查询优化器得出;rest(p)表示p的剩余比例,可以根据剩余的数据量推算出。
本发明的面向分布式内存数据库的多流水线调度方法一实施中,本地层调度器负责为对应服务器上多个流水线的任务调度资源,包括:
所述本地层资源协调器按照资源互补优先和优先级来为次要流水线的任务分配资源。
本发明的面向分布式内存数据库的多流水线调度方法一实施中,所述本地层资源协调器按照资源互补优先和优先级来为次要流水线的任务分配资源,包括:
资源互补的流水线优先:如果主要流水线的任务是计算密集型的负载,则优先选择网络密集的次要流水线的任务填充空闲的网络;反之,如果主要流水线的任务是网络密集的负载,则优先选择计算密集型的次要流水线的任务填充空闲的计算资源;
优先权重要的流水线优先:优先级高的次要流水线的任务优先调度;
反之,如果主要流水线的任务需要更多的资源,则优先收缩资源不互补并且优先级低的次要流水线任务的资源。
在此,所述的本地层调度器负责为主要流水线和次要流水线的任务分配资源。主要流水线的任务按照弹性流水线的方式协调它们之间的资源。默认情况下,一台服务器上只运行一个主要流水线,即这个主要流水线的任务可以自由使用所在服务器的资源。如果这个主要流水线不能充分使用所在服务器的资源,那么会按照上述的顺序调度次要流水线的任务。
本发明不仅允许新加入的最高优先级SQL查询语句抢占当前正在运行的SQL查询,还能缩短高优先级SQL查询的执行时间。这两个方面通过接下来的两个实例加以说明。
本发明中所有流水线都是基于弹性流水线技术执行。该技术可以动态调整每个执行的流水线的并发线程数。也就是说一个流水线的并发度可以缩小到0,即让整个流水线暂停运行,为流水线之间的抢占提供了可能。此外,对于主要运行的SQL查询语句,该技术协调每个运行的流水线内部任务的生产-消费平衡,充分利用资源,从而提高整个流水线的吞吐率。得益于此技术,我们只需要为每个流水线分配粗粒度的资源,而不必要为每个流水线内部的任务分配具体的资源。默认情况下,我们以单个服务器为基本的资源分配粒度,即一台服务器只分配到一个主要流水线,并且我们假设一台服务器上的内存足够大,能够容纳所有的中间计算结果。(当然这个粒度可以更细到单个服务器上一定资源的组合,比如10个CPU核和10G内存为一组隔离的资源。)因此,一台服务器上(一组隔离的资源)最多只有一个主要流水线的任务,以及可能有多个次要流水线的任务。其中的主要问题是如何在全局层调度这些主要和次要的流水线,以及在本地层为多个任务分配CPU核。
实施例一:我们通过运行TPC-H基准测试集中的第三个查询语句(Q3)来说明本发明中的算法如何缩短SQL查询的执行时间。Q3的一个物理执行计划如图2所示。它包含3个流水线(Pipeline,简称为P),每个流水线内部被数据传输算子(exchange)切分成多个阶段(Stage,简称为S),每个阶段在不同数据分片上的实例化就是一个任务。其中三个流水线之间存在依赖关系,即P2依赖于P0和P1,但是P0和P1之间没有依赖关系,也就是说这两个流水线可以并行执行。并且,由于P0涉及到网络传输,属于网络资源敏感的流水线,相反,P1属于计算敏感的流水线。这里,我们假设P0的优先权高于P1。为了便于说明情况,我们假设集群中有两台服务器a和b,并且每台服务器上只有一个由阶段实例化的任务。接下来,通过对比传统静态调度方法来体现本发明中算法的特点。
图3a表示基于传统静态调度算法的资源利用率图。根据事先估计,该算法在每台服务器上为P0分配60%的CPU核数,P1分配40%的CPU核数,同时调度P0和P1在两台服务器上运行。等到P0和P1运行结束后,P3开始运行。我们可以观察到在每台服务器有大量的CPU资源浪费,如图中的白色区域所示。在P0结束之后,网络也处于空闲状态。按照这种调度,Q3的耗时为t0。
接下来为了进一步说明本发明的算法细节,我们先禁止调度算法中的抢占功能,只保留次要流水线的填充功能;然后在有填充的基础上启用抢占功能。这两种情况分别在图3b和3c中所示。在图3b中,先调度P0作为主要执行的流水线,同时调度P1作为次要的流水线,用于填充前者剩余的CPU核。我们看到在P0完成之前(即t1之前),CPU核心几乎能够被完全利用。但是在这之后,所运行的流水线并不能充分利用CPU核。这种情况下,Q3的耗时为t2。相比较而言,在图3c中,原来优先权高的P0在运行这一段时间之后,它的优先权逐步降低,在t3时刻,它竟然比P1的优先权还要低。此刻发生一次抢占,即P1变成主要流水线,并且从P0那里抢来更多的CPU核,直到达到性能扩展的瓶颈。而P0由主要流水线变成次要流水线,用于填充P1的空闲资源。抢占之后,资源也被充分利用,直到P1完成。最后运行的P2只能单独运行,没有其他的流水线可以填充它的空闲资源。这种调度中Q3的耗时为t5。可以看到,本发明中的具有填充和抢占的调度算法比传统的静态调度减少t0-t5的时间。
实施例二:为了详细说明多个SQL查询语句的抢占情况,我们再引入TPC-H的第一个查询语句(Q1)。它只包含一个计算密集型的流水线,记为P3。我们假设它图4a和4b中P0和P1完成的时候输入系统,并且比较此刻是否发生抢占的两种情况。图4a表示不发生抢占的情况。在Q1输入的时刻t1,它的P3作为一个次要的流水线用于填充Q3中还未完成的P2的空闲资源。在P2完成之后,P3独占集群中的资源,同样会有部分CPU资源不能完全充分利用。以此类推,这些空闲资源能够被其他SQL语句中的流水线填充。图4a表示Q1被赋予更高的优先级的情况,那么输入到系统之后就会抢占Q3的运行资源,其中的P2变成一个次要流水线,而P3是主要流水线。这两种调度算法都在相同的时间内完成两个SQL查询,但是允许抢占的调度加快高优先级Q1的响应时间,即从t3时刻提前到t6时刻。
本发明还提供一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至8中任一项所述的方法。
本发明还提供一种用于在网络设备端信息处理的设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1至8中任一项所述的方法。
与现有技术相比,本发明的有益效果是:
(1)本发明通过从次要队列中和所述就绪队列选取优先级最高的流水线Pi,然后按照预设抢占条件判断流水线Pi是否要抢占主要队列中的流水线Pj,如果满足所述预设抢占条件,则将流水线Pj从主要队列中移到次要队列中,对应的,将流水线Pi作为主要流水线移动到主要队列中,如果流水线Pi之前在所述就绪队列中,则将流水线Pi的任务发到对应的服务器上执行;从所述就绪队列中按照优先级顺序从高到低选取一个流水线Pk,如果流水线Pk所涉及的服务器上的次要流水线个数小于3个,那么将所述流水线Pk从所述就绪队里中移到次要队列中,并将流水线Pk调度为一个次要流水线执行,即将流水线Pk的任务发送到对应的服务器上执行,其中,所述次要流水线用于填充主要队列中的流水线的空闲资源,实现对CPU和网络资源敏感性不同的流水线调度,以充分使用服务器的资源;
(2)本发明允许多个SQL查询语句之间抢占,加快高优先级SQL查询的响应时间;
(3)本发明允许一个SQL查询语句中的多个流水线抢占,让关键路径上的流水线优先完成以缩短整个SQL查询的执行时间;
(4)本发明提出的是一种实时调度方法,可以避免静态调度算法的诸多不足。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (10)
1.一种面向分布式内存数据库的多流水线调度方法,其中,该方法包括:
全局层调度器负责调度流水线,同时本地层调度器负责为对应服务器上多个流水线的任务调度资源。
2.根据权利要求1所述的方法,其中,全局层调度器负责调度流水线,包括:
步骤S1,将输入的SQL查询语句转换成多个流水线,由这些流水线构成的DAG按照优先级顺序放入等待队列中,将所述等待队列中前三个DAG的就绪流水线放到就绪队列中,其中,所述就绪流水线没有前驱节点或者它的前驱节点都已经完成;
步骤S2,从次要队列和所述就绪队列中选取优先级最高的流水线Pi,然后按照预设抢占条件判断流水线Pi是否要抢占主要队列中的流水线Pj,如果满足所述预设抢占条件,则将流水线Pj从主要队列中移到次要队列中,对应的,将流水线Pi作为主要流水线移动到主要队列中,如果流水线Pi之前在所述就绪队列中,则将流水线Pi的任务发到对应的服务器上执行;
步骤S3,从所述就绪队列中选取一个流水线Pk,如果流水线Pk所涉及的服务器上的次要流水线个数小于3个,那么将所述流水线Pk从所述就绪队里中移到次要队列中,并将流水线Pk调度为一个次要流水线执行,即将流水线Pk的任务发送到对应的服务器上执行,其中,所述次要流水线用于填充主要队列中的流水线的空闲资源;
步骤S4,如果一个主要或者次要的流水线Pa完成,则流水线Pa的后继节点流水线Pb更新它的前驱节点信息,如果流水线Pb的所有前驱节点完成,则流水线Pb转变成就绪状态,放入所述就绪队列中,然后转到步骤S2,如果Pa所在的SQL查询语句完成,则转到步骤S1。
3.根据权利要求2所述的方法,其中,所述预设抢占条件包括:流水线Pi跟所述主要队列中比流水线Pi优先级高的流水线之间没有资源竞争;并且,流水线Pi的优先级比流水线Pj的优先级高,并且流水线Pi和流水线Pj两个之间有资源竞争关系。
4.根据权利要求2所述的方法,其中,所述方法还包括:
每隔预设时间如1秒钟,重复执行所述步骤S2~S4。
5.根据权利要求2所述的方法,其中,将输入的SQL查询语句转换成多个流水线,由这些流水线构成的DAG按照优先级顺序放入等待队列中,包括:
将输入的高优先级的SQL查询语句和低优先级的SQL查询语句所转换成的流水线构成的DAG按照优先级顺序放入同一个等待队列中,其中,所述等待队列中,所述高优先级的SQL查询语句所转换成的流水线构成的DAG的优先级顺序高于所述低优先级的SQL查询语句所转换成的流水线构成的DAG的优先级顺序。
6.根据权利要求2所述的方法,其中,所述流水线Pi和流水线Pj运行于同一个SQL查询语句中,或者运行于不同的SQL查询语句中。
7.根据权利要求2所述的方法,其中,本地层调度器负责为对应服务器上多个流水线的任务调度资源,包括:
所述本地层资源协调器按照资源互补优先和优先级来为次要流水线的任务分配资源。
8.根据权利要求7所述的方法,其中,所述本地层资源协调器按照资源互补优先和优先级来为次要流水线的任务分配资源,包括:
如果主要流水线的任务是计算密集型的负载,则优先选择网络密集的次要流水线的任务填充空闲的网络;反之,如果主要流水线的任务是网络密集的负载,则优先选择计算密集型的次要流水线的任务填充空闲的计算资源;
优先级高的次要流水线的任务优先调度;
反之,如果主要流水线的任务需要更多的资源,则优先收缩资源不互补并且优先级低的次要流水线任务的资源。
9.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至8中任一项所述的方法。
10.一种用于在网络设备端信息处理的设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810866923.3A CN109086407A (zh) | 2018-08-01 | 2018-08-01 | 面向分布式内存数据库的多流水线调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810866923.3A CN109086407A (zh) | 2018-08-01 | 2018-08-01 | 面向分布式内存数据库的多流水线调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109086407A true CN109086407A (zh) | 2018-12-25 |
Family
ID=64833585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810866923.3A Pending CN109086407A (zh) | 2018-08-01 | 2018-08-01 | 面向分布式内存数据库的多流水线调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086407A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286671A (zh) * | 2020-12-29 | 2021-01-29 | 湖南星河云程信息科技有限公司 | 一种容器化批处理作业调度方法、装置和计算机设备 |
CN113344350A (zh) * | 2021-05-27 | 2021-09-03 | 平安科技(深圳)有限公司 | 流水线资源智能调度方法、装置、设备及介质 |
CN113590651A (zh) * | 2021-08-18 | 2021-11-02 | 四川新网银行股份有限公司 | 一种基于hql的跨集群数据处理系统及方法 |
WO2022009006A1 (en) * | 2020-07-09 | 2022-01-13 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in distributed computing system |
CN114490780A (zh) * | 2022-03-31 | 2022-05-13 | 北京数变科技有限公司 | 一种数据流的调度方法、装置、电子设备、介质及产品 |
CN115168410A (zh) * | 2022-09-07 | 2022-10-11 | 北京镜舟科技有限公司 | 算子执行方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729241A (zh) * | 2013-12-12 | 2014-04-16 | 华中科技大学 | 一种多核环境下OpenMP任务并行的优化方法 |
CN107832129A (zh) * | 2017-10-24 | 2018-03-23 | 华中科技大学 | 一种面向分布式流计算系统的动态任务调度优化方法 |
US10025566B1 (en) * | 2016-10-07 | 2018-07-17 | The Mathworks, Inc. | Scheduling technique to transform dataflow graph into efficient schedule |
-
2018
- 2018-08-01 CN CN201810866923.3A patent/CN109086407A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729241A (zh) * | 2013-12-12 | 2014-04-16 | 华中科技大学 | 一种多核环境下OpenMP任务并行的优化方法 |
US10025566B1 (en) * | 2016-10-07 | 2018-07-17 | The Mathworks, Inc. | Scheduling technique to transform dataflow graph into efficient schedule |
CN107832129A (zh) * | 2017-10-24 | 2018-03-23 | 华中科技大学 | 一种面向分布式流计算系统的动态任务调度优化方法 |
Non-Patent Citations (1)
Title |
---|
ZHUHE FANG 等: ""Parallelizing Multiple Pipelines of One Query in a Main Memory Database Cluster"", 《2018 IEEE 34TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING (ICDE)》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022009006A1 (en) * | 2020-07-09 | 2022-01-13 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in distributed computing system |
US11848980B2 (en) | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
CN112286671A (zh) * | 2020-12-29 | 2021-01-29 | 湖南星河云程信息科技有限公司 | 一种容器化批处理作业调度方法、装置和计算机设备 |
CN113344350A (zh) * | 2021-05-27 | 2021-09-03 | 平安科技(深圳)有限公司 | 流水线资源智能调度方法、装置、设备及介质 |
CN113344350B (zh) * | 2021-05-27 | 2022-08-16 | 平安科技(深圳)有限公司 | 流水线资源智能调度方法、装置、设备及介质 |
CN113590651A (zh) * | 2021-08-18 | 2021-11-02 | 四川新网银行股份有限公司 | 一种基于hql的跨集群数据处理系统及方法 |
CN113590651B (zh) * | 2021-08-18 | 2023-06-20 | 四川新网银行股份有限公司 | 一种基于hql的跨集群数据处理系统及方法 |
CN114490780A (zh) * | 2022-03-31 | 2022-05-13 | 北京数变科技有限公司 | 一种数据流的调度方法、装置、电子设备、介质及产品 |
CN115168410A (zh) * | 2022-09-07 | 2022-10-11 | 北京镜舟科技有限公司 | 算子执行方法、装置、电子设备及存储介质 |
CN115168410B (zh) * | 2022-09-07 | 2022-12-20 | 北京镜舟科技有限公司 | 算子执行方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086407A (zh) | 面向分布式内存数据库的多流水线调度方法 | |
Giatrakos et al. | Complex event recognition in the big data era: a survey | |
US10585889B2 (en) | Optimizing skewed joins in big data | |
CN107239335B (zh) | 分布式系统的作业调度系统及方法 | |
JP6467497B2 (ja) | 特定のデータポートの接続の特定に基づいてグラフの構成要素の自動化されたクラスタリングによるグラフに基づくプログラムの仕様のコンパイル | |
US9165032B2 (en) | Allocation of resources for concurrent query execution via adaptive segmentation | |
EP2932377B1 (en) | Reachability-based coordination for cyclic dataflow | |
JP2017530456A (ja) | グラフに基づくプログラムの仕様の実行 | |
JP6467500B2 (ja) | グラフに基づくプログラムの仕様内の構成要素の関連するタスクを制御するための、それらの構成要素の実行状態の管理 | |
CN108475212B (zh) | 使用动态分区处理数据的方法、系统和计算机可读介质 | |
CN106250233B (zh) | MapReduce性能优化系统及优化方法 | |
JP2017530490A (ja) | データ処理タスクの制御 | |
Breß et al. | A framework for cost based optimization of hybrid CPU/GPU query plans in database systems | |
US20160034307A1 (en) | Modifying a flow of operations to be executed in a plurality of execution environments | |
CN113434302A (zh) | 分布式作业执行方法、主节点、系统、物理机及存储介质 | |
WO2023221813A1 (zh) | 分布式数据库的计划执行方法、装置和系统 | |
Chakrabarti et al. | Resource scheduling for parallel database and scientific applications | |
US9436503B2 (en) | Concurrency control mechanisms for highly multi-threaded systems | |
CN114969111B (zh) | 分布式数据库的逻辑子计划执行方法、装置及系统 | |
Lynden et al. | Dynamic data redistribution for MapReduce joins | |
Pontelli et al. | An investigation in parallel execution of answer set programs on distributed memory platforms: Task sharing and dynamic scheduling | |
Lemerre et al. | Equivalence between schedule representations: Theory and applications | |
Fang et al. | Scheduling resources to multiple pipelines of one query in a main memory database cluster | |
El Danaoui et al. | A Cost-Effective Query Optimizer for Multi-tenant Parallel DBMSs | |
Fang et al. | Parallelizing multiple pipelines of one query in a main memory database cluster |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181225 |
|
RJ01 | Rejection of invention patent application after publication |