CN113220436A - 一种分布式环境下的通用批量作业执行方法及装置 - Google Patents
一种分布式环境下的通用批量作业执行方法及装置 Download PDFInfo
- Publication number
- CN113220436A CN113220436A CN202110588206.0A CN202110588206A CN113220436A CN 113220436 A CN113220436 A CN 113220436A CN 202110588206 A CN202110588206 A CN 202110588206A CN 113220436 A CN113220436 A CN 113220436A
- Authority
- CN
- China
- Prior art keywords
- scheduling
- batch
- batch job
- scheduler
- list
- 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
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
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
本发明可用于大数据技术领域,本发明提供了一种分布式环境下的通用批量作业执行方法及装置,分布式环境下的通用批量作业执行方法包括:接收调度器所发送的调度参数以及调度请求;根据调度参数生成调度列表;响应于所述调度请求,根据所述调度列表执行通用批量作业。本发明所提供的分布式环境下的通用批量作业执行方法及装置,采用独特的调度器和执行器分离设计,对调度编***心设计,调度器不再充当调度指挥大脑的角色,执行器可在运行时刻自动生成调度任务,能有效降低跑批***设计的复杂性,有效克服现有技术方案的技术缺陷。
Description
技术领域
本发明属于大数据技术领域,特别是涉及分布式***服务调用,具体涉及一种分布式环境下的通用批量作业执行方法及装置。
背景技术
现有技术中,在以数据处理为主的批量运算的应用***中,采用数据库***相关的存储过程及任务调度或第三方调度***来实现,也有专门的ETL软件来实现,其面临的主要的问题是调度的执行器具有专属性,通用性和扩展性不强。如何设计一个简单易用、可应用到大多数批量执行场景的通用框架,对批量运算的应用具有重要意义。具体地,现有跑批运算场景通常有两种技术路线:
(1)以数据库***存储过程和作业调度链组成的跑批***
在数据处理为中心的应用***中,跑批运算通常依赖于数据库***自身的存储过程和JOB调度链来实现。图1描述的是以数据库为中心的跑批运算***,依赖于数据库自身的调度和运算能力。
作业单元:充当执行器的角色,通常使用存储过程来实现。一个存储过程完成某项工作,存储过程接收参数以实现可变运算能力,不同的运算单元由不同的存储过程组完成,每个作业单元都是预先设定的,不能互换执行能力。
JOB链调度:完成对执行单元执行顺序编排、执行控制及执行调度功能。执行单元之间的执行依赖关系由JOB链事先定义,一经定义,在运行阶段即可按照预先设定的逻辑完成调度。
这种技术的主要特点是调度器担当了任务编排能力,执行节点只完成某项独立的功能,调度和执行通过调用内部API实现,二者为紧耦合状态。
(2)以专用调度器和专用执行器组成的跑批***
图2描述的是以调度器为核心的批量运算架构,主体部分由调度器、执行器以及JOB调度流程配置三个部分组成。
调度器:充当整个批量调度的指挥中心,每个作业在那个执行器上执行、什么时间执行、各个作业之间的执行顺序都需要调度器来控制。调度器使用专属的存储空间完成JOB调度流程的配置存储,调度器相当于整个批量任务的大脑控制中心;
JOB调度流程配置:一般采用数据库或文件的方式存储,用来存储预先设计和定义的各个JOB以及JOB之间的调度顺序,为了防止调度作业出现死循环,多个JOB配置要求设计为有向无环图模式;
执行器:每个执行器上预先设定了可以执行的JOB种类,执行器在运行时注册在调度器上,执行器接收调度器的指令完成某个JOB的执行。
这种方案的调度器和执行器采用专用的接口通信,它们之间的接口一般是封闭的。
现有技术的缺点:针对目前主要的两种调度***,上述两种方法的缺点分别分析如下:
(1)以数据库***存储过程和作业调度链组成的跑批***
这种***对数据库本身有较大的依赖性,主要存在的问题是:
调度和执行紧耦合,扩展性差:本方案中没有通用的执行器,而是采用数据库依赖的技术实现各个作业逻辑,调度任务链只能调度和数据库相关的任务,很难扩展到非数据库的领域,如整个跑批任务中有其他一些非数据处理的环节,就需要其他的实现来配合数据库***,扩展性差。
调度逻辑复杂,业务能力的技术转换困难:这种场景只适合简单调度场景,如果调度作业本身的依赖关系复杂,则调度链就需要做大量的编排和设计,调度本身的调整和变更困难。
不适合分布式批量计算场景:由于数据库***是集中式***,核心的运算能力全部集中在数据库服务器上,其运算能力一般只能通过升级服务器配置或优化数据库***来实现,很难通过配置额外的运算主机来完成运算能力的横向扩展,跑批任务很难扩展到多台主机或多台数据库***中。
很难支持异构数据库环境调度:由于数据库***的调度和执行无法分离,对在跑批运算中涉及到多套异构数据库***的环境,这种模式就很难支持统一调度;
批量运算的监控困难:需要为每个批量设计不同的监控存储表格或日志记录,这就加大了批量设计人员的额外工作。
(2)以专用调度器和专用执行器组成的跑批***
相比较基于数据库存储过程和作业调度链的批量运行***,这种专业调度器***在应对分布式批量、支持异构数据库环境等方面具有明显优势,但也存在明显问题,主要包括:
调度器和执行器属于专属状态,开放性差:两者之间不开放,意味着调度器的适应范围有限,两者只能配套使用,而不能灵活实现与第三方调度器或执行器的配合使用;
作业调度设计复杂:由于作业的调度完全由调度器控制,在分布式环境下,设计人员需要考虑不同作业是否必须在同一台机器上运行等场景。设计人员必须人工设计有向无环图的调度逻辑,加大了设计难度;
并行执行控制复杂:调度器只能按照有向无环图的路径执行并行逻辑,而不能控制每条执行路径上的并发度,这就可能造成计算资源无法充分利用的情况,也无法显示动态调整每个路径的并行度。
业务扩展困难:调度器只能执行目前执行器已具备的作业类型,对于业务复杂和相关性较强的业务,则需要业务拆分为已有的作业类型,扩展难度较大,即使留有开发接口,开发难度也较大;
较难实现作业执行的幂等性,任务中断时较难实现断点续跑:由于作业调度计划均由调度器分配,作业计划一般为复杂的树状结构,当作业执行失败时,新的执行无法恢复到当时的主机上运行,断点续跑较难实现。
发明内容
本发明属于大数据技术领域,其所提供的分布式环境下的通用批量作业执行方法及装置,采用独特的调度器和执行器分离设计,对调度编***心设计,调度器不再充当调度指挥大脑的角色,执行器可在运行时刻自动生成调度任务,能有效降低跑批***设计的复杂性,有效克服现有技术方案的技术缺陷。
为解决上述技术问题,本发明提供以下技术方案:
第一方面,本发明提供一种分布式环境下的通用批量作业执行方法,包括:
接收调度器所发送的调度参数以及调度请求;
根据调度参数生成调度列表;
响应于所述调度请求,根据所述调度列表执行通用批量作业。
一实施例中,所述响应于所述调度请求,根据所述调度列表执行通用批量作业包括:
以进程或线程模式执行所述通用批量作业。
一实施例中,所述调度器接口为HTTP REST接口;所述HTTP REST接口采用立返机制。
一实施例中,所述响应于所述调度请求,根据所述调度列表执行通用批量作业还包括:
根据所述调度参数以及SDK生成作业列表;
根据所述作业列表执行所述通用批量作业。
一实施例中,所述的分布式环境下的通用批量作业执行方法还包括:
在所述调度器中注册所述通用批量作业。
第二方面,本发明提供一种分布式环境下的通用批量作业执行装置,包括:
调度请求接收模块,用于接收调度器所发送的调度参数以及调度请求;
调度列表生成模块,用于根据调度参数生成调度列表;
批量作业执行模块,用于响应于所述调度请求,根据所述调度列表执行通用批量作业。
一实施例中,所述批量作业执行模块包括:
批量作业执行第一单元,用于以进程或线程模式执行所述通用批量作业;
所述调度器接口为HTTP REST接口;所述HTTP REST接口采用立返机制。
一实施例中,所述批量作业执行模块还包括:
作业列表生成单元,用于根据所述调度参数以及SDK生成作业列表;
批量作业执行第二单元,用于根据所述作业列表执行所述通用批量作业;
所述的分布式环境下的通用批量作业执行方法还包括:
批量作业注册模块,用于在所述调度器中注册所述通用批量作业。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现分布式环境下的通用批量作业执行方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现分布式环境下的通用批量作业执行方法的步骤。
从上述描述可知,本发明实施例提供的分布式环境下的通用批量作业执行方法及装置,首先接收调度器所发送的调度参数以及调度请求;接着,根据调度参数生成调度列表;最后响应于调度请求,根据调度列表执行通用批量作业。本发明采用独特的调度器和执行器分离方法,对调度编***心设计,调度器不再充当调度指挥大脑的角色,执行器可在运行时刻自动生成调度任务,能有效降低跑批***设计的复杂性,有效克服现有技术方案的缺点,具体包括:
(1)调度器仅通过起、停、查、测四个标准接口完成调度批量步骤的控制,无需下发任务列表;无需承担调度大脑的角色,降低了调度本身设计的复杂性,执行器具有良好的开放性,支持第三方的调度***来完成跑批执行;
(2)执行器通过调度器传输来的关键参数,自动生成调度列表,并提供开放的框架扩展任意数量的任务和作业,每个任务顺序执行,而单个任务内的作业可由实现者控制它的并行度,以控制整个***中的串行和并行逻辑,这样既能通过简单的串行设计来保证业务的顺序逻辑,又能保证关键执行步骤的并行速度充分利用计算资源;
(3)执行器支持以线程或进程模式来启动整个作业,以适应不同的可靠性要求的场景,线程模式适应于调度频繁,任务短暂的场景,而进程模式适用于运行时间长,可靠性要求高的场景;
(4)在分布式环境下,通过协调器来完成多个执行器启停接口的幂等性,以支持执行器在分布式环境下的正确执行,同时支持高可用和负荷分担;
(5)执行器通过专用设计,保证了任务的重新执行、新参数执行、旧参数执行、断点续跑等复杂应用场景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的以数据库为中心的跑批运算***;
图2为现有技术中的以调度器为核心的批量运算架构;
图3为本发明的实施例中分布式环境下的通用批量作业执行方法流程示意图一;
图4为本发明的实施例中分布式环境下的通用批量作业执行***的内部结构图;
图5为本发明的实施例中执行器的内部结构图;
图6为本发明的实施例中分布式环境下的通用批量作业执行方法中步骤300的流程示意图一;
图7为本发明的实施例中分布式环境下的通用批量作业执行方法中步骤300的流程示意图二;
图8为本发明的实施例中分布式环境下的通用批量作业执行方法流程示意图二;
图9为本发明的具体应用实例中分布式环境下的通用批量作业执行方法流程示意图;
图10为本发明实施例中分布式环境下的通用批量作业执行装置的结构示意图一;
图11为本发明实施例中批量作业执行模块30的结构示意图一;
图12为本发明实施例中批量作业执行模块30的结构示意图二;
图13为本发明实施例中分布式环境下的通用批量作业执行装置的结构示意图二;
图14为本发明的实施例中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明的实施例提供一种分布式环境下的通用批量作业执行方法的具体实施方式,参见图3,该方法具体包括如下内容:
步骤100:接收调度器所发送的调度参数以及调度请求。
具体地,由执行器接收调度器所发送的调度参数以及调度请求,参见图4,在本发明具体实施例中,相比较传统的调度批量***而言,调度器、执行器和协调器分离。
步骤200:根据调度参数生成调度列表。
参见图5,本发明实施例中的执行器由调度接口模块、批量任务生成模块以及批量任务工作者模块,具体地,针对每个批量STEP,需要由开发者在开发阶段通过执行器开放的SDK预先实现一个作业列表,这个作业列表的长度在运行阶段可根据调度器传入的参数增删,但是作业列表中包含的任务类型和作业类型是预先由开发者设计的。
一个STEP至少包含一个TASK,各个TASK之间的顺序维持不变,每个TASK由1个或多个JOB组成,框架设计每个TASK为顺序执行,而单个TASK内的JOB设计为并行执行,JOB的并行度可以在运行阶段通过参数指定,也可根据运算主机的资源自动调整,当某个TASK内JOB的并行度被指定为1时,表示该TASK中的JOB按照作业号顺序执行。
步骤300:响应于所述调度请求,根据所述调度列表执行通用批量作业。
在运行时刻,执行器接受调度器的START请求和发来的批量STEP、参数进而形成当前批量的JOB列表实例(参数已经实例化)并存储在协调器中,然后启动一个BatchWorker对完整STEP进行执行,它的执行单位就是一个JOB,每执行完一个JOB,便把它的运行结果和运行状态存放在协调器中。在执行多个JOB时严格按照TASK顺序执行,JOB按照指定并发线程进行并行执行,任一个JOB的失败,BatchWorker会把其记录在协调器中,并把全部已运行JOB停止执行,从而中断整个批量步骤。
BatchWorker支持进程运行模式和线程运行模式,进程模式适用于可靠性要求比较高的场景,线程模式适用于运行灵巧和短任务场景。对每个批量步骤,可在启动时传入超时秒数,当批量在有效时间内未完成时,执行器会杀死当前批次并在协调器中报备为超时批量步骤。
执行器也可接受调度器发来的停止(STOP)请求,以杀死正在执行的批量步骤。
从上述描述可知,本发明实施例提供的分布式环境下的通用批量作业执行方法,首先接收调度器所发送的调度参数以及调度请求;接着,根据调度参数生成调度列表;最后响应于调度请求,根据调度列表执行通用批量作业。本发明采用独特的调度器和执行器分离方法,对调度编***心设计,调度器不再充当调度指挥大脑的角色,执行器可在运行时刻自动生成调度任务,能有效降低跑批***设计的复杂性,有效克服现有技术方案的缺点。
一实施例中,参见图6,步骤300进一步包括:
步骤301:以进程或线程模式执行所述通用批量作业。
具体地,接口调度模块响应调度器的调度请求,传递参数并调起批量任务生成模块BatchInvoker,任务生成模块在协调器上完成全部任务的注册并以进程或线程模式调起批量任务工作者BatchWorker,BatchWorker完成任务及JOB的执行并把执行结果记录在协调器中。
一实施例中,所述调度器接口为HTTP REST接口;所述HTTP REST接口采用立返机制。
通过标准的接口完成对执行器的访问控制,本发明推荐使用HTTP REST接口。该接口为每一种批量设计了通用的启动、停止、查询、测试四种操作接口。所有的操作针对的是批量步骤。
1)启动start:启动当前步骤;
2)停止stop:停止当前步骤;
3)查询query:查询当前步骤的执行状态;
4)测试test:无实际用途,仅用于测试接口的可用性,如检测DB连接状态等。
接口的实现由执行器完成,启动接口可支持到不同参数输入,以保证调起不同的批量步骤以及采用不同的参数。每个接口均采用立即返回机制,以保证调度器的可靠性。
一实施例中,参见图7,步骤300还包括:
步骤30A:根据所述调度参数以及SDK生成作业列表;
步骤30B:根据所述作业列表执行所述通用批量作业。
可以理解的是,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作***等建立应用软件时的开发工具的集合。软件开发工具广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作***等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式***通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。
在步骤30A以及步骤30B中,针对每个批量STEP,需要由开发者在开发阶段通过执行器开放的SDK预先实现一个作业列表,这个作业列表的长度在运行阶段可根据调度器传入的参数增删,但是作业列表中包含的任务类型和作业类型是预先由开发者设计的。
一个STEP至少包含一个TASK,各个TASK之间的顺序维持不变,每个TASK由1个或多个JOB组成,框架设计每个TASK为顺序执行,而单个TASK内的JOB设计为并行执行,JOB的并行度可以在运行阶段通过参数指定,也可根据运算主机的资源自动调整,当某个TASK内JOB的并行度被指定为1时,表示该TASK中的JOB按照作业号顺序执行。这样任何复杂的批量步骤就可以简化为一个JOB列表,而不是使用复杂的有向无环图模式,简化了跑批业务的实现难度,同时也能很好地支持各个运算环节的并行度,以获取更高的运行效率。
一实施例中,参见图8,分布式环境下的通用批量作业执行方法还包括:
步骤400:在所述调度器中注册所述通用批量作业。
具体地,任务生成模块在协调器上完成全部通用批量作业的注册。
为进一步地说明本方案,本发明还提供分布式环境下的通用批量作业执行方法的具体应用实例。
术语介绍:
作业:英文简称为JOB,是在分布式计算、网络和存储环境下,为了实现某项业务能力,计算机***需完成的处理工作,比如在数据库***中执行某些SQL语句;完成某些文件的下载、解析和入库;从两个异构的数据库中完成某些数据的转移,本发明中的作业指的是批量***可以执行的最小单位,作业本身的执行具有原子性,一个作业执行结果要么成功,要么失败。
任务:英文简称为TASK,由多个作业组成,一个任务的所有作业之间可以具有相关性,也可以完全无关。一个任务的执行,就是对其所包含全部作业的执行。
批量:英文简称为BATCH,是完成某项复杂的业务处理而进行的一系列计算机运算工作,批量的特点是通常按照一定的周期完成。比如银行***中需要每日夜间对当日内新开户的客户进行风险等级评估;证券***中需要每日全部客户的持仓份额进行统计以计算客户每日的总资产,这些运算能力都需要以天为周期进行跑批运算。为了简化问题,本发明的批量由多个批量步骤组成,批量步骤之间通过串行顺序执行。
批量步骤(STEP):是组成批量的最小单位,批量步骤之间通过串行执行从而完成整个批量的执行。本发明中一个批量步骤由一个任务或多个任务串行执行而成。
一个批量步骤的执行就是其下全部任务的执行,一个批量步骤下的任务在执行时一般需要有顺序关系,即一个批量步骤的多个任务需要按序执行。
调度器:也称批量调度器或调度服务器,英文简称Dispather,是指为完成批量的执行控制而设立的软硬件***,它通常可以控制执行器来完成某个批量执行的启动、停止、状态查询、测试等工作,在分布式环境中,为了保障调度***的高可用性,调度器可以启动多个。
执行器:也称批量执行器或执行服务器,英文简称Executor,它是用来实现批量执行和状态管理的关键性软硬件***,执行器通常是主要消耗计算资源的实体。在分布式环境中,为了保障批量执行的可靠性和运行效率,执行器通常设置多个,执行器的数量也可以根据批量类型的数量和运行负荷设计,可根据***数据规模动态扩展。本发明描述的执行器由接口模块(Interface)、批量生成器(BatchInvoker)和批量执行器(BatchWorker)三个部分组成。参见图9,本具体应用实例所提供的分布式环境下的通用批量作业执行方法包括以下步骤:
S1:将调度器与执行器进行分离。
协调器充当跑批步骤实例的状态记录器,状态数据由各个执行器共享,任一个JOB的执行状态都会第一时间记录在协调器中,当单个STEP的全部JOB执行完成或执行失败时,协调器会自动记录单个批量步骤的执行状态,多个执行器在启动同一种类型的跑批步骤时,会检查目前是否有相同的STEP运行,对有冲突的STEP,由协调器告知其冲突情况,并通过执行器返回到调度器,进而传达到调度器界面。
调度器可通过虚拟IP或一定调度策略在不同的执行器上实现调度,以支持执行器工作的负荷分担和高可用机制,同样协调器也记录了各个调度器的执行状态和负荷情况,以协调调度任务的执行转移,进而实现在分布式环境的中批量运算的高可用和负荷分担机制。
S2:由执行器单独执行通用批量作业。
具体地,BatchInvoker本身包含一个简单易用的扩展框架库,可以为任意一个跑批步骤定义成如表1的示例的扩展点。
表1
调度器的调度单位是一个批量步骤(STEP),任意多个批量步骤组成整个批量,批量步骤之间顺序执行,由调度器来顺序控制,对执行器是透明的。
针对每个批量STEP,需要由开发者在开发阶段通过执行器开放的SDK预先实现一个作业列表,这个作业列表的长度在运行阶段可根据调度器传入的参数增删,但是作业列表中包含的任务类型和作业类型是预先由开发者设计的。
一个STEP至少包含一个TASK,各个TASK之间的顺序维持不变,每个TASK由1个或多个JOB组成,框架设计每个TASK为顺序执行,而单个TASK内的JOB设计为并行执行,JOB的并行度可以在运行阶段通过参数指定,也可根据运算主机的资源自动调整,当某个TASK内JOB的并行度被指定为1时,表示该TASK中的JOB按照作业号顺序执行。
这样任何复杂的批量步骤就可以简化为一个JOB列表,而不是使用复杂的有向无环图模式,简化了跑批业务的实现难度,同时也能很好地支持各个运算环节的并行度,以获取更高的运行效率。
在运行时刻,执行器接受调度器的START请求和发来的批量STEP、参数进而形成当前批量的JOB列表实例(参数已经实例化)并存储在协调器中,然后启动一个BatchWorker对完整STEP进行执行,它的执行单位就是一个JOB,每执行完一个JOB,便把它的运行结果和运行状态存放在协调器中。在执行多个JOB时严格按照TASK顺序执行,JOB按照指定并发线程进行并行执行,任一个JOB的失败,BatchWorker会把其记录在协调器中,并把全部已运行JOB停止执行,从而中断整个批量步骤。
BatchWorker支持进程运行模式和线程运行模式,进程模式适用于可靠性要求比较高的场景,线程模式适用于运行灵巧和短任务场景。另一方面,对每个批量步骤,可在启动时传入超时秒数,当批量在有效时间内未完成时,执行器会杀死当前批次并在协调器中报备为超时批量步骤。
执行器也可接受调度器发来的停止(STOP)请求,以杀死正在执行的批量步骤。
针对执行器的幂等性和断点续跑机制,执行器的最小执行单位是JOB,每个JOB被设计为执行幂等性,意思是只要参数不发生变化,每个JOB可以执行多次而对跑批运算无影响,所以当发生批次步骤执行失败时,只要在协调器的JOB实例列表中找到最早一个的失败的JOB开始,按照TASK间串行,TASK内JOB并行的方式完成执行,即可有效实现批次的断点续跑。
如果重跑时的跑批参数发生变化,则***会自动舍掉续跑机制,而是重新生成JOB列表,从第1个JOB开始执行,已保证在重跑时业务数据的正确性。
从上述描述可知,本发明实施例提供的分布式环境下的通用批量作业执行方法,首先接收调度器所发送的调度参数以及调度请求;接着,根据调度参数生成调度列表;最后响应于调度请求,根据调度列表执行通用批量作业。具体地,本发明实施例所提供的分布式环境下的通用批量作业执行方法具有以下有益效果:
(1)调度接口的简单和灵活:执行器对外提供Rest接口,供其他调度平台完成跑批调度,调度支持启动、停止、查询等跑批执行能力,同时提供对旧批次的重跑能力,支持强行重跑和断点重跑,支持使用新配置重跑,也支持使用原配置重跑;停止支持超时停止和直接停止,这些都是传统方案很难实现的;
(2)批量***的高可用和负荷分担机制:执行器以Rest服务方式提供调度接口,任何一个调度接口均具有幂等性,所以在部署时,可以采用多台主机完成负荷分担和高可用部署,调度服务器可以指向多台对等的执行器,当任一主机发生故障时可从其他可用主机发起调度,也可以配合使用Nginx/LB等技术完成高可用和负荷分担;
(3)通过简单的并发设计支持跑批运算的高效型:通过设计每个执行步骤中子任务的执行顺序及任务间的依赖关系,支持可并发作业的多线程执行,以最大化利用数据库或大数据平台等计算资源,降低***整体的跑批时间。
(4)强大的运维管理及优化支持能力:通过协调器记录了每个JOB的执行情况,包括执行耗时、执行条数、执行结果等,这样运维人员可很容易地找到跑批节点的瓶颈,对***优化做到有的放矢;
基于同一发明构思,本申请实施例还提供了一种分布式环境下的通用批量作业执行装置,可以用于实现上述实施例所描述的方法,如下面的实施例。由于分布式环境下的通用批量作业执行装置解决问题的原理与分布式环境下的通用批量作业执行方法相似,因此分布式环境下的通用批量作业执行装置的实施可以参见分布式环境下的通用批量作业执行方法实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的***较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本发明的实施例提供一种能够实现分布式环境下的通用批量作业执行方法的分布式环境下的通用批量作业执行装置的具体实施方式,参见图10,分布式环境下的通用批量作业执行装置具体包括如下内容:
调度请求接收模块10,用于接收调度器所发送的调度参数以及调度请求;
调度列表生成模块20,用于根据调度参数生成调度列表;
批量作业执行模块30,用于响应于所述调度请求,根据所述调度列表执行通用批量作业。
一实施例中,参见图11,所述批量作业执行模块30包括:
批量作业执行第一单元301,用于以进程或线程模式执行所述通用批量作业;
所述调度器接口为HTTP REST接口;所述HTTP REST接口采用立返机制。
一实施例中,参见图12,所述批量作业执行模块30还包括:
作业列表生成单元30A,用于根据所述调度参数以及SDK生成作业列表;
批量作业执行第二单元30B,用于根据所述作业列表执行所述通用批量作业;
一实施例中,参见图13,所述的分布式环境下的通用批量作业执行方法还包括:
批量作业注册模块40,用于在所述调度器中注册所述通用批量作业。
从上述描述可知,本发明实施例提供的分布式环境下的通用批量作业执行装置,首先接收调度器所发送的调度参数以及调度请求;接着,根据调度参数生成调度列表;最后响应于调度请求,根据调度列表执行通用批量作业。本发明采用独特的调度器和执行器分离方法,对调度编***心设计,调度器不再充当调度指挥大脑的角色,执行器可在运行时刻自动生成调度任务,能有效降低跑批***设计的复杂性,有效克服现有技术方案的缺点。
下面参考图14,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
如图14所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有***600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述基于数据机房场景下的人员距离确定方法的步骤,该步骤包括:
步骤100:接收待升级应用的原生负载均衡模型以及目标镜像版本;
步骤200:确定所述原生负载均衡模型所对应的pod列表;
步骤300:根据所述pod列表修改pod文件中的镜像文件为目标镜像版本。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上该仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种分布式环境下的通用批量作业执行方法,其特征在于,包括:
接收调度器所发送的调度参数以及调度请求;
根据调度参数生成调度列表;
响应于所述调度请求,根据所述调度列表执行通用批量作业。
2.根据权利要求1所述的分布式环境下的通用批量作业执行方法,其特征在于,所述响应于所述调度请求,根据所述调度列表执行通用批量作业包括:
以进程或线程模式执行所述通用批量作业。
3.根据权利要求1所述的分布式环境下的通用批量作业执行方法,其特征在于,所述调度器接口为HTTP REST接口;所述HTTP REST接口采用立返机制。
4.根据权利要求1所述的分布式环境下的通用批量作业执行方法,其特征在于,所述响应于所述调度请求,根据所述调度列表执行通用批量作业还包括:
根据所述调度参数以及SDK生成作业列表;
根据所述作业列表执行所述通用批量作业。
5.根据权利要求1所述的分布式环境下的通用批量作业执行方法,其特征在于,还包括:
在所述调度器中注册所述通用批量作业。
6.一种分布式环境下的通用批量作业执行装置,其特征在于,包括:
调度请求接收模块,用于接收调度器所发送的调度参数以及调度请求;
调度列表生成模块,用于根据调度参数生成调度列表;
批量作业执行模块,用于响应于所述调度请求,根据所述调度列表执行通用批量作业。
7.根据权利要求6所述的分布式环境下的通用批量作业执行装置,其特征在于,所述批量作业执行模块包括:
批量作业执行第一单元,用于以进程或线程模式执行所述通用批量作业;
所述调度器接口为HTTP REST接口;所述HTTP REST接口采用立返机制。
8.根据权利要求7所述的分布式环境下的通用批量作业执行装置,其特征在于,所述批量作业执行模块还包括:
作业列表生成单元,用于根据所述调度参数以及SDK生成作业列表;
批量作业执行第二单元,用于根据所述作业列表执行所述通用批量作业;
所述的分布式环境下的通用批量作业执行方法还包括:
批量作业注册模块,用于在所述调度器中注册所述通用批量作业。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至5任一项所述分布式环境下的通用批量作业执行方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5任一项所述分布式环境下的通用批量作业执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110588206.0A CN113220436A (zh) | 2021-05-28 | 2021-05-28 | 一种分布式环境下的通用批量作业执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110588206.0A CN113220436A (zh) | 2021-05-28 | 2021-05-28 | 一种分布式环境下的通用批量作业执行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113220436A true CN113220436A (zh) | 2021-08-06 |
Family
ID=77099603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110588206.0A Pending CN113220436A (zh) | 2021-05-28 | 2021-05-28 | 一种分布式环境下的通用批量作业执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220436A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661978A (zh) * | 2023-08-01 | 2023-08-29 | 浙江云融创新科技有限公司 | 一种分布式的流程处理方法、装置及分布式业务流程引擎 |
-
2021
- 2021-05-28 CN CN202110588206.0A patent/CN113220436A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661978A (zh) * | 2023-08-01 | 2023-08-29 | 浙江云融创新科技有限公司 | 一种分布式的流程处理方法、装置及分布式业务流程引擎 |
CN116661978B (zh) * | 2023-08-01 | 2023-10-31 | 浙江云融创新科技有限公司 | 一种分布式的流程处理方法、装置及分布式业务流程引擎 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
US7779298B2 (en) | Distributed job manager recovery | |
CN108429787B (zh) | 容器部署方法及装置、计算机存储介质、终端 | |
CN112579267A (zh) | 一种去中心化大数据作业流调度方法及装置 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及*** | |
CN111949454A (zh) | 一种基于微服务组件的数据库***及相关方法 | |
US7249140B1 (en) | Restartable scalable database system updates with user defined rules | |
CN114416849A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113220436A (zh) | 一种分布式环境下的通用批量作业执行方法及装置 | |
US10534640B2 (en) | System and method for providing a native job control language execution engine in a rehosting platform | |
Bausch et al. | Bioopera: Cluster-aware computing | |
US11106395B2 (en) | Application execution apparatus and application execution method | |
Yu et al. | Testing tasks management in testing cloud environment | |
US20200356885A1 (en) | Service management in a dbms | |
Cai et al. | Deployment and verification of machine learning tool-chain based on kubernetes distributed clusters: This paper is submitted for possible publication in the special issue on high performance distributed computing | |
CN112199184A (zh) | 一种跨语言任务调度方法、装置、设备及可读存储介质 | |
Bodner | Elastic Query Processing on Function as a Service Platforms. | |
Ferikoglou | Resource aware GPU scheduling in Kubernetes infrastructure | |
Zhang et al. | Cost-efficient and latency-aware workflow scheduling policy for container-based systems | |
Saxena et al. | Paradigm shift from monolithic to microservices | |
CN112711448A (zh) | 一种基于Agent技术的并行构件组装及性能优化方法 | |
CN113485894A (zh) | 一种数据采集方法、装置、设备及可读存储介质 | |
CN112581080A (zh) | 一种轻量级的分布式工作流引擎构建*** | |
Chen et al. | Fangorn: adaptive execution framework for heterogeneous workloads on shared clusters | |
Jeon et al. | Pigout: Making multiple hadoop clusters work together |
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 |