CN112948066A - 一种基于异构资源的Spark任务调度方法 - Google Patents

一种基于异构资源的Spark任务调度方法 Download PDF

Info

Publication number
CN112948066A
CN112948066A CN201911261592.1A CN201911261592A CN112948066A CN 112948066 A CN112948066 A CN 112948066A CN 201911261592 A CN201911261592 A CN 201911261592A CN 112948066 A CN112948066 A CN 112948066A
Authority
CN
China
Prior art keywords
task
node
spark
cpu core
slave
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
CN201911261592.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.)
Shenzhen Institute of Advanced Technology of CAS
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
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 Shenzhen Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN201911261592.1A priority Critical patent/CN112948066A/zh
Publication of CN112948066A publication Critical patent/CN112948066A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于异构资源的Spark任务调度方法。该方法包括:Master节点根据收集到的Spark集群中各计算节点上的片上系统信息,对每个CPU核级别的计算能力进行分析;Master节点根据待执行任务的运算量与CPU核级别的计算能力进行匹配,将任务分配给Slave计算节点并向Slave节点指示所分配的CPU核标识;Slave计算节点根据Master节点所指定分配的CPU核标识,将任务绑定在相应的CPU核上执行。本发明的方法能够提高任务执行效率,尤其能够减少关键任务的执行时间。

Description

一种基于异构资源的Spark任务调度方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于异构资源的Spark任务调度方法。
背景技术
近年来,随着大数据应用的普及,大数据通用并行框架也得到了越来越多的重视,其中Hadoop框架使用MapReduce模型,通过分布式系统架构可以使用不同节点的资源进行大规模并行计算。Spark框架进一步扩展了MapReduce模型,同Hadoop相比,它将很多数据保存在内存中,并进行计算,减少了非常耗时的输入输出操作,因此极大地提升了大数据处理速度,得到了广泛的应用。
Spark并行运算框架需要将任务分配到节点上进行运算。不同的计算节点的计算能力不同,如有的节点使用Intel Xeon处理器,有的节点使用Intel i5处理器,有的节点适合处理图像相关任务等,因此计算集群构成了异构资源集群。现有的Spark资源管理器收集每个节点的计算能力,然后通过合理调度分配任务,将任务分配给合适的节点,从而达到提高任务处理速度的目的。
现有的Spark任务调度方法关注于每个节点的总体计算能力,而不对每个核的计算能力进行细分,通过将任务分配给不同的计算节点完成任务调度。然而,由于计算机技术的飞速发展,很多节点使用片上系统(SoC),每个SoC中包含有多个CPU核,每个核的计算能力也会有差异。例如,使用不同CPU核的SoC有ARM公司推出的big.LITTLE架构,它在同一SoC上使用两种类型的CPU核。因此现有的根据每个节点总体计算能力进行任务调度的方法不适用于采用不同类型CPU核的节点。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种基于异构资源的Spark任务调度方法,在进行任务分配的时候,根据当前系统的实时资源状态,将任务根据CPU核进行合理调度分配。
本发明提供一种基于异构资源的Spark任务调度方法。该方法包括以下步骤:
Master节点根据收集到的Spark集群中各计算节点上的片上系统信息,对每个CPU核级别的计算能力进行分析;
Master节点根据待执行任务的运算量与CPU核级别的计算能力进行匹配,将任务分配给Slave计算节点并向Slave节点指示所分配的CPU核标识;
Slave计算节点根据Master节点所指定分配的CPU核标识,将任务绑定在相应的CPU核上执行。
在一个实施例中,所述片上系统信息包括直接获得的CPU类型或通过CPU结构的代码转换后获得的对应处理器信息。
在一个实施例中,对于一个待执行的任务,在Spark集群中,如果所有的CPU核运算能力都一样,则将任务随机分配,否则将任务优先分配给计算能力更强的CPU核。
在一个实施例中,Slave节点在执行任务后对所使用的资源进行释放,并向Master节点指示所释放的资源。
在一个实施例中,通过spark-submit命令将待执行任务提交给Master节点,其中提交任务时所使用的端口不同于已有的Master的资源管理器。
在一个实施例中,Master节点将任务分配给Slave节点后,对系统资源信息进行更新,并且在任务运行过程中实时更新资源信息。
与现有技术相比,本发明的优点在于:通过收集每个节点的SoC信息,对每个CPU核的计算能力进行分析,然后通过任务调度方法,将任务分配到合适的CPU核上进行运算。本发明能够实现对任务的细分调度,从而更高效地完成任务。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1是根据本发明一个实施例的基于异构资源的Spark任务调度方法的过程示意;
图2是根据发明一个实施例的基于异构资源的Spark任务调度方法的流程图;
图3是现有技术和本发明方法的效果对比图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
在本文示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
本发明首先提出了新的Spark并行计算框架的资源管理器,在每个计算节点收集详细的SoC信息,对于SoC中每个CPU核的计算能力都给予评估。然后,在进行任务分配的时,根据当前系统的实时资源状态,将任务根据CPU核进行合理调度分配,并由计算节点上的资源管理器负责将任务在指定的CPU核上运行。
简言之,参见图1所示,本发明实施例所提供的基于异构资源的Spark任务调度方法包括:步骤S110,收集Spark集群中各计算节点上的片上系统信息,针对CPU核级别的计算能力进行分析评估;步骤S120,根据待执行任务的运算量与CPU核级别的计算能力进行匹配,将任务分配给合适的计算节点,并指定运行该任务的CPU;步骤S130,根据所指定的CPU,将任务绑定在相应的CPU核上执行。
具体地,参见图2所示,本发明实施例的工作流程由5个阶段组成,即初始化资源信息、提交任务、任务调度、更新资源信息和执行任务。下文,将一一具体介绍。
1)、初始化资源信息
该阶段首先对每个节点的信息进行收集。现有的Spark框架的资源管理器收集的计算能力相关信息主要是每个节点的CPU核数,但是对于每个CPU核的类型没有具体信息。本发明实施例资源管理器能提供详细信息,该资源管理器在Spark的Master节点上和Slave计算节点上同时运行,用来在初始化阶段帮助进行资源信息收集。
例如,资源管理器基于Linux操作系统,通过Linux命令提取每个节点的SoC信息进行分析。对于不同的SoC,信息分析方式也有所不同。如根据Intel的SoC信息,可以直接得到处理器类型,而对于ARM的SoC信息,仅提供CPU架构的代码,而没有具体的类型。通过使用资源管理器中数据库的信息,将ARM的CPU结构的代码转换成对应的处理器信息(如0xd08对应A72处理器)。每个处理器信息都有着相应的计算能力评估,用来帮助进行任务调度。
2)、提交任务
本发明使用现有的Spark框架的spark-submit命令,通过提供Master上资源管理器的IP和端口提交任务。为了和已有的资源管理器进行区别,本发明使用新的端口。任务被提交之后,由Master上的资源管理器进行任务和资源的调度分配。同现有资源管理器一样,本发明可以同时提交多个任务,然后由资源管理器逐一分配。提交的任务可以是相同类型的计算,也可以是不同类型的计算,如机器学习相关的运算,数据库相关的运算等。
3)、任务调度
在接收到提交的任务之后,Master上的资源管理器通过调度方法进行任务调度。本发明对Master上的资源管理器进行扩展,添加了指定CPU核的任务启动方式,而不是仅仅通过指定核数交由资源管理器对任务随机分配CPU核运行。
资源管理器在进行任务调度的时候,对于任务τ,如果所有的CPU核运算能力都一样,则对任务随机分配。否则将任务τ优先分配给计算能力更强的CPU核。有些SoC提供了不同计算能力的CPU核,如ARM的big.LITTLE架构提供了两种计算能力的CPU核,分为大小核。大小核使用相同的指令集,但是大核的运算能力远大于小核。在进行任务调度的时候,将任务优先分配给大核执行。只有在大核不可用的情况下才将任务分配给小核执行。
4)、更新资源信息
Master上的资源管理器将任务分配给Slave计算节点之后,Master资源管理器对现有的系统资源信息进行更新。同时,任务运行的过程中实时更新资源信息,确保对新的任务使用实时的资源信息进行调度。
5)、执行任务
任务由Master上的资源管理器分配给Slave计算节点的资源管理器,并由Slave计算节点的资源管理器负责任务的执行。Slave计算节点的资源管理器在启动任务的时候,通过指定Master分配的CPU核将任务绑定在所分配的CPU核上执行。任务在执行完毕后对所使用的资源进行释放,并通过计算节点上的资源管理器传递给Master的资源管理器,使这些资源可以用于之后的任务调度。通过方式,能够将任务与具体的计算节点以及CPU核进行绑定,使得任务可以使用某一计算节点的特定计算能力的CPU核。
需要说明的是,本发明可以对不同的资源管理器进行扩展,达到对CPU核进行任务分配的目的,如Mesos,Yarn,Kubernetes,Standalone资源管理器等,而不依赖于具体的实施方法。此外,本发明不仅可以在Spark并行运行框架中使用,也可应用在其他的大数据框架,如Hadoop和Flink等。
进一步地,通过实验验证了本发明的效果。具体地,使用HiBench的基准程序,对Spark框架下的任务进行调度,在使用ARM的big.LITTLE架构的平台下运行HiBench程序,选取了Terasort和Bayes程序,对本发明和现有技术进行对比。
图3是任务在大小核上分别运行所使用的运行时间,其中纵轴表示运行时间(单位秒),Big代表大核,Little代表小核。分别示出了Terasort使用large数据集的运行时间,和Bayes使用small数据集的运行时间。由图3可以看出,在运行相同任务的时候,大核能够大幅度减少任务的运行时间,其中,大核的运算时间是小核的60%左右。
实验结果表明,现有技术在进行任务调度的时候,将任务分配给含有big.LITTLE架构的计算节点,该计算节点对任务使用的CPU核进行随机分配,在最差情况下会将任务分配给小核执行。而本发明将任务指定在大核上运行,能够显著提高最差情况下任务的执行速度(大核是小核运算速度的1.7倍左右)。通过使用本发明,可以将重要任务在处理能力强的CPU核上执行,从而减少关键任务的延迟。
综上所述,相对于现有技术,本发明的优势主要体现在以下方面:
1)、现有的Spark资源管理器在收集信息时都是进行的粗粒度信息收集,如收集处理器信息时只包含处理器的核数,对于每个核的具体信息没有收集。本发明通过扩展现有资源管理器,在进行信息收集时对于每个核的类型和架构的信息都进行详细收集,从而对每个CPU核的计算能力都有评估,便于进行基于CPU核的任务调度。
2)、现有的Spark异构资源下的任务调度方法都是针对不同节点的异构性进行调度,对于同一计算节点的异构性无法进行任务调度。本发明通过收集每个CPU核的信息,在进行任务调度的时候,将任务和具体的CPU核进行绑定,并通过计算节点上的资源管理器在指定的CPU核上运行任务,通过使用计算能力强的CPU核实现了减少任务运行时间的目的。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (8)

1.一种基于异构资源的Spark任务调度方法,包括以下步骤:
Master节点根据收集到的Spark集群中各计算节点上的片上系统信息,对每个CPU核级别的计算能力进行分析;
Master节点根据待执行任务的运算量与CPU核级别的计算能力进行匹配,将任务分配给Slave计算节点并向Slave节点指示所分配的CPU核标识;
Slave计算节点根据Master节点所指定分配的CPU核标识,将任务绑定在相应的CPU核上执行。
2.根据权利要求1所述的基于异构资源的Spark任务调度方法,其特征在于,所述片上系统信息包括直接获得的CPU类型或通过CPU结构的代码转换后获得的对应处理器信息。
3.根据权利要求1所述的基于异构资源的Spark任务调度方法,其特征在于,对于一个待执行的任务,在Spark集群中,如果所有的CPU核运算能力都一样,则将任务随机分配,否则将任务优先分配给计算能力更强的CPU核。
4.根据权利要求1所述的基于异构资源的Spark任务调度方法,其特征在于,Slave节点在执行任务后对所使用的资源进行释放,并向Master节点指示所释放的资源。
5.根据权利要求1所述的基于异构资源的Spark任务调度方法,其特征在于,通过spark-submit命令将待执行任务提交给Master节点,其中提交任务时所使用的端口不同于已有的Master的资源管理器。
6.根据权利要求1所述的基于异构资源的Spark任务调度方法,其特征在于,Master节点将任务分配给Slave节点后,对系统资源信息进行更新,并且在任务运行过程中实时更新资源信息。
7.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求1至6中任一项所述方法的步骤。
8.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6中任一项所述的方法的步骤。
CN201911261592.1A 2019-12-10 2019-12-10 一种基于异构资源的Spark任务调度方法 Pending CN112948066A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911261592.1A CN112948066A (zh) 2019-12-10 2019-12-10 一种基于异构资源的Spark任务调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911261592.1A CN112948066A (zh) 2019-12-10 2019-12-10 一种基于异构资源的Spark任务调度方法

Publications (1)

Publication Number Publication Date
CN112948066A true CN112948066A (zh) 2021-06-11

Family

ID=76225916

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911261592.1A Pending CN112948066A (zh) 2019-12-10 2019-12-10 一种基于异构资源的Spark任务调度方法

Country Status (1)

Country Link
CN (1) CN112948066A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113992751A (zh) * 2021-10-27 2022-01-28 北京八分量信息科技有限公司 异构网络中资源共享方法、装置及相关产品
WO2023142843A1 (en) * 2022-01-25 2023-08-03 Zhejiang Dahua Technology Co., Ltd. Resource management systems and methods thereof
CN116737346A (zh) * 2023-08-14 2023-09-12 南京翼辉信息技术有限公司 一种大小核处理器调度配置系统及其实现方法
WO2024037068A1 (zh) * 2022-08-19 2024-02-22 华为技术有限公司 任务调度方法、电子设备及计算机可读存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113992751A (zh) * 2021-10-27 2022-01-28 北京八分量信息科技有限公司 异构网络中资源共享方法、装置及相关产品
WO2023142843A1 (en) * 2022-01-25 2023-08-03 Zhejiang Dahua Technology Co., Ltd. Resource management systems and methods thereof
WO2024037068A1 (zh) * 2022-08-19 2024-02-22 华为技术有限公司 任务调度方法、电子设备及计算机可读存储介质
CN116737346A (zh) * 2023-08-14 2023-09-12 南京翼辉信息技术有限公司 一种大小核处理器调度配置系统及其实现方法
CN116737346B (zh) * 2023-08-14 2023-10-24 南京翼辉信息技术有限公司 一种大小核处理器调度配置系统及其实现方法

Similar Documents

Publication Publication Date Title
WO2019237811A1 (zh) 一种神经网络的内存分配方法及装置
CN112948066A (zh) 一种基于异构资源的Spark任务调度方法
CN105956021B (zh) 一种适用于分布式机器学习的自动化任务并行的方法及其系统
JP6826586B2 (ja) 従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム
KR101630749B1 (ko) 데이터센터 리소스 할당
Warneke et al. Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
US10310908B2 (en) Dynamic usage balance of central processing units and accelerators
EP3285170A1 (en) Application profiling job management system, program, and method
CN109144710B (zh) 资源调度方法、装置及计算机可读存储介质
EP3857401B1 (en) Methods for automatic selection of degrees of parallelism for efficient execution of queries in a database system
US20150199214A1 (en) System for distributed processing of stream data and method thereof
US9477511B2 (en) Task-based modeling for parallel data integration
WO2023103122A1 (zh) 深度学习框架与ai加速卡片内分布式训练适配方法和装置
US9009703B2 (en) Sharing reconfigurable computing devices between workloads
US11558311B2 (en) Automated local scaling of compute instances
US20190146847A1 (en) Dynamic distributed resource management
US11163677B2 (en) Dynamically allocated thread-local storage
CN112764893B (zh) 数据处理方法和数据处理系统
CN112465146A (zh) 一种量子与经典混合云平台以及任务执行方法
US20150007170A1 (en) Systems and Methods for Providing Hypercall Interface for Virtual Machines
US11126541B2 (en) Managing resources used during a development pipeline
US10469329B1 (en) Computing service capacity management
CN113407343A (zh) 一种基于资源分配的业务处理方法、装置及设备
US10592473B2 (en) Method for improving energy efficiency of map-reduce system and apparatus thereof
CN109460296B (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