CN115048204A - 一种作业调度方法、作业调度系统及存储介质 - Google Patents

一种作业调度方法、作业调度系统及存储介质 Download PDF

Info

Publication number
CN115048204A
CN115048204A CN202210746576.7A CN202210746576A CN115048204A CN 115048204 A CN115048204 A CN 115048204A CN 202210746576 A CN202210746576 A CN 202210746576A CN 115048204 A CN115048204 A CN 115048204A
Authority
CN
China
Prior art keywords
job
execution
time
resource
priority
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
CN202210746576.7A
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202210746576.7A priority Critical patent/CN115048204A/zh
Publication of CN115048204A publication Critical patent/CN115048204A/zh
Priority to PCT/CN2022/121343 priority patent/WO2024000859A1/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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供一种作业调度方法、作业调度系统及存储介质,其中,方法包括:在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息;在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息;其中,历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子;基于配置信息、可执行时间、作业资源空闲因子和实际执行时长,确定作业j的响应比;按照作业j的响应比,向大数据计算平台的资源管理器发送作业j的资源申请。

Description

一种作业调度方法、作业调度系统及存储介质
技术领域
本申请实施例涉及金融科技(Fintech)的数据处理技术领域,涉及但不限于一种作业调度方法、作业调度系统及存储介质。
背景技术
随着计算机计算的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。金融科技领域下,随着银行金融体系的不断丰富和完善,以及金融系统中的数据量急速增长,金融系统通常使用Hadoop(分布式计算平台)进行数据处理,Hadoop平台中的核心组件YARN(Yet Another Resource Negotiator,另一种资源协调者),是一种新的资源管理器。这里,YARN是一个通用资源管理系统,为Hadoop计算任务提供统一的资源管理和调度。
相关技术中,针对批处理作业调度方法是,作业调度系统基于每个作业在执行前的等待时长,以及在上一周期N内的平均执行时长,得到每个作业的响应比;然后,从批处理作业中选出响应比最高的作业进行调度,即将响应比最高的作业的资源请求提交至大数据计算平台Hadoop,以使大数据计算平台根据存储的数据和资源请求为响应比最高的作业分配资源,进而使该作业调度执行。然而,在作业历史执行过程中,由于YARN实际资源分配问题,得到的平均执行时长不准确,进而导致计算的响应比不准确的问题。
发明内容
本申请实施例提供一种作业调度方法、作业调度系统及存储介质,以解决相关技术中由于YARN实际资源分配问题,得到的平均执行时长不准确,进而导致计算的响应比不准确的问题。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种作业调度方法,包括:
在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得所述作业实例列表中的作业j的可执行时间和配置信息;
在基于所述配置信息,确定所述作业j满足调度条件的情况下,获得所述作业j在上一调度周期N内的历史执行记录信息;其中,所述历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;
基于所述计划申请资源数和所述实际使用资源数,确定所述作业j在所述上一调度周期N内的作业资源空闲因子;
基于所述配置信息、所述可执行时间、所述作业资源空闲因子和所述实际执行时长,确定所述作业j的响应比;
按照所述作业j的响应比,向大数据计算平台的资源管理器发送所述作业j的资源申请。
本申请实施例提供一种作业调度装置,包括:
获得模块,用于在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得所述作业实例列表中的作业j的可执行时间和配置信息;
所述获得模块,还用于在基于所述配置信息,确定所述作业j满足调度条件的情况下,获得所述作业j在上一调度周期N内的历史执行记录信息;其中,所述历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;
确定模块,用于基于所述计划申请资源数和所述实际使用资源数,确定所述作业j在所述上一调度周期N内的作业资源空闲因子;
所述确定模块,还用于基于所述配置信息、所述可执行时间、所述作业资源空闲因子和所述实际执行时长,确定所述作业j的响应比;
发送模块,用于按照所述作业j的响应比,向大数据计算平台的资源管理器发送所述作业j的资源申请。
本申请实施例提供一种作业调度系统,包括:
存储器,用于存储可执行指令;
处理器,用于执行存储器中存储的可执行指令时,实现上述的方法。
本申请实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。
本申请实施例具有以下有益效果:
本申请实施例通过引入作业资源空闲因子,解决了相关技术中因资源空闲问题导致的计算出的响应比不准确,进而导致作业调度顺序出现差错的问题;这里,作业调度系统计算不同资源状态下的作业资源空闲因子,并基于不同资源状态下作业的执行时长和对应的作业资源空闲因子,计算出作业相对于处于资源充足状态下的执行时长,如此,提高了作业的平均执行时长的准确性,从而提高了作业在当前时刻的响应比的准确性,使得作业调度系统更合理的调度作业的执行;同时,降低了作业处于不同资源状态时作业响应值的偏差率,优化了作业的调度顺序。
附图说明
图1A是相关技术中提供的在资源紧张时刻作业K的执行时间线的意图;
图1B是相关技术中提供的在资源充足时刻作业K的执行时间线的意图;
图2A是相关技术中提供的在资源紧张时刻作业K的执行情况的示意图;
图2B是相关技术中提供的在资源充足时刻作业K的执行情况的示意图;
图3是本申请实施例提供的终端的一个可选的架构示意图;
图4是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图5是本申请实施例提供的多个作业的执行顺序的示意图;
图6是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图7是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图8是本申请实施例提供的根据重要程度和紧急程度,对作业进行划分的四种情况的示意图;
图9是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图10是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图11是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图12是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图13是本申请实施例提供的作业调度方法的一个可选的流程示意图;
图14是本申请实施例提供的作业调度方法的一个可选的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
为了更好地理解本申请实施例中提供的作业调度方法,首先对相关技术中的作业调度方法进行说明:
作业调度系统作为基于工作流的批处理作业调度器,负责按依赖和预定的调度策略来调度大数据作业。作业调度系统提交计算作业到大数据计算平台HADOOP,大数据计算平台则根据存储的数据和调度系统提交的计算逻辑计算出对应的数据。
相关技术中,批处理作业调度方法使用的是最高响应比优先算法(HighestResponse_ratio Next,HRN),HRN调度算法考虑每个作业的等待时间长短和在上一周期N内的平均执行时长,得到每个作业的响应比,从所有作业中选出响应比最高的作业投入执行。
这里,计算响应比R可通过如下(公式1)得到,
Figure BDA0003717075780000031
其中,T为上一周期N内的平均执行时长,W为作业在后备状态队列中的等待时长。当作业调度系统要进行作业调度时,系统计算每个作业的响应比,将对应的响应比R最大的作业投入执行。这样,即使是长作业,随着它等待时长的增加,W/T也就随着增加,也就有机会获得优先调度执行。
然而,上一周期N内的平均执行时长T指的是针对hive on spark作业的预估执行时间,采用上述(公式1)的计算方式,存在因YARN实际资源分配问题造成的偏差较大;也就是说,在相同的作业相同的数据量,不同的YARN资源充足和不充足的情况下的平均执行时长存在较大差距。因平均执行时长T的不准确,造成了最高响应比优先算法投递不能如预期效果,即实际为短作业被预估为长作业,相同的等待时长W下,最高响应比相比其他作业可能被错误的计算成更低的值,导致晚于其他作业的投递。
示例性的,创建批处理作业的作业标识为ads_rpt.blc_scale_trade_1d,将该作业简称为作业K,且该作业K的作业类型为hive on spark类型,作业的资源需求为需申请40个执行进程(executors)。作业调度系统需要在同日的05:20(资源紧张时刻)与21:28(资源充足时刻)分别提交作业K,并通过spark监控(User Interface,UI)界面分析作业K的执行耗时情况,参照图1A、图1B、图2A和图2B所示,图1A示出的是在资源紧张时刻作业K的执行时间线的示意图,图1B示出的是在资源充足时刻作业K的执行时间线的示意图,图2A示出的是在资源紧张时刻作业K的执行情况的示意图,图2B示出的是在资源充足时刻作业K的执行情况的示意图。
参见图1A和图2A,当作业调度系统中的作业K在5:20跑批时,由于YARN集资源紧张,在作业K(job0)启动之前,只有驱动模块(driver)启动;在job0执行过程中陆续只有9个executor启动,由于作业K的资源需求为40个executor,故剩下的executor在05:45之后才陆续添加进来,且作业K在资源紧张时刻的执行时长为16分钟(minutes,min)。需要说明的是,由于spark任务的特性,只要申请到资源,集群就会根据已有的资源进行作业跑批,而不是等待所有资源申请到才开始跑批。
参见图1B和图2B,当作业调度系统中的作业K在21:28跑批时,由于YARN集资源充足(或空闲),在job0启动之前,job0执行所需要的40个executor均已启动,且作业K在资源充足时刻的执行时长为6.6min。明显,YARN集资源充足的情况下,job0的执行时长大幅缩短。
这里,作业K在资源紧张时刻的实际使用资源是9个executor,实际执行时长为16min=960s,等待时长W假设为300s,通过上述(公式1),计算出作业K在资源紧张时刻的响应比Ru为1.3125。作业K在资源充足时刻的实际使用资源是40个executor,实际执行时长为6.6min=396s,等待时长W假设也为300s,通过上述(公式1),计算作业K在资源充足时刻的响应比Re为1.7576;进一步地,确定作业K在资源紧张与资源充足时刻的响应比的偏差率RD为:
Figure BDA0003717075780000041
由上述可知,在同样的作业同样的数据量(计算量),不同的资源分配条件下,作业K的执行时长存在较大差距,从而导致得到的作业K的平均执行时长不准确,进而导致得到的作业K的响应比R值不准确,最终导致与其他作业竞争性降低的问题。
下面说明本申请实施例提供的作业调度系统的示例性应用,本申请实施例提供的作业调度系统可以实施为笔记本电脑,平板电脑,台式计算机,智能机器人等任意具有屏幕显示功能的终端,也可以实施为服务器。下面,将说明作业调度系统实施为终端时的示例性应用。
参见图3,图3是本申请实施例提供的终端100的结构示意图,图3所示的终端100包括:至少一个处理器110、至少一个网络接口120、用户接口130和存储器150。终端100中的各个组件通过总线系统140耦合在一起。可理解,总线系统140用于实现这些组件之间的连接通信。总线系统140除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统140。
处理器110可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口130包括使得能够呈现媒体内容的一个或多个输出装置131,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口130还包括一个或多个输入装置132,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器150可以是可移除的,不可移除的或其组合。示例性地硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器150可选地包括在物理位置上远离处理器110的一个或多个存储设备。存储器150包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory,ROM),易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。本申请实施例描述的存储器150旨在包括任意适合类型的存储器。在一些实施例中,存储器150能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统151,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块152,用于经由一个或多个(有线或无线)网络接口120到达其他计算设备,示例性地网络接口120包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(Universal Serial Bus,USB)等;
输入处理模块153,用于对一个或多个来自一个或多个输入装置132之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图3示出了存储在存储器150中的一种作业调度装置154,该作业调度装置154可以是终端100中的作业调度装置,其可以是程序和插件等形式的软件,包括以下软件模块:获得模块1541、确定模块1542、发送模块1543和处理模块1544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的作业调度方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,PLD)、复杂可编程逻辑器件(Complex ProgrammableLogic Device,CPLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他电子元件。
下面将结合本申请实施例提供的终端100的示例性应用和实施,说明本申请实施例提供的作业调度方法。参见图4,图4是本申请实施例提供的作业调度方法的一个可选的流程示意图,将结合图4示出的步骤进行说明,
步骤201、在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息。
本申请实施例中,预设周期频率是预先设置的固定的周期频率,示例性的,预设周期频率可以为5秒(second,s)。
本申请实施例中,可执行时间可以理解为作业当前可执行的起始时间。
本申请实施例中,作业可以理解为对数据执行的操作,作业j为作业实例列表中的至少一个。作业包括短作业和长作业,短作业可以理解为执行时间短的作业,长作业可以理解为执行时间长的作业。
本申请实施例中,作业实例可以理解为每个调度周期内执行的作业;示例性的,若按每天执行一次为调度周期的作业,则每天执行的作业即为该作业的实例。作业实例列表可以理解为多个作业组成的列表。
本申请实施例中,作业的配置信息包括但不限于作业标识、作业描述、作业类型、作业的依赖作业、调度周期内的起始时间、超时起始时间、资源需求量、预估执行时长、作业固定优先级和可重试次数。
在一种可实现的大数据离线计算场景中,参照图5所示,作业调度系统中存在一个大的离线计算作业M,大作业M可以分成H、A、B和C四个小作业,作业A和作业B的执行依赖作业H的执行结果,作业A和作业B之间没有依赖关系,作业C的执行依赖作业A和作业B的执行结果,作业H、A、B和C之间的执行过程是一个有向无环图(Directed Acylic Graph,DAG)。这里,表1中示例性的展示了不同类别的作业的配置信息。
Figure BDA0003717075780000061
表1
步骤202、在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息。
其中,历史执行记录信息包括实际执行时长、计划申请资源数和实际使用资源数,当然,历史执行记录信息还可以包括作业执行日期、作业名称、实际重试次数和作业执行时的资源情况。
本申请实施例中,计划申请资源数是从作业的配置信息中确定的需要申请的资源数,实际使用资源数是作业在实际的执行过程中,分配给作业A的实际资源数。
需要说明的是,作业在实际执行过程中的实际使用的资源数E_Used,与实际执行时长T的关系为:
Figure BDA0003717075780000062
在一种可实现的场景中,以作业A和作业B为例,参照图5和表1所示,假设调度周期N为5天,且当前日期为20220506,作业A和作业B每天执行一次,故作业A和作业B在上一调度周期N(20220501-20220505)的历史执行记录信息如表2所示,
Figure BDA0003717075780000071
表2
本申请实施例中,调度周期N为预先设置的时长;示例性的,N可以以周为单位设置的时长,N还可以以月为单位设置的时长,当然,N还可以为其他时长,对此,本申请不做具体限制。作业的执行过程可以理解为作业在预先设置的时长内,以固定时间间隔按同样的顺序重复执行的过程。
本申请实施例中,实际执行时长可以理解为作业j在上一调度周期N中第n次执行时的执行时长,其中,n为大于或等于1,且小于或等于N的整数,N为一个调度周期内的总天数,N为正整数。
在一些实施例中,作业j的配置信息包括作业j的作业类型、作业j的依赖作业和作业j的调度周期内的起始时间,针对步骤202中的基于配置信息,确定作业j满足调度条件的过程可以通过如下方式实现:作业类型为预设作业类型,作业j的依赖作业已执行完成,以及作业j的可执行时间达到调度周期内的起始时间。
本申请实施例中,作业类型包括但不限于Spark ON Hive类型和Java类型。这里,Spark ON Hive可以理解为数据存储在hive中,用户处理和分析数据使用的HQL,但用户提交执行时,底层会经过HIVE的解析优化编译,最后以spark作业的形式运行。需要说明的是,由于Java的特性,只有申请到所有资源,集群才会根据已有的资源进行作业跑批。
本申请实施例中,预设作业类型可以为Spark ON Hive类型。
本申请实施例中,作业j的依赖作业已执行成功可以理解完作业j的上游作业已执行完成。
本申请实施例中,作业j的可执行时间达到调度周期内的起始时间,可理解为作业j的可执行时间在调度周期内的起始时间之后。示例性的,若设置的作业j的调度周期内的起始时间为每天凌晨05:00:00,作业j当前可执行时间为05:30:05,作业j当前可执行时间在作业j的调度周期内的起始时间之后,故作业j的可执行时间达到调度周期内的起始时间。
需要说明的是,上述Spark是专为大规模数据处理而设计的快速通用的计算引擎,Spark使用了内存运算技术,能在数据尚未写入硬盘时在内存分析运算。
上述HIVE是基于Hadoop的一个数据仓库工具,用于数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制,HIVE数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。
上述HIVE SQL可以将SQL语句转变成MapReduce任务来执行,通过自身的SQL去查询分析存储在Hadoop分布式文件系统中的数据。Hive中通过类似SQL语句实现快速MapReduce统计,使不熟悉MapReduce的用户很方便的利用SQL语言查询、汇总、分析数据。
在一些可实现场景中,若作业j的依赖作业已执行完成,且作业j的可执行时间达到调度周期内的起始时间,但作业j的作业类型不为预设作业类型,作业调度系统可按照相关技术中的作业调度方法计算作业j的响应比R。
步骤203、基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子。
本申请实施例中,作业资源空闲因子是通过作业j预计申请的计划申请资源数和实际使用资源数确定的。
步骤204、基于配置信息、可执行时间、作业资源空闲因子和实际执行时长,确定作业j的响应比。
步骤205、按照作业j的响应比,向大数据计算平台的资源管理器发送作业j的资源申请。
本申请实施例中,大数据计算平台可以是HADOOP,资源管理器可以是Yarn。在Yarn中,资源分配单元是执行进程(Executor),Executor是Spark程序中的一个Java虚拟机(Java Virtual Machine,JVM)进程,负责执行Spark作业的具体任务(task);spark任务通过设置单个Executor使用的中央处理器(central processing unit,cpu)核数以及内存乘以Executor的个数来设置需要整个spark作业需要申请的资源。
这里,资源包括但不限于操作系统的内存(memory,mem)、CPU、输入/输出(Input/Output,IO)传输速度、磁盘和网络带宽。
本申请实施例中,首先,在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息;接着在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息,如实际执行时长、计划申请资源数和实际使用资源数;然后,基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子;进一步地,基于配置信息、可执行时间、作业资源空闲因子Z和实际执行时长T,确定作业j的响应比;最后,在存在满足条件的多个作业j的情况下,按照响应比的大小确定作业的优先级,并向大数据计算平台的资源管理器优先发送优先级高的作业的资源申请。
本申请实施例提供一种作业调度方法,通过在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息;在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息;其中,历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子;基于配置信息、可执行时间、作业资源空闲因子和实际执行时长,确定作业j的响应比;按照作业j的响应比,向大数据计算平台的资源管理器发送作业j的资源申请。如此,通过引入作业资源空闲因子,解决了相关技术中因资源空闲问题导致的计算出的响应比不准确,进而导致作业调度顺序出现差错的问题;这里,作业调度系统计算不同资源状态下的作业资源空闲因子,并基于不同资源状态下作业的执行时长和对应的作业资源空闲因子,计算出作业相对于处于资源充足状态下的执行时长,如此,提高了作业的平均执行时长的准确性,从而提高了作业在当前时刻的响应比的准确性,使得作业调度系统更合理的调度作业的执行;同时,降低了作业处于不同资源状态时作业响应值的偏差率,优化了作业的调度顺序。
参见图6,图6是本申请实施例提供的作业调度方法的一个可选的流程示意图,将结合图5示出的步骤进行说明,
步骤301、在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息。
步骤302、在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息。
其中,历史执行记录信息包括实际执行时长、计划申请资源数和实际使用资源数。
步骤303、基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子。
在一些实施例中,针对步骤303基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子的过程结合图7作进一步说明,
步骤401、针对作业j在上一调度周期N内的第n次执行过程,计算作业j的计划申请资源数与实际使用资源数的第一和值。
步骤402、计算实际使用资源数与第一预设数值的第一乘积。
本申请实施例中,第一预设数值可以为2。
步骤403、计算第一和值和第一乘积的比值,得到作业j在第n次的作业资源空闲因子,直至得到作业j在上一调度周期N内的N个作业资源空闲因子。
本申请实施例中,作业调度系统获得作业j在上一个调度周期N的历史执行记录信息后,针对作业j在上一调度周期N内的第n次执行过程,计算作业j的计划申请资源数E_Needn与实际使用资源数E_Usedn的第一和值;然后,计算实际使用资源数E_Usedn与第一预设数值的第一乘积;进一步地,将第一和值和第一乘积的比值,作为作业j在第n次的作业资源空闲因子Zn;最后,针对作业j在上一调度周期N内的N次执行过程,得到作业j在上一个调度周期N内的N个作业资源空闲因子Zn。
本申请实施例中,计算作业j在第n次的作业资源空闲因子Zn可以通过如下(公式2)得到,
Figure BDA0003717075780000091
其中,Zn为作业j一个调度周期N内第n次的作业资源空闲因子;E_Needn为作业j在一个调度周期N内的第n次执行前计划申请资源数;E_Usedn为作业j在一个调度周期N内的第n次实际执行过程中分配到的实际使用资源数;这里,计划申请资源数和实际使用资源数均可以从第n次的历史执行记录信息中得到。
在一种可实现的场景中,以作业A和作业B为例,参照表1和表2,作业A计划申请资源数为40个executor,作业A在一个调度周期N内实际使用资源数分别为40个executor、33个executor、4个executor、10个executor、6个executor;作业B计划申请资源数为4个executor,作业B在一个调度周期N内实际使用资源数均为4个executor。作业调度系统采用上述(公式2),计算作业A在一个调度周期N内的N个作业资源空闲因子ZAn,结果如表3所示,其中,表3中包括作业执行日期、作业名称、作业A的计划申请资源数、作业A的实际使用资源数。作业调度系统采用上述(公式2),计算作业B在一个调度周期N内的N个作业资源空闲因子ZBn,结果如表4所示,其中,表4中包括作业执行日期、作业名称、作业B的计划申请资源数、作业B的实际使用资源数。
作业执行日期 作业名称 计划申请资源数 实际使用资源数 作业资源空闲因子
20220501 作业A 40 executor 40 executor 1
20220502 作业A 40 executor 33 executor 1.1061
20220503 作业A 40 executor 4 executor 5.5
20220504 作业A 40 executor 10 executor 2.5
20220505 作业A 40 executor 6 executor 3.8333
表3
作业执行日期 作业名称 计划申请资源数 实际使用资源数 作业资源空闲因子
20220501 作业B 4 executor 4 executor 1
20220502 作业B 4 executor 4 executor 1
20220503 作业B 4 executor 4 executor 1
20220504 作业B 4 executor 4 executor 1
20220505 作业B 4 executor 4 executor 1
表4
步骤304、获得作业j的依赖作业的执行完成时间,作业j在本次执行过程中执行失败次数,以及为作业实例列表中的作业设置的最大固定优先级。
本申请实施例中,最大固定优先级是根据作业的业务重要性和产出时点划分的最高的等级,即作业固定优先级可设置的最大值;示例性的,最大固定优先级Lmax可以为10,作业可设置的固定优先级可以为1-10之间的正整数;需要说明的是,作业固定优先级越大,优先级越高,也就是说,在至少两个相同条件下的作业,优先级高的作业优先调度。
本申请实施例中,执行失败次数为作业j在每一实际执行过程中执行失败的次数,执行失败次数又称实际重试次数,作业在本次执行过程中执行失败次数又称为作业在本次执行过程中的实际重试次数。
在一种可实现的应用场景中,参照图8所示,根据作业的业务重要性(重要程度)和产出时点(紧急程度)对作业进行划分,其中,横轴从左向右表示作业的紧急程度逐渐增加,纵轴从下向上表示作业的重要程度逐渐增加;如此,可以将作业划分为按照重要并紧急、不重要紧急、重要不紧急和不重要不紧急等四种情况。对于重要并紧急的作业,作业的作业固定优先级值越高,对于不重要不紧急的作业,作业的作业固定优先级值越低。
步骤305、基于可执行时间和依赖作业的执行完成时间,确定作业j在后备状态队列中的等待时长。
本申请实施例中,在作业j的依赖作业执行完成后,作业调度系统获取依赖作业的执行完成时间,并以预设周期频率对作业实例列表进行轮询遍历,确定作业j本应该发起调度的初步起始时间;其中,初步起始时间为作业j的依赖作业的执行完成时间以预设周期频率进行变化后得到的时间。进一步地,作业调度系统计算作业j的可执行时间减去作业j的初步起始时间,得到作业j在后备状态队列中的等待时长W。
在一种可实现的场景中,参照表1所示,以作业A、作业B和作业H为例,假设当前日期为20220506,当前时间为凌晨05:30:05;因作业A和作业B依赖于作业H的执行结果,且依赖作业H在05:10:00执行完成,作业A和作业B的可执行时间均为05:30:05,分别达到调度周期内的起始时间05:00:00;另外作业A和作业B的作业类型均为预设作业类型Spark ONHive,故作业A和作业B均满足调度条件。需要说明的是,由于依赖作业H在05:10:00执行完成,且预设周期频率为5s,故作业A与作业B本应该在05:10:05发起调度;但由于YARN资源不足,作业A与作业B发起执行失败,直至在05:30:05才执行成功。此时,作业A与作业B的等待时长均为:W=Date(05:30:05)-Date(05:10:05)=1200s,作业A在05:10:05至05:30:05期间的执行失败次数为1,作业B在05:10:05至05:30:05期间的执行失败次数为2;需要说明的是,作业在05:10:05至05:30:05期间的执行失败次数又称为作业在05:10:05至05:30:05期间的实际重试次数。
步骤306、基于可执行时间、超时起始时间、等待时长、可重试次数、执行失败次数和最大固定优先级,确定作业j的作业动态优先级。
本申请实施例中,作业动态优先级是由作业在历史实际执行过程中的执行失败次数,以及当前执行过程中可执行时间与超时起始时间的时间差共同决定的;这里,可执行时间与超时起始时间的时间差越大,作业动态优先级越高,执行失败次数越多,作业动态优先级越低。
本申请实施例中,配置信息还可以包括:作业j的作业固定优先级、超时起始时间和可重试次数。可重试次数为作业在实际执行过程中,允许执行失败的次数。
本申请实施例中,作业调度系统基于作业j的可执行时间、超时起始时间、等待时长、可重试次数、执行失败次数和最大固定优先级,确定作业j的作业动态优先级。
在一些实施例中,针对步骤306基于可执行时间、超时起始时间、等待时长、可重试次数、执行失败次数和最大固定优先级,确定作业j的作业动态优先级的过程结合图9作进一步说明,
步骤501、计算可执行时间减去超时起始时间的差值,得到作业j的超时时长。
本申请实施例中,作业j的配置信息包括超时起始时间,超时时长CT等于作业j的可执行时间减去超时起始时间的差值。
在一种可实现的场景中,参照表1所示,以作业A、作业B和作业H为例,假设当前日期为20220506,当前时间为凌晨05:30:05;作业A和作业B的超时起始时间均设置为每天凌晨05:20:00,故作业A的超时时长CT为Date(05:30:05)-Date(05:20:00)=605秒,作业B的超时时长CT为Date(05:30:05)-Date(05:20:00)=605秒。
步骤502、计算等待时长和超时时长的第二和值。
步骤503、计算第二和值与等待时长的第一比值。
步骤504、计算可重试次数减去执行失败次数的第一差值。
步骤505、计算第一差值与可重试次数的第二比值。
步骤506、计算最大固定优先级、第一比值和第二比值三者的乘积,得到作业动态优先级。
本申请实施例中,作业调度系统用可执行时间减去超时起始时间,得到的差值作为作业j的超时时长CT,计算等待时长W与超时时长CT的第二和值(W+CT),计算第二和值(W+CT)与等待时长W的第一比值(W+CT)/W;进一步地,计算可重试次数ET减去执行失败次数ST的第一差值(ET-ST);计算第一差值(ET-ST)与可重试次数ET的第二比值(ET-ST)/ET;最后,将最大固定优先级Lmax、第一比值(W+CT)/W和第二比值(ET-ST)/ET三者相乘,得到的乘积作为作业j的作业动态优先级Ladj
本申请实施例中,计算作业j的作业动态优先级可以通过如下(公式3)得到,
Figure BDA0003717075780000121
其中,Ladj为作业j的作业动态优先级,Lmax为最大固定优先级,W为作业j在后备状态队列中的等待时长,CT为作业j的超时时长,ET为作业j设置的可重试次数,ST为作业j在本次执行过程中的执行失败次数。
在一种可实现的场景中,参照表1所示,以作业A、作业B和作业H为例,假设当前日期为20220506,当前时间为凌晨05:30:05;作业A和作业B的超时起始时间均设置为每天凌晨05:20:00,作业A的超时时长CT=605s,作业A的等待时长W=1200s,作业A设置的可重试次数ET=5,作业A的执行失败次数ST=1;作业B的超时时长CT=605s,作业B的等待时长W=1200s,作业B设置的可重试次数ET=5,作业B的执行失败次数ST=2;且最大固定优先级Lmax=10,通过上述(公式3),计算作业A的作业动态优先级Ladj为12.03,计算作业B的作业动态优先级Ladj为9.03。
步骤307、基于作业j在上一调度周期N内的第n次执行过程中的实际执行时长和对应的作业资源空闲因子,确定作业j在上一调度周期N内的平均执行时长。
本申请实施例中,作业调度系统从作业j的历史执行记录信息中,获得作业j在上一调度周期N内的第n次执行时对应的实际执行时长Tn和作业资源空闲因子Zn,针对上一调度周期N,基于得到的N个实际执行时长Tn和N个作业资源空闲因子Zn,确定作业j在上一调度周期N内的平均执行时长T。
在一些实施例中,针对步骤307基于作业j在上一调度周期N内的第n次执行过程中的实际执行时长Tn和作业资源空闲因子Zn,确定作业j在上一调度周期N内的平均执行时长T的过程结合图10作出进一步说明,
步骤601、获得N个实际执行时长中的最大实际执行时长和最小实际执行时长。
步骤602、计算在第n次执行过程中,实际执行时长与对应的作业资源空闲因子的第三比值。
步骤603、从N个第三比值中,分别减去最大实际执行时长对应的第三比值、最小实际执行时长对应的第三比值,得到N-2个第三比值。
步骤604、计算N-2个第三比值的平均数,得到平均执行时长。
本申请实施例中,计算作业j的平均执行时长T可以通过如下(公式4)得到,
Figure BDA0003717075780000122
其中,T为作业j的平均执行时长,
Figure BDA0003717075780000131
为在第n次执行过程中,实际执行时长Tn与作业资源空闲因子Zn的第三比值,Tmax表示作业j在上一调度周期N内的最大实际执行时长,Zmax表示作业j的与最大实际执行时长对应的最大作业资源空闲因子,Tmin表示作业j在上一调度周期N内的最小实际执行时长,Zmin表示作业j的与最小实际执行时长对应的最小作业资源空闲因子,
Figure BDA0003717075780000132
表示最大实际执行时长Tmax对应的第三比值,
Figure BDA0003717075780000133
表示最小实际执行时长Tmin对应的第三比值。
在一种可实现的场景中,参照表2、表3和表4所示,以作业A和作业B为例,调度周期N=5,作业A在上一调度周期N中的实际执行时长分别为1000s、1200s、10000s、4000s和7000s,作业A在上一调度周期中的作业资源空闲因子分别为1、1.1061、5.5、2.5和3.8333,作业A在上一调度周期N中的最大实际执行时长Tmax=10000,作业A在上一调度周期N中的最小实际执行时长Tmin=1000;将上述参数代入上述(公式4),得到作业A的平均执行时长
Figure BDA0003717075780000134
同样的,作业B在上一调度周期N中的实际执行时长分别为1000s、1100s、1200s、1300s和1100s,作业B在上一调度周期中的作业资源空闲因子均为1,作业B在上一调度周期N中的最大实际执行时长Tmax=10000,作业B在上一调度周期N中的最小实际执行时长Tmin=1000;将上述参数代入上述(公式4),得到作业B的平均执行时长
Figure BDA0003717075780000135
这里仍以相关技术中的数据为例,作业K在资源紧张时刻的实际使用资源是9个executor、计划申请资源数40个executor、实际执行时长为16min=960s,等待时长W假设为300s,通过上述(公式2),计算出作业K在资源紧张时刻的作业资源空闲因子Z为3;若仅考虑作业资源空闲因子,通过如下(公式5),计算出作业K在资源紧张时刻的响应比Ru为1.8507。
Figure BDA0003717075780000136
其中,R表示作业的响应比,W表示作业在后备状态队列中的等待时长,
Figure BDA0003717075780000137
表示作业在上一调度周期N内的平均执行时长。
作业K在资源充足时刻的实际使用资源是40个executor,计划申请资源数40个executor、实际执行时长为6.6min=396s,等待时长W假设也为300s,通过上述(公式2),计算出作业K在资源紧张时刻的作业资源空闲因子Z为1;若仅考虑作业资源空闲因子,通过上述(公式5),计算作业K在资源充足时刻的响应比Re为1.7576;进一步地,在考虑作业资源空闲因子的情况下,确定作业K在资源紧张与资源充足时刻的响应比的偏差率RD为:
Figure BDA0003717075780000138
而相关技术中在不考虑作业资源空闲因子的情况下,作业K在资源紧张与资源充足时刻的响应比的偏差率RD为-25.32%。明显,在不考虑作业资源空闲因子得到的偏差率与考虑作业资源空闲因子得到的偏差率相比,偏差率由-25.32%优化到6.31%,且偏差率为正数,更有利于hive on spark任务的正常投递。
由上述可知,由于作业实际分配的资源越少,作业的执行执行时间越长本申请实施例通过添加资源空闲因子Z,将作业实际执行时长T除以资源空闲因子Z的值作为新的作业执行时长参与到作业的响应比的计算中,即确定作业资源的空闲因子Z是由该作业计划申请的资源数如executor总数与该作业实际分配到的实际使用资源数如executor个数之和的算术平均值作为分子,实际使用资源数作为分母的分数值;将作业执行时长T与作业实际的作业空闲资源因子Z相比后,能更接近作业处于资源充足状态下的执行时长,从而得到作业的平均执行时长更加准确,进而使得计算的作业当前时刻的响应比也更加准确,更有利于hive on spark任务的正常投递。
步骤308、基于等待时长、作业固定优先级、作业动态优先级和平均执行时长,确定作业j的响应比。
本申请实施例中,作业j的响应比是基于作业j的等待时长W、作业j的作业固定优先级Lfix、作业j的作业动态优先级Ladj和作业j在上一调度周期N内的平均执行时长T得到的。
在一些实施例中,针对步骤308基于等待时长、作业固定优先级、作业动态优先级和平均执行时长,确定作业j的响应比的过程结合图11作进一步说明,
步骤701、基于作业固定优先级、作业动态优先级和最大固定优先级,确定作业j的优先级系数。
本申请实施例中,作业j的优先级系数CM是基于作业j的作业固定优先级Lfix、作业j的作业动态优先级Ladj和最大固定优先级得到的。
在一些实施例中,针对步骤701基于作业固定优先级、作业动态优先级和最大固定优先级,确定作业j的优先级系数的过程结合图12作进一步说明,
步骤801、计算作业固定优先级和作业动态优先级的第三和值。
步骤802、计算第三和值与最大固定优先级的第四比值。
步骤803、计算第四比值与第二预设数值的之和,得到优先级系数。
本申请实施例中,计算作业j的优先级系数CM可以通过如下(公式6)得到,
Figure BDA0003717075780000141
其中,CM为作业j的优先级系数,Lfix表示作业j的作业固定优先级,Ladj表示作业j的作业动态优先级,Lmax表示最大固定优先级,第二预设数值为1。
在一种可实现的场景中,参照图5和表1所示,以作业A和作业B为例,最大固定优先级Lmax为10,作业A的作业固定优先级Lfix为10,作业A的作业动态优先级Ladj为12.03,将上述参数代入上述(公式6),得到作业A的优先级系数CM为3.20。
同样的,最大固定优先级Lmax为10,作业B的作业固定优先级Lfix为5,作业B的作业动态优先级Ladj为9.03,将上述参数代入上述(公式6),得到作业B的优先级系数CM为2.40。
由上述可知,本申请实施例中,通过引入作业的优先级系数,对于不同的作业,相同的等待时间前提下,对作业差异化配置优先级,并基于差异化的优先级计算不同作业的响应比,从而使得响应比大的作业获得优先投递权,符合业务使用预期;实现了作业的调度顺序的优化,也实现了对不同的作业进行差异化的调度。
步骤702、基于等待时长、优先级系数和平均执行时长,确定作业j的响应比。
本申请实施例中,作业j的响应比R是基于作业j的等待时长W、作业j的优先级系数CM和作业j在上一调度周期N内的平均执行时长T得到的。
在一些实施例中,针对步骤702基于等待时长、优先级系数和平均执行时长,确定作业j的响应比的过程结合图13作进一步说明,
步骤901、计算等待时长和优先级系数的第二乘积。
步骤902、计算第二乘积与平均执行时长的第五比值。
步骤903、计算第五比值和第三预设数值的和,得到作业j的响应比。
本申请实施例中,计算作业j的响应比可以通过如下(公式7)得到,
Figure BDA0003717075780000151
其中,R为作业j的响应比,W为作业j在后备状态队列中的等待时长,CM为作业j的优先级系数,T为作业j在上一调度周期N内的平均执行时长,第三预设数值为1。
在一种可实现的场景中,参照图5所示,以作业A和作业B为例,作业A的等待时长W为1200s,作业A的优先级系数CM为3.20,作业A在上一调度周期N内的平均执行时长T为1503.67s,将上述参数代入上述(公式7),得到作业A的响应比R为3.55。
同理,作业B的等待时长W为1200s,作业B的优先级系数CM为2.40,作业B在上一调度周期N内的平均执行时长T为1133.33s,将上述参数代入上述(公式7),得到作业B的响应比R为3.54。
步骤309、按照作业j的响应比,向大数据计算平台的资源管理器发送作业j的资源申请。
本申请实施例中,作业调度系统获得作业j的响应比之后,将所有作业j的响应比按照由大到小的顺序进行排序,并按照排序后的响应比,向大数据计算平台的资源管理器发送响应比对应的作业的资源申请。
在一种可实现的应用场景中,以作业A和作业B为例,作业A的响应比R为3.55,作业B的响应比为3.54,作业调度系统确定作业A的响应比大于作业B的响应比,即作业A获得优先投递执行;也就是说,作业调度系统先发送作业A的资源申请至大数据计算平台的资源管理器YARN,之后,再发送作业B的资源申请至大数据计算平台的资源管理器YARN。资源管理器YARN的资源将按作业A和B作业的投递顺序,先满足作业A的资源申请,再满足作业B的资源申请;即资源管理器YARN根据现有资源分配资源优先供作业A执行,之后YARN根据现有资源分配资源供作业B执行。进一步地,作业调度系统中的作业A、作业B按先后顺序执行Spark程序。然后,在作业A、作业B执行完成后,通过作业调度系统中的YARN资源同步模块同步作业A和作业B在本次执行过程中的执行记录信息。这里,作业A和作业B在本次执行过程中的执行记录信息如表5所示,
作业类别 作业A 作业B
作业标识 1648799282759_508981 1648799282759_508985
本次执行计划申请资源数 40个executor 4个executor
本次执行实际使用资源数 33个executor 4个executor
本次实际执行时长 1200秒 1000秒
表5
这里,通过作业调度系统中的YARN资源同步模块同步作业A和作业B在本次执行过程中的执行记录信息,实现过程为:
首先,通过作业调度系统中的YARN资源同步模块启动日志解析模块;其次,通过日志解析模块根据作业A和作业B的作业标识如spark jobId,调用spark rest应用程序编程接口(Application Programming Interface,api),从资源管理器YARN中分别查询作业A和作业B的本次执行的日志信息;然后,通过日志解析模块获取作业A和作业B的日志信息,并从日志信息中解析出作业A和作业B的执行记录信息,如本次执行计划申请资源数、本次执行实际使用资源数和本次实际执行时长;最后,记录作业A与作业B的执行记录信息到作业调度系统中的作业执行流水记录表中,以方便后期在作业执行流水记录表查询各个作业的执行情况。
在一种可实现的应用场景中,参照图14所示,对本申请实施例提供的作业调度方法的作进一步说明,
步骤1001、作业调度系统以预设周期频率(如5秒)发起轮询遍历作业实例列表,在05:30:05时刻时,发起遍历作业实例。
步骤1002、作业调度系统基于获得的各个作业的配置信息,确定作业满足基础调度条件。
本申请实施例中,作业的配置信息包括但不限于作业标识、作业描述、作业类型、作业的依赖作业、调度周期内的起始时间、超时起始时间、资源需求量、预估执行时长、作业固定优先级和可重试次数。
本申请实施例中,调度条件包括基础调度条件,基于作业的配置信息,确定作业满足基础调度条件包括:作业的依赖(上游)作业已执行完成,以及作业的可执行时间达到调度周期内的起始时间。
步骤1003、作业调度系统判断作业的作业类型是否为Spark ON Hive类型。
本申请实施例中,若确定作业的作业类型为Spark ON Hive类型,则执行步骤1004;若确定作业的作业类型不为Spark ON Hive类型,则执行步骤1005。
步骤1004、作业调度系统选择与Spark ON Hive类型对应的第一策略.
这里,第一策略是本申请提供的计算作业的响应比对应的策略。
步骤1005、作业调度系统选择第二策略。
这里,第一策略是相关技术提供的计算作业的响应比对应的策略。
步骤1006、作业调度系统计算各个作业的响应比,并按照响应比由大到小的顺序对各作业进行排序,得到排序结果。
步骤1007、作业调度系统按照排序结果,调度作业投递。
步骤1008、作业调度系统将各个作业的资源申请按照投递顺序发送至大数据计算平台的资源管理器YARN。
步骤1009、资源管理器YARN按照作业的投递顺序为作业分配资源。
步骤1010、作业调度系统中的各个作业根据分配的资源执行。
步骤1011、在各个作业执行完成后,触发作业调度系统中的YARN资源同步模块。
步骤1012、作业调度系统通过YARN资源同步模块中的日志解析模块,根据各个作业的作业标识,调用spark rest api,从资源管理器YARN中分别查询各个作业的本次执行的日志信息。
步骤1013、从日志信息中解析出各个作业的执行记录信息,并将各个作业的执行记录信息记录到作业调度系统中的作业执行流水记录表中。
由上述可知,本申请实施例中,通过引入作业资源空闲因子,能够计算出作业处于资源充足状态下的执行时长,从而提高了作业的平均执行时长的准确性,进而提高了作业在当前时刻的响应比的准确性,使得作业调度系统更合理的调度作业的执行;同时,降低了作业处于不同资源状态时作业响应值的偏差率,优化了作业的调度顺序;通过引入作业的优先级系数,对于不同的作业,相同的等待时间前提下,对作业差异化配置优先级,并基于差异化的优先级计算不同作业的响应比,从而使得响应比大的作业获得优先投递权,符合业务使用预期;实现了作业的调度顺序的优化,也实现了对不同的作业进行差异化的调度。
下面继续说明本申请实施例提供的作业调度装置154实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器150的作业调度装置154中的软件模块可以是终端100中的作业调度装置,包括:
获得模块1541,用于在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息;
获得模块1541,还用于在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息;其中,历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;
确定模块1542,用于基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子;
确定模块1542,还用于基于配置信息、可执行时间、作业资源空闲因子和实际执行时长,确定作业j的响应比;
发送模块1543,用于按照作业j的响应比,向大数据计算平台的资源管理器发送作业j的资源申请。
在一些实施例中,配置信息包括作业j的作业类型、作业j的依赖作业和作业j的调度周期内的起始时间,基于配置信息,确定作业j满足调度条件,包括:作业类型为预设作业类型,作业j的依赖作业已执行完成,以及作业j的可执行时间达到调度周期内的起始时间。
在一些实施例中,处理模块1544,还用于针对作业j在上一调度周期N内的第n次执行过程,计算作业j的计划申请资源数与实际使用资源数的第一和值;计算实际使用资源数与第一预设数值的第一乘积;计算第一和值和第一乘积的比值,得到作业j在第n次的作业资源空闲因子,直至得到作业j在上一调度周期N内的N个作业资源空闲因子。
在一些实施例中,获得模块1541,还用于获得作业j的依赖作业的执行完成时间、作业j在本次执行过程中执行失败次数,以及为作业实例列表中的作业设置的最大固定优先级;确定模块1542,还用于基于可执行时间和依赖作业的执行完成时间,确定作业j在后备状态队列中的等待时长;基于可执行时间、超时起始时间、等待时长、可重试次数、执行失败次数和最大固定优先级,确定作业j的作业动态优先级;基于作业j在上一调度周期N内的第n次执行过程中的实际执行时长和对应的作业资源空闲因子,确定作业j在上一调度周期N内的平均执行时长;基于等待时长、作业固定优先级、作业动态优先级和平均执行时长,确定作业j的响应比。
在一些实施例中,处理模块1544,还用于计算可执行时间减去超时起始时间的差值,得到作业j的超时时长;
计算等待时长和超时时长的第二和值;
计算第二和值与等待时长的第一比值;
计算可重试次数减去执行失败次数的第一差值;
计算第一差值与可重试次数的第二比值;
计算最大固定优先级、第一比值和第二比值三者的乘积,得到作业动态优先级。
在一些实施例中,获得模块1541,还用于获得N个实际执行时长中的最大实际执行时长和最小实际执行时长;处理模块1544,还用于计算在第n次执行过程中,实际执行时长与对应的作业资源空闲因子的第三比值;从N个第三比值中,分别减去最大实际执行时长对应的第三比值、最小实际执行时长对应的第三比值,得到N-2个第三比值;计算N-2个第三比值的平均数,得到平均执行时长。
在一些实施例中,确定模块1542,还用于基于作业固定优先级、作业动态优先级和最大固定优先级,确定作业j的优先级系数;基于等待时长、优先级系数和平均执行时长,确定作业j的响应比。
在一些实施例中,处理模块1544,还用于计算作业固定优先级和作业动态优先级的第三和值;计算第三和值与最大固定优先级的第四比值;计算第四比值与第二预设数值的之和,得到优先级系数。
在一些实施例中,处理模块1544,还用于计算等待时长和优先级系数的第二乘积;计算第二乘积与平均执行时长的第五比值;计算第五比值和第三预设数值的和,得到作业j的响应比。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图4、图6-图7以及图9-图14示出的方法。
本申请提供的存储介质,通过在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得作业实例列表中的作业j的可执行时间和配置信息;在基于配置信息,确定作业j满足调度条件的情况下,获得作业j在上一调度周期N内的历史执行记录信息;其中,历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;基于计划申请资源数和实际使用资源数,确定作业j在上一调度周期N内的作业资源空闲因子;基于配置信息、可执行时间、作业资源空闲因子和实际执行时长,确定作业j的响应比;按照作业j的响应比,向大数据计算平台的资源管理器发送作业j的资源申请。如此,通过引入作业资源空闲因子,解决了相关技术中因资源空闲问题导致的计算出的响应比不准确,进而导致作业调度顺序出现差错的问题;这里,作业调度系统计算不同资源状态下的作业资源空闲因子,并基于不同资源状态下作业的执行时长和对应的作业资源空闲因子,计算出作业相对于处于资源充足状态下的执行时长,如此,提高了作业的平均执行时长的准确性,从而提高了作业在当前时刻的响应比的准确性,使得作业调度系统更合理的调度作业的执行;同时,降低了作业处于不同资源状态时作业响应值的偏差率,优化了作业的调度顺序。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(超文本标记语言,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (11)

1.一种作业调度方法,其特征在于,包括:
在作业调度系统以预设周期频率对作业实例列表进行轮询遍历的过程中,获得所述作业实例列表中的作业j的可执行时间和配置信息;
在基于所述配置信息,确定所述作业j满足调度条件的情况下,获得所述作业j在上一调度周期N内的历史执行记录信息;其中,所述历史执行记录信息包括实际执行时长T、计划申请资源数和实际使用资源数;
基于所述计划申请资源数和所述实际使用资源数,确定所述作业j在所述上一调度周期N内的作业资源空闲因子;
基于所述配置信息、所述可执行时间、所述作业资源空闲因子和所述实际执行时长,确定所述作业j的响应比;
按照所述作业j的响应比,向大数据计算平台的资源管理器发送所述作业j的资源申请。
2.根据权利要求1所述的方法,其特征在于,所述配置信息包括所述作业j的作业类型、所述作业j的依赖作业和所述作业j的调度周期内的起始时间,所述基于所述配置信息,确定所述作业j满足调度条件,包括:所述作业类型为预设作业类型,所述作业j的依赖作业已执行完成,以及所述作业j的可执行时间达到所述调度周期内的起始时间。
3.根据权利要求1所述的方法,其特征在于,所述基于所述计划申请资源数和所述实际使用资源数,确定所述作业j在所述上一调度周期N内的作业资源空闲因子,包括:
针对所述作业j在所述上一调度周期N内的第n次执行过程,计算所述作业j的计划申请资源数与实际使用资源数的第一和值;
计算所述实际使用资源数与第一预设数值的第一乘积;
计算所述第一和值和所述第一乘积的比值,得到所述作业j在所述第n次的作业资源空闲因子,直至得到所述作业j在所述上一调度周期N内的N个作业资源空闲因子。
4.根据权利要求2所述的方法,其特征在于,所述配置信息还包括:所述作业j的作业固定优先级、超时起始时间和可重试次数;所述基于所述配置信息、所述可执行时间、所述作业资源空闲因子和所述实际执行时长,确定所述作业j的响应比,包括:
获得所述作业j的依赖作业的执行完成时间、所述作业j在本次执行过程中执行失败次数,以及为所述作业实例列表中的作业设置的最大固定优先级;
基于所述可执行时间和所述依赖作业的执行完成时间,确定所述作业j在后备状态队列中的等待时长;
基于所述可执行时间、所述超时起始时间、所述等待时长、所述可重试次数、所述执行失败次数和所述最大固定优先级,确定所述作业j的作业动态优先级;
基于所述作业j在所述上一调度周期N内的第n次执行过程中的实际执行时长和对应的作业资源空闲因子,确定所述作业j在所述上一调度周期N内的平均执行时长;
基于所述等待时长、所述作业固定优先级、所述作业动态优先级和所述平均执行时长,确定所述作业j的所述响应比。
5.根据权利要求4所述的方法,其特征在于,所述基于所述可执行时间、所述超时起始时间、所述等待时长、所述可重试次数、所述执行失败次数和所述最大固定优先级,确定所述作业j的作业动态优先级,包括:
计算所述可执行时间减去所述超时起始时间的差值,得到所述作业j的超时时长;
计算所述等待时长和所述超时时长的第二和值;
计算所述第二和值与所述等待时长的第一比值;
计算所述可重试次数减去所述执行失败次数的第一差值;
计算所述第一差值与所述可重试次数的第二比值;
计算所述最大固定优先级、所述第一比值和所述第二比值三者的乘积,得到所述作业动态优先级。
6.根据权利要求4所述的方法,其特征在于,所述基于所述作业j在所述上一调度周期N内的第n次执行过程中的实际执行时长和对应的作业资源空闲因子,确定所述作业j在所述上一调度周期N内的平均执行时长,包括:
获得N个实际执行时长中的最大实际执行时长和最小实际执行时长;
计算在所述第n次执行过程中,所述实际执行时长与对应的所述作业资源空闲因子的第三比值;
从N个第三比值中,分别减去所述最大实际执行时长对应的第三比值、所述最小实际执行时长对应的第三比值,得到N-2个第三比值;
计算所述N-2个第三比值的平均数,得到所述平均执行时长。
7.根据权利要求4所述的方法,其特征在于,所述基于所述等待时长、所述作业固定优先级、所述作业动态优先级和所述平均执行时长,确定所述作业j的所述响应比,包括:
基于所述作业固定优先级、所述作业动态优先级和所述最大固定优先级,确定所述作业j的优先级系数;
基于所述等待时长、所述优先级系数和所述平均执行时长,确定所述作业j的所述响应比。
8.根据权利要求7所述的方法,其特征在于,所述基于所述作业固定优先级、所述作业动态优先级和所述最大固定优先级,确定所述作业j的优先级系数,包括:
计算所述作业固定优先级和所述作业动态优先级的第三和值;
计算所述第三和值与所述最大固定优先级的第四比值;
计算所述第四比值与第二预设数值的之和,得到所述优先级系数。
9.根据权利要求7所述的方法,其特征在于,所述基于所述等待时长、所述优先级系数和所述平均执行时长,确定所述作业j的所述响应比,包括:
计算所述等待时长和所述优先级系数的第二乘积;
计算所述第二乘积与所述平均执行时长的第五比值;
计算所述第五比值和第三预设数值的和,得到所述作业j的所述响应比。
10.一种作业调度系统,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至9任一项所述的方法。
11.一种存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至9任一项所述的方法。
CN202210746576.7A 2022-06-28 2022-06-28 一种作业调度方法、作业调度系统及存储介质 Pending CN115048204A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210746576.7A CN115048204A (zh) 2022-06-28 2022-06-28 一种作业调度方法、作业调度系统及存储介质
PCT/CN2022/121343 WO2024000859A1 (zh) 2022-06-28 2022-09-26 一种作业调度方法、作业调度装置、作业调度系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210746576.7A CN115048204A (zh) 2022-06-28 2022-06-28 一种作业调度方法、作业调度系统及存储介质

Publications (1)

Publication Number Publication Date
CN115048204A true CN115048204A (zh) 2022-09-13

Family

ID=83163100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210746576.7A Pending CN115048204A (zh) 2022-06-28 2022-06-28 一种作业调度方法、作业调度系统及存储介质

Country Status (2)

Country Link
CN (1) CN115048204A (zh)
WO (1) WO2024000859A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024000859A1 (zh) * 2022-06-28 2024-01-04 深圳前海微众银行股份有限公司 一种作业调度方法、作业调度装置、作业调度系统及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6031051B2 (ja) * 2014-02-12 2016-11-24 西日本電信電話株式会社 ジョブ実行計画装置
CN108021450A (zh) * 2017-12-04 2018-05-11 北京小度信息科技有限公司 基于yarn的作业分析方法和装置
CN113495779A (zh) * 2020-03-20 2021-10-12 北京沃东天骏信息技术有限公司 一种任务调度方法和装置、任务执行系统
CN111651266A (zh) * 2020-04-29 2020-09-11 中国平安财产保险股份有限公司 基于Hadoop集群资源管理的方法、装置、设备及存储介质
CN113765949A (zh) * 2020-06-02 2021-12-07 华为技术有限公司 资源分配的方法以及装置
CN112395067A (zh) * 2020-12-04 2021-02-23 深圳前海微众银行股份有限公司 任务调度方法、系统、设备及介质
CN113254179B (zh) * 2021-06-03 2022-03-01 核工业理化工程研究院 基于高响应比的作业调度方法、系统、终端、存储介质
CN113391911B (zh) * 2021-07-05 2024-03-26 中国工商银行股份有限公司 一种大数据资源动态调度方法、装置和设备
CN114661443A (zh) * 2022-03-30 2022-06-24 中国农业银行股份有限公司 一种批量作业处理方法、系统、电子设备及存储介质
CN115048204A (zh) * 2022-06-28 2022-09-13 深圳前海微众银行股份有限公司 一种作业调度方法、作业调度系统及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024000859A1 (zh) * 2022-06-28 2024-01-04 深圳前海微众银行股份有限公司 一种作业调度方法、作业调度装置、作业调度系统及存储介质

Also Published As

Publication number Publication date
WO2024000859A1 (zh) 2024-01-04

Similar Documents

Publication Publication Date Title
US10541870B2 (en) Unified work backlog
US20060224740A1 (en) Allocating resources based on rules and events
CN111198767A (zh) 大数据资源处理方法、装置、终端及存储介质
EP3675434B1 (en) Distributed system resource allocation method, device and system
US20150134393A1 (en) Enhanced control to users in placement of tasks along a timeline
US8627330B2 (en) Workload manager managing a workload of an enterprise data warehouse
US20110119680A1 (en) Policy-driven schema and system for managing data system pipelines in multi-tenant model
US8959518B2 (en) Window-based scheduling using a key-value data store
US10102042B2 (en) Prioritizing and distributing workloads between storage resource classes
CN109597846B (zh) 大数据平台数据仓库数据处理方法、装置和计算机设备
CN112181621A (zh) 一种任务调度系统、方法、设备及存储介质
CN112559159A (zh) 一种基于分布式部署的任务调度方法
CN115048204A (zh) 一种作业调度方法、作业调度系统及存储介质
US10740332B2 (en) Memory-aware plan negotiation in query concurrency control
US8832263B2 (en) Dynamic resource adaptation
US8656395B2 (en) Method and system for optimizing a job scheduler in an operating system
CN113157411A (zh) 一种基于Celery的可靠可配置任务系统及装置
EP2840513A1 (en) Dynamic task prioritization for in-memory databases
US20220229692A1 (en) Method and device for data task scheduling, storage medium, and scheduling tool
CN112685158B (zh) 一种任务调度方法、装置、电子设备及存储介质
CN111506407B (zh) Pull模式与Push模式相结合的资源管理与作业调度方法、系统
CN117093335A (zh) 分布式存储系统的任务调度方法及装置
CN110908777B (zh) 作业调度方法、装置和系统
JP2000056989A (ja) タスク設計方法
CN110245009B (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