CN114064246A - 一种用于执行调度的方法和装置 - Google Patents

一种用于执行调度的方法和装置 Download PDF

Info

Publication number
CN114064246A
CN114064246A CN202111376067.1A CN202111376067A CN114064246A CN 114064246 A CN114064246 A CN 114064246A CN 202111376067 A CN202111376067 A CN 202111376067A CN 114064246 A CN114064246 A CN 114064246A
Authority
CN
China
Prior art keywords
cluster
client
scheduling
candidate
related information
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
Application number
CN202111376067.1A
Other languages
English (en)
Inventor
江昕
刘光华
潘丹
赵辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Du Xiaoman Technology Beijing Co Ltd
Original Assignee
Du Xiaoman Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Du Xiaoman Technology Beijing Co Ltd filed Critical Du Xiaoman Technology Beijing Co Ltd
Priority to CN202111376067.1A priority Critical patent/CN114064246A/zh
Publication of CN114064246A publication Critical patent/CN114064246A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明的目的是提供一种用于执行调度的方法和装置的方法和装置。所述方法包括:响应于来自客户端的调度请求,获取各个集群的运维相关数据;基于各个集群的运维相关信息,确定可用的一个或多个候选集群;根据各个候选集群的状态相关信息,为该客户端选择合适的集群,从而将选中的集群的标识信息发送至该客户端。本申请实施例具有以下优点:通过调度装置为各个客户端分配合适的集群,客户端每次提交任务时先请求调度装置,调度装置能够对故障集群识别,将任务提交到正常集群中,从而避免因某一集群故障而导致整个Presto服务中断,提升了用户体验,并且实现过程较为容易,无需对集群代码进行深入修改的特点。

Description

一种用于执行调度的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于执行调度的方法和装置。
背景技术
基于现有技术的方案,
Presto是专门为大数据实时查询计算而设计和开发的一款产品。无论是对多数据源支持,还是高性能、易用性、可扩展性等方面,Presto都是大数据实时查询计算产品中的佼佼者。
Presto集群一共有两种服务器进程:Coordinator服务进程和Worker服务进程,其中Coordinator服务进程的作用是接收查询请求、解析查询语句、生成查询执行计划、任务调度和Worker管理。而Worker服务进程则执行被分解后的查询执行任务。
Presto集群中的Coordinator服务是单点,且其本身存在单机性能上限的瓶颈,当其达到单机性能瓶颈之后,无法继续扩展,会导致集群进入堵塞状态。
另外,当Presto集群Coordinator服务进程意外中断之后,会导致整个集群进入不可用状态,影响是十分巨大的,因此需要考虑如何实现Presto集群的高可用,当Coordinator服务进程意外中断之后可以不影响整个集群的运行。
目前主要的Presto集群高可用方案主要包括以下几种:
1)通过运维技术,实现ip自动漂移。当coordinator服务进入不可用状态,备用机器自动进入服务状态,目的是解决Coordinator节点服务停止的问题;
2)Presto on Yarn,通过Yarn对Presto任务进行管理和调度,通过调度的方式实现高可用,也能避免单节点Coordinator服务意外中断导致服务不可用;
3)对Presto进行源码级别的改造,支持Coordinator主备模式,以及实现故障自动切换。
然而,以上方案分别存在以下缺陷:
1)实现ip自动漂移;缺点是对运维部门有较大的技术要求。除此之外,在一些特定的生产环境下,Presto集群启用kerberos认证模式,由于当前安全验证跟hostname强绑定,会导致无法兼容ip自动漂移方案;
2)Presto on Yarn;其缺点为该方案依赖于apache slider,该软件在2018.05已经退役,属于过时技术方案,而且该方案依赖于yarn的容器级别的自动重试,重试期间服务不可用;
3)对Presto进行源码级别的改造;其缺点为开发难度大,而且可能会导致跟开源社区脱节,社区的roadmap有类似的topic,但是当前未实现
综上,基于现有技术的Presto高可用方案存在以下缺点:在一些特定的生产环境下,无法适应安全性的要求;重试期间集群服务处于不可用状态;开发难度大,需要耗费较大的人力
发明内容
本发明的目的是提供一种用于执行调度的方法和装置。
根据本申请的实施例,提供了一种用于执行调度的方法,其中,所述方法包括:
响应于来自客户端的调度请求,获取各个集群的运维相关数据;
基于各个集群的运维相关信息,确定可用的一个或多个候选集群;
根据各个候选集群的状态相关信息,为该客户端选择合适的集群,从而将选中的集群的标识信息发送至该客户端。
根据本申请的实施例,提供了一种在客户端请求调度的方法,其中,所述方法包括:
需要建立会话时,向调度装置发送调度请求;
接收调度装置返回的集群的标识信息;
基于该集群的标识信息,和相应的集群的服务端建立会话。
根据本申请的实施例,提供了一种用于执行调度的调度装置,其中,所述调度装置包括:
用于响应于来自客户端的调度请求,获取各个集群的运维相关数据的装置;
用于基于各个集群的运维相关信息,确定可用的一个或多个候选集群的装置;
用于根据各个候选集群的状态相关信息,为该客户端选择合适的集群的装置。
根据本申请的实施例,提供了一种客户端,其中,所述客户端包括:
用于需要建立会话时,向调度装置发送调度请求的装置;
用于接收调度装置返回的集群的标识信息的装置;
用于基于该集群的标识信息,和相应的集群的服务端建立会话的装置。
根据本申请的实施例,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本申请实施例的方法。
根据本申请的实施例,提供了一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本申请实施例的方法。
与现有技术相比,本申请实施例具有以下优点:通过调度装置为各个客户端分配合适的集群,客户端每次提交任务时先请求调度装置,调度装置能够对故障集群识别,将任务提交到正常集群中,从而避免因某一集群故障而导致整个Presto服务中断,提升了用户体验,并且实现过程较为容易,无需对集群代码进行深入修改的特点;基于K8S可实现各个集群自动地扩容和缩容,并对Presto集群中的服务进程的CPU和内存资源、网络等资源进行隔离,进一步实现整个系统的高可用性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出了根据本申请实施例的用于执行调度的方法流程图;
图2示出了根据本申请实施例的用于执行调度的调度装置和客户端的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本发明作进一步详细描述。
图1示出了根据本申请实施例的用于执行调度的方法流程图。所述方法包括由调度装置执行的步骤S101、步骤S102和步骤S103,以及由客户端执行的步骤S201、步骤S202和步骤S203。
其中,所述调度装置可以作为Presto系统中单独的网络设备。或者,所述调度装置包含于Presto系统已有的其它网络设备。
参照图1,在步骤S201中,需要建立会话时,客户端向调度装置发送调度请求。
其中,所述会话为客户端会话(client session)。
根据一个实施例,将诸如身份认证等建立会话需要的数据固定存储于客户端内部,避免用户直接在客户端指定集群来建立会话。
在步骤S101中,响应于来自客户端的调度请求,获取各个集群的运维相关数据。
其中,所述运维相关数据包括各种与集群的运维状况相关的信息。例如,集群运行的情况、节点的详细信息和资源队列的详细信息等
根据一个实施例,响应于来自客户端的调度请求,实时地获取各个集群的运维相关数据。具体地,可通过Presto系统的REST API接口获得各个集群的运维相关数据。
根据一个实施例,所述方法还包括由调度装置执行的步骤S104和步骤S105。
在步骤S104中,监测各个集群的运维相关数据。
在步骤S105中,将更新后的各个集群的运维相关数据存储于相应的数据表中。例如,可将更新后的各个集群的运维相关数据存储于到关系型数据库(MySQL)数据表中。
在步骤S101中,响应于来自客户端的调度请求,从数据表中读取各个集群的运维相关数据。
继续参照图1进行说明,在步骤S102中,基于各个集群的运维相关信息,确定可用的一个或多个候选集群。
根据一个实施例,基于各个集群的运维状态来确定可用的一个或多个候选集群;如果一个集群正在运维,则确定该集群目前处于不可用状态,并将其他不在运维的一个或多个集群作为可用的候选集群。
根据一个实施例,先确定Coordinator节点的状态是否可用,再确定集群是否可用;具体地,基于各个集群的运维相关信息,读取其中的Coordinator节点的状态码,如果Coordinator节点状态码为1000则该节点处于active状态,是可用的。如果为其余状态码,则该节点处于不可用状态。接着,对于Coordinator节点可用的各个集群,根据各个集群的运维状态来确定可用的一个或多个候选集群。
由于无论是Coordinator节点不可用还是集群不可用,都会导致提交的任务无法运行,本实施例先确定Coordinator节点的状态是否可用再确定集群是否可用的方式能够确保为客户端调度确实可用的集群。
接着,在步骤S103中,根据各个候选集群的状态相关信息,为该客户端选择合适的集群,从而将选中的集群的标识信息发送至该客户端。
其中,所述状态相关信息包括但不限于以下至少任一项:
1)正在运行的任务数;
2)被阻塞的任务数;
3)正在排队的任务数;
4)工作节点数;
5)消耗的内存;
6)输入的数据量;
7)CPU执行时间。
具体地,可基于上述状态相关信息中的一项或多项信息来为该客户端选择合适的集群。例如,从多个候选集群中选择运行任务数量最少的集群。
根据一个实施例,基于各个候选集群当前的状态相关信息,为该客户端选择负载最低的集群。
具体地,可基于多种标准来确定候选集群的负载的高低。例如,候选集群正在运行的任务数或排队数是否超过预定数量,候选集群消耗的内存占比是否超过预定阈值,或者等等。
根据一个实施例,如果一个候选集群的负载情况超过了预定上限,则确定该候选集群的负载情况均超过了预定上限,后续任务将不再调度到该集群中。
例如,如果候选集群的内存消耗达到上限的80%,或者排队的任务数量超过10个,则确定该候选集群的负载情况超过了预定上限。
根据一个实施例,如果当前所有候选集群的负载情况均超过了预定上限,则随机为该客户端选择一个集群。
根据一个示例,所有集群的资源队列配置信息都保持一致,因此同一个资源组在每个集群都存在着一个相同名称的资源队列。调度装置从数据库中读取到所有可用集群的资源队列的具体数据,包括:
softMemoryLimit:表示资源队列内存的上限,超出这个上限则该组提交的任务需要排队;
hardConcurrencyLimit:表示同时运行的最大任务数,超出这个数量则后提交的任务需要排队;
memoryUsage:表示当前资源队列已经消耗掉的内存;
numRunningQueries:表示当前正在运行的任务数;
numQueuedQueries:表示当前正在排队的任务数。
调度装置基于以上数据对资源队列进行分析,如果一个集群的memoryUsage大于等于softMemoryLimit,即消耗资源达到了资源队列的上限,或者numQueuedQueries大于等于hardConcurrencyLimit,即排队的任务数已经超过了最大并发上限,这两种情况满足任一条,则确定该资源队列在该集群上处于繁忙状态,后续的任务将不在该集群提交。若所有集群上的该资源队列都处于繁忙状态,则随机分配一个集群并将相应的集群ID返回给客户端。
下面继续参照图1进行说明,在步骤S202中,客户端接收调度装置返回的集群的标识信息。
在步骤S203中,客户端基于该集群的标识信息,和相应的集群的服务端建立会话。
具体地,客户端对接收到的集群的标识信息进行识别,与相应的集群的服务端建立会话。如果由于异常或网络等原因未能从调度装置获取集群的标识信息,则在客户端本地随机选择一个集群来建立会话。
根据一个实施例,客户端通过调度装置与相应的集群建立客户端会话之后,如果用户没有退出客户端而是接着提交任务,则客户端将后续任务提交到该集群。
根据一个实施例,所述方法包括由调度装置执行的步骤S106和步骤S107。
在步骤S106中,监测各个执行中的任务的持续时间。
在步骤S107中,如果某任务的执行时间超过预定阈值,则终止该执行该任务。
例如,Presto服务端在执行任务时,设定一个周期为1秒的线程来监测各个执行中的任务的持续时间,如果某任务的执行时间超过预定阈值,则终止该执行该任务。
根据一个实施例,为不同的资源队列设置不同的执行时间的阈值,由于每个资源队列的资源和执行大任务的频率各不相同,此方式可提高Presto系统的高可用性。
根据一个实施例,使用K8S技术,将Presto集群布置在K8S上,使得各个集群自动地扩容和缩容。K8S即kubernetes,是为容器服务而生的一个可移植容器的编排管理工具,一套全新的基于容器技术的分布式架构领先方案。
并且,基于K8S可实现对Presto集群中的服务进程的CPU和内存资源、网络等资源进行隔离,进一步实现整个系统的高可用性。
根据本申请实施例的方法,通过调度装置为各个客户端分配合适的集群,客户端每次提交任务时先请求调度装置,调度装置能够对故障集群识别,将任务提交到正常集群中,从而避免因某一集群故障而导致整个Presto服务中断,提升了用户体验,并且实现过程较为容易,无需对集群代码进行深入修改的特点;基于K8S可实现各个集群自动地扩容和缩容,并对Presto集群中的服务进程的CPU和内存资源、网络等资源进行隔离,进一步实现整个系统的高可用性。
图2示出了根据本申请实施例的用于执行调度的调度装置和客户端的结构示意图
所述调度装置包括:用于响应于来自客户端的调度请求,获取各个集群的运维相关数据的装置(以下简称“数据获取装置101”),用于基于各个集群的运维相关信息,确定可用的一个或多个候选集群的装置(以下简称“候选确定装置102”),和用于根据各个候选集群的状态相关信息,为该客户端选择合适的集群的装置(以下简称“集群选择装置103”)。
所述客户端包括:用于需要建立会话时,向调度装置发送调度请求的装置(以下简称“请求发送装置201”),用于接收调度装置返回的集群的标识信息的装置(以下简称“信息接收装置202”),和用于基于该集群的标识信息,和相应的集群的服务端建立会话的装置(以下简称“会话建立装置203”)。
参照图2,需要建立会话时,请求发送装置201向调度装置发送调度请求。
其中,所述会话为客户端会话(client session)。
根据一个实施例,将诸如身份认证等建立会话需要的数据固定存储于客户端内部,避免用户直接在客户端指定集群来建立会话。
响应于来自客户端的调度请求,数据获取装置101获取各个集群的运维相关数据。
其中,所述运维相关数据包括各种与集群的运维状况相关的信息。例如,集群运行的情况、节点的详细信息和资源队列的详细信息等
根据一个实施例,响应于来自客户端的调度请求,数据获取装置101实时地获取各个集群的运维相关数据。具体地,数据获取装置101可通过Presto系统的REST API接口获得各个集群的运维相关数据。
根据一个实施例,所述装置还包括用于监测各个集群的运维相关数据的装置(以下简称“数据监测装置”);用于将更新后的各个集群的运维相关数据存储于相应的数据表中的装置(以下简称“数据存储装置”)。
数据监测装置监测各个集群的运维相关数据。
数据存储装置将更新后的各个集群的运维相关数据存储于相应的数据表中。例如,可将更新后的各个集群的运维相关数据存储于到关系型数据库(MySQL)数据表中。
响应于来自客户端的调度请求,数据获取装置101从数据表中读取各个集群的运维相关数据。
继续参照图2进行说明,在步骤S102中,候选确定装置102基于各个集群的运维相关信息,确定可用的一个或多个候选集群。
根据一个实施例,候选确定装置102基于各个集群的运维状态来确定可用的一个或多个候选集群;如果一个集群正在运维,则确定该集群目前处于不可用状态,并将其他不在运维的一个或多个集群作为可用的候选集群。
根据一个实施例,候选确定装置102先确定Coordinator节点的状态是否可用,再确定集群是否可用。具体地,候选确定装置102基于各个集群的运维相关信息,读取其中的Coordinator节点的状态码,如果Coordinator节点状态码为1000则该节点处于active状态,是可用的。如果为其余状态码,则该节点处于不可用状态。接着,对于Coordinator节点可用的各个集群,候选确定装置102根据各个集群的运维状态来确定可用的一个或多个候选集群。
由于无论是Coordinator节点不可用还是集群不可用,都会导致提交的任务无法运行,本实施例先确定Coordinator节点的状态是否可用再确定集群是否可用的方式能够确保为客户端调度确实可用的集群。
接着,集群选择装置103根据各个候选集群的状态相关信息,为该客户端选择合适的集群,从而将选中的集群的标识信息发送至该客户端。
其中,所述状态相关信息包括但不限于以下至少任一项:
1)正在运行的任务数;
2)被阻塞的任务数;
3)正在排队的任务数;
4)工作节点数;
5)消耗的内存;
6)输入的数据量;
7)CPU执行时间。
具体地,集群选择装置103可基于上述状态相关信息中的一项或多项信息来为该客户端选择合适的集群。例如,从多个候选集群中选择运行任务数量最少的集群。
根据一个实施例,集群选择装置103基于各个候选集群当前的状态相关信息,为该客户端选择负载最低的集群。
具体地,可基于多种标准来确定候选集群的负载的高低。例如,候选集群正在运行的任务数或排队数是否超过预定数量,候选集群消耗的内存占比是否超过预定阈值,或者等等。
根据一个实施例,如果一个候选集群的负载情况超过了预定上限,则确定该候选集群的负载情况均超过了预定上限,后续任务将不再调度到该集群中。
例如,如果候选集群的内存消耗达到上限的80%,或者排队的任务数量超过10个,则确定该候选集群的负载情况超过了预定上限。
根据一个实施例,如果当前所有候选集群的负载情况均超过了预定上限,则集群选择装置103随机为该客户端选择一个集群。
根据一个示例,所有集群的资源队列配置信息都保持一致,因此同一个资源组在每个集群都存在着一个相同名称的资源队列。数据获取装置101从数据库中读取到所有可用集群的资源队列的具体数据,包括:
softMemoryLimit:表示资源队列内存的上限,超出这个上限则该组提交的任务需要排队;
hardConcurrencyLimit:表示同时运行的最大任务数,超出这个数量则后提交的任务需要排队;
memoryUsage:表示当前资源队列已经消耗掉的内存;
numRunningQueries:表示当前正在运行的任务数;
numQueuedQueries:表示当前正在排队的任务数。
调度装置基于以上数据对资源队列进行分析,如果一个集群的memoryUsage大于等于softMemoryLimit,即消耗资源达到了资源队列的上限,或者numQueuedQueries大于等于hardConcurrencyLimit,即排队的任务数已经超过了最大并发上限,这两种情况满足任一条,则集群选择装置103确定该资源队列在该集群上处于繁忙状态,后续的任务将不在该集群提交。若所有集群上的该资源队列都处于繁忙状态,则集群选择装置103随机分配一个集群并将相应的集群ID返回给客户端。
下面继续参照图2进行说明,信息接收装置202接收调度装置返回的集群的标识信息。
会话建立装置203基于该集群的标识信息,和相应的集群的服务端建立会话。
具体地,客户端对接收到的集群的标识信息进行识别,与相应的集群的服务端建立会话。如果由于异常或网络等原因未能从调度装置获取集群的标识信息,则在客户端本地随机选择一个集群来建立会话。
根据一个实施例,客户端通过调度装置与相应的集群建立客户端会话之后,如果用户没有退出客户端而是接着提交任务,则客户端将后续任务提交到该集群。
根据一个实施例,所述调度装置包括用于监测各个执行中的任务的持续时间的装置(以下简称“时间监测装置”),和用于如果某任务的执行时间超过预定阈值,则终止该执行该任务的装置(以下简称“任务终止装置”)。
时间监测装置监测各个执行中的任务的持续时间。
如果某任务的执行时间超过预定阈值,则任务终止装置终止该执行该任务。
例如,Presto服务端在执行任务时,设定一个周期为1秒的线程由时间监测装置来监测各个执行中的任务的持续时间,如果某任务的执行时间超过预定阈值,则任务终止装置终止该执行该任务。
根据一个实施例,调度装置为不同的资源队列设置不同的执行时间的阈值,由于每个资源队列的资源和执行大任务的频率各不相同,此方式可提高Presto系统的高可用性。
根据一个实施例,使用K8S技术,将Presto集群布置在K8S上,使得各个集群自动地扩容和缩容。K8S即kubernetes,是为容器服务而生的一个可移植容器的编排管理工具,一套全新的基于容器技术的分布式架构领先方案。
并且,基于K8S可实现对Presto集群中的服务进程的CPU和内存资源、网络等资源进行隔离,进一步实现整个系统的高可用性。
根据本申请实施例的装置,通过调度装置为各个客户端分配合适的集群,客户端每次提交任务时先请求调度装置,调度装置能够对故障集群识别,将任务提交到正常集群中,从而避免因某一集群故障而导致整个Presto服务中断,提升了用户体验,并且实现过程较为容易,无需对集群代码进行深入修改的特点;基于K8S可实现各个集群自动地扩容和缩容,并对Presto集群中的服务进程的CPU和内存资源、网络等资源进行隔离,进一步实现整个系统的高可用性。
本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (14)

1.一种用于执行调度的方法,其中,所述方法包括:
响应于来自客户端的调度请求,获取各个集群的运维相关数据;
基于各个集群的运维相关信息,确定可用的一个或多个候选集群;
根据各个候选集群的状态相关信息,为该客户端选择合适的集群,从而将选中的集群的标识信息发送至该客户端。
2.根据权利要求1所述的方法,其中,所述方法包括:
监测各个集群的运维相关数据;
将更新后的各个集群的运维相关数据存储于相应的数据表中;
其中,所述基于各个集群的运维相关信息,确定可用的一个或多个候选集群包括:
基于该数据表中存储的各个集群的运维相关信息,确定可用的一个或多个候选集群。
3.根据权利要求1或2所述的方法,其中,所述根据各个候选集群的状态相关信息,为该客户端选择合适的集群包括:
基于各个候选集群当前的状态相关信息,为该客户端选择负载最低的集群。
4.根据权利要求1或2所述的方法,其中,所述根据各个候选集群的状态相关信息,为该客户端选择合适的集群包括:
如果当前所有候选集群的负载情况均超过了预定上限,则随机为该客户端选择一个集群。
5.根据权利要求1所述的方法,其中,所述方法包括:
监测各个执行中的任务的持续时间;
如果某任务的执行时间超过预定阈值,则终止该执行该任务。
6.一种在客户端请求调度的方法,其中,所述方法包括:
需要建立会话时,向调度装置发送调度请求;
接收调度装置返回的集群的标识信息;
基于该集群的标识信息,和相应的集群的服务端建立会话。
7.一种用于执行调度的调度装置,其中,所述调度装置包括:
用于响应于来自客户端的调度请求,获取各个集群的运维相关数据的装置;
用于基于各个集群的运维相关信息,确定可用的一个或多个候选集群的装置;
用于根据各个候选集群的状态相关信息,为该客户端选择合适的集群的装置。
8.根据权利要求7所述的调度装置,其中,所述调度装置包括:
用于监测各个集群的运维相关数据的装置;
用于将更新后的各个集群的运维相关数据存储于相应的数据表中的装置;
其中,所述用于基于各个集群的运维相关信息,确定可用的一个或多个候选集群的装置用于:
基于该数据表中存储的各个集群的运维相关信息,确定可用的一个或多个候选集群。
9.根据权利要求7或8所述的调度装置,其中,所述用于根据各个候选集群的状态相关信息,为该客户端选择合适的集群的装置用于:
基于各个候选集群当前的状态相关信息,为该客户端选择负载最低的集群。
10.根据权利要求7或8所述的调度装置,其中,所述用于根据各个候选集群的状态相关信息,为该客户端选择合适的集群的装置用于:
如果当前所有候选集群的负载情况均超过了预定上限,则随机为该客户端选择一个集群。
11.根据权利要求7所述的调度装置,其中,所述调度装置包括:
用于监测各个执行中的任务的持续时间的装置;
用于如果某任务的执行时间超过预定阈值,则终止该执行该任务的装置。
12.一种客户端,其中,所述客户端包括:
用于需要建立会话时,向调度装置发送调度请求的装置;
用于接收调度装置返回的集群的标识信息的装置;
用于基于该集群的标识信息,和相应的集群的服务端建立会话的装置。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一所述的方法;或者,所述处理器执行所述程序时实现如权利要求6所述的方法。
14.一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一所述的方法;或者,该程序被处理器执行时实现如权利要求6所述的方法。
CN202111376067.1A 2021-11-19 2021-11-19 一种用于执行调度的方法和装置 Pending CN114064246A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111376067.1A CN114064246A (zh) 2021-11-19 2021-11-19 一种用于执行调度的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111376067.1A CN114064246A (zh) 2021-11-19 2021-11-19 一种用于执行调度的方法和装置

Publications (1)

Publication Number Publication Date
CN114064246A true CN114064246A (zh) 2022-02-18

Family

ID=80278778

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111376067.1A Pending CN114064246A (zh) 2021-11-19 2021-11-19 一种用于执行调度的方法和装置

Country Status (1)

Country Link
CN (1) CN114064246A (zh)

Similar Documents

Publication Publication Date Title
US10003500B2 (en) Systems and methods for resource sharing between two resource allocation systems
US9558042B2 (en) System and method providing object messages in a compute environment
CN109034396B (zh) 用于处理分布式集群中的深度学习作业的方法和装置
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
CN106557369A (zh) 一种多线程的管理方法及系统
CN102868573B (zh) Web服务负载云测试方法和装置
CN111552556B (zh) 一种gpu集群服务管理系统及方法
JP2008123205A (ja) ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
EP3114589B1 (en) System and method for massively parallel processing database
US9535749B2 (en) Methods for managing work load bursts and devices thereof
CN109710416B (zh) 资源调度方法及装置
CN107168777B (zh) 分布式系统中资源的调度方法以及装置
CN112527489A (zh) 一种任务调度方法、装置、设备及计算机可读存储介质
CN107430526B (zh) 用于调度数据处理的方法和节点
US20170031743A1 (en) Quorum based distributed anomaly detection and repair
CN111552558A (zh) 异构云资源的调度方法及装置
CN110914805A (zh) 用于分层任务调度的计算系统
US10122602B1 (en) Distributed system infrastructure testing
CN113986534A (zh) 任务调度方法、装置、计算机设备和计算机可读存储介质
Kalayci et al. Distributed and Adaptive Execution of Condor DAGMan Workflows.
CN111522630B (zh) 基于批次调度中心的计划任务执行方法以及系统
US20120303720A1 (en) Rapid notification system
CN114064246A (zh) 一种用于执行调度的方法和装置
CN111835809A (zh) 工单消息分配方法、装置、服务器及存储介质
CN112653571B (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