CN109614211A - 分布式任务预调度方法及装置 - Google Patents

分布式任务预调度方法及装置 Download PDF

Info

Publication number
CN109614211A
CN109614211A CN201811434601.8A CN201811434601A CN109614211A CN 109614211 A CN109614211 A CN 109614211A CN 201811434601 A CN201811434601 A CN 201811434601A CN 109614211 A CN109614211 A CN 109614211A
Authority
CN
China
Prior art keywords
subtask
node
distributed task
scheduling
task scheduling
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
CN201811434601.8A
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.)
New H3C Technologies Co Ltd Hefei Branch
Original Assignee
New H3C Technologies Co Ltd Hefei Branch
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 New H3C Technologies Co Ltd Hefei Branch filed Critical New H3C Technologies Co Ltd Hefei Branch
Priority to CN201811434601.8A priority Critical patent/CN109614211A/zh
Publication of CN109614211A publication Critical patent/CN109614211A/zh
Pending legal-status Critical Current

Links

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/5044Allocation 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 hardware capabilities

Abstract

本申请提供的分布式任务预调度方法及装置,在所述方法中,首先,获取Kubernetes集群中各个节点的硬件资源和分布式任务中各个子任务的资源需求;接着,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务能否被调度给Kubernetes集群。通过上述预调度为后续将分布式任务调度给Kubernetes集群提供参考。在Kubernetes集群的节点的硬件资源不满足分布式任务的子任务的资源需求时,避免分布式任务的各子任务被调度到Kubernetes集群的节点后分布式任务无法被完成,及分布式任务的部分子任务被调度到Kubernetes集群的节点上占用Kubernetes集群资源的技术问题,提高分布式任务的调度效率。

Description

分布式任务预调度方法及装置
技术领域
本申请涉及任务调度技术领域,具体而言,涉及一种分布式任务预调度方法及装置。
背景技术
分布式任务可以由多个相互独立或者相互依赖的子任务组成,分布式任务的完成状态完全依赖于分布式任务中子任务的完成状态,只有在分布式任务的所有子任务完成时,分布式任务才算完成。
分布式任务的每个子任务可以采用Pod运行。其中,Pod是容器环境下的“逻辑主机”。在容器管理系统(Kubernetes)集群中,Pod是所有业务类型的基础,一个Pod可以由多个相关且共享磁盘的容器组成,在Pod中所有容器都被统一安排和调度。
分布式任务中的子任务可以通过Pod方式被调度到Kubernetes集群的Node上去处理。若分布式任务中存在子任务对应的Pod不能被调度到Kubernetes集群的Node上进行处理,那么该子任务将无法完成,最终也会导致整个分布式任务无法完成。
发明内容
有鉴于此,本申请提供一种分布式任务预调度方法及装置,用于将分布式任务中各子任务进行预调度,以确保各子任务均有节点处理,保证整个分布式任务能被完成。
第一方面,本申请提供一种分布式任务预调度方法,所述方法用于将分布式任务预调度给容器管理系统Kubernetes集群,所述Kubernetes集群包括多个节点,所述分布式任务包括多个子任务,所述方法包括:
获取Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求;
根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果;
根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群;
在判断所述分布式任务中各个子任务不能被调度给所述Kubernetes集群时,则不向所述Kubernetes集群调度所述分布式任务。
上述方法中,根据Kubernetes集群中各个节点的硬件资源与分布式任务中各个子任务的资源需求,将分布式任务的各子任务进行预调度,并在Kubernetes集群中各个节点的硬件资源满足分布式任务中各个子任务的资源需求时,将分布式任务中各个子任务调度给对应的Kubernetes集群中各个节点;在Kubernetes集群中各个节点的硬件资源不满足分布式任务中各个子任务的资源需求时,避免分布式任务被调度到Kubernetes集群后分布式任务无法被完成,和分布式任务的部分子任务被调度到Kubernetes集群的节点上占用Kubernetes集群资源的技术问题,提高分布式任务调度效率。
可选地,在本申请中,所述根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:
根据Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群,包括:
若每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
反之,则判定所述分布式任务不能被调度给所述Kubernetes集群。
可选地,在本申请中,所述根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:
根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群,包括:
若每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
可选地,在本申请中,所述根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:
根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
针对各个子任务按照排列顺序依次在各个节点中,查找满足资源需求的节点;
所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群,包括:
若排序后的每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
可选地,在本申请中,所述根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序,包括:
计算各个节点的硬件资源值;
根据各节点的硬件资源值对所述各个节点进行排序;
其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。
可选地,在本申请中,所述根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序,包括:
计算各个子任务的硬件资源值;
根据各子任务的硬件资源值对所述各个子任务进行排序;
其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。
第二方面,本申请还提供一种分布式任务预调度装置,所述装置用于将分布式任务预调度给容器管理系统Kubernetes集群,所述Kubernetes集群包括多个节点,所述分布式任务包括多个子任务,所述装置包括:
获取模块,用于获取Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求;
预调度运算模块,用于根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果;
判断模块,用于根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群;
预调度模块,用于在判断所述分布式任务中各个子任务不能被调度给所述Kubernetes集群时,则不向所述Kubernetes集群调度所述分布式任务。
可选地,在本申请中,所述预调度运算模块,包括:
排序子模块,用于根据Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
所述排序子模块,还用于根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
查找子模块,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述判断模块,还用于:
在每个子任务均查找到满足资源需求的节点时,判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
可选地,在本申请中,所述预调度运算模块,包括:
排序子模块,用于根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
查找子模块,用于针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述判断模块,还用于:在每个子任务均查找到满足资源需求的节点时,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
可选地,在本申请中,所述预调度模块,包括:
排序子模块,用于根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
查找子模块,用于针对各个子任务按照排列顺序依次在各个节点中,查找满足资源需求的节点;
所述判断模块,还用于:
在排序后的每个子任务均查找到满足资源需求的节点时,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
可选地,在本申请中,所述排序子模块具体用于:
计算各个节点的硬件资源值;
根据各节点的硬件资源值对所述各个节点进行排序;
其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。
可选地,在本申请中,所述排序子模块具体用于:
计算各个子任务的硬件资源值;
根据各子任务的硬件资源值对所述各个子任务进行排序;
其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。
第三方面,本申请还提供一种电子设备,所述电子设备包括处理器及存储有若干计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述电子设备执行第一方面所述的分布式任务预调度方法。
第四方面,本申请还提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在电子设备执行第一方面所述的分布式任务预调度方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请提供的分布式任务预调度方法及装置,在所述方法中,首先,获取Kubernetes集群中各个节点的硬件资源和分布式任务中各个子任务的资源需求;接着,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务中各个子任务能否被调度给Kubernetes集群。通过上述预调度为后续将分布式任务调度给Kubernetes集群提供参考。在Kubernetes集群的节点的硬件资源不满足分布式任务的子任务的资源需求时,避免分布式任务的各子任务被调度到Kubernetes集群的节点后分布式任务无法被完成,及分布式任务的部分子任务被调度到Kubernetes集群的节点上占用Kubernetes集群资源的技术问题,提高分布式任务的调度效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术提供的分布式任务在Kubernetes集群调度的示意图;
图2为本申请实施例提供的电子设备的结构框图;
图3为本申请实施例提供的分布式任务预调度方法的流程示意图;
图4为本申请实施例提供的分布式任务预调度装置的一种功能模块框图;
图5为本申请实施例提供的分布式任务预调度装置的另一种功能模块框图。
图标:100-电子设备;110-分布式任务预调度装置;1101-获取模块;1102-预调度运算模块;1103-判断模块;1104-预调度模块;11021-排序子模块;12022-查找子模块;111-存储器;112-处理器;113-通信单元。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请实施例的描述中,术语"第一"、"第二"等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请实施例的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请实施例中的具体含义。
现有技术,不考虑Kubernetes集群中各个Node的资源和运行分布式任务中各个子任务的Pod的资源需求之间的资源约束关系,直接将分布式任务调度到Kubernetes集群中。如果pod的资源需求无法得到满足,则该pod将无法调度到合适的Node上。
请参照图1,假设分布式任务包括5个子任务,5个子任务分别由5个pod运行,5个pod分别为pod1、pod2、pod3、pod4及pod5。Kubernetes集群包括有2个Node,分别为Node1和Node2。在现有技术中,不会考虑Pod的资源需求与Node的资源之间的资源约束关系,直接将运行各子任务的Pod调度到Kubernetes集群的Node上,比如,如图1中所示,Pod4和Pod5被调度到Node1中,Pod2和Pod3被调度到Node2中,Pod1因没有能满足其资源需求的Node,而无法调度到合适的Node中。
由于不考虑Node的资源与Pod的资源需求之间的资源约束关系,直接将运行各子任务的Pod调度到Kubernetes集群的Node上。如果在一个分布式任务中,部分运行子任务的Pod的资源需求无法得到满足,那么该部分运行子任务的Pod将无法调度到Kubernetes集群的Node上;而其他部分的Pod可以调度到Kubernetes集群的Node上。由于分布式任务的完成状态完全依赖于分布式任务中子任务对应Pod的完成状态。因此,在这种情况下,分布式任务是无法被完成的,影响分布式任务的调度效率。同时,部分被调度的Pod在Node上执行,还会占用Kubernetes集群的Node资源,影响Kubernetes集群的调度效率。
为了解决上述技术问题,本申请的申请人经过研究提出以下解决方案。
请参照图2,图2为本申请实施例提供的一种用于对分布式任务进行预调度的电子设备100的结构示意图。所述电子设备100包括分布式任务预调度装置110、存储器111、处理器112及通信单元113。
所述存储器111、处理器112及通信单元113的各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,所述存储器111可以是,但不限于,随机存取存储器(英文:Random AccessMemory,简称:RAM),只读存储器(英文:Read Only Memory,简称:ROM),可编程只读存储器(英文:Programmable Read-Only Memory,简称:PROM),可擦除只读存储器(英文:ErasableProgrammable Read-Only Memory,简称:EPROM),电可擦除只读存储器(英文:ElectricErasable Programmable Read-Only Memory,简称:EEPROM)等。其中,存储器111用于存储程序,所述处理器112在接收到执行指令后,执行所述程序。所述通信单元113用于通过网络建立所述电子设备100与其它设备(比如Kubernetes集群中各个节点)之间的通信连接,并用于通过网络进行数据的接收(比如,接收各个节点的硬件资源信息)和发送(比如,发送为各个节点预调度子任务的信息)。
分布式任务预调度装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述电子设备100的操作系统(英文:Operating System,简称:OS)中的软件功能模块。所述处理器112用于执行所述存储器111中存储的可执行模块,例如分布式任务预调度装置110所包括的软件功能模块及计算机程序等。
应当理解的是,图2所示的结构仅为示意,所述电子设备100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
请参照图3,图3为本申请实施例提供的分布式任务预调度方法的流程图,下面对所述方法包括的各个步骤进行详尽的阐述。
步骤S310,获取Kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求。
具体地,Kubernetes集群节点Node往往是异质的,即不同Node的资源大小是不一致的,甚至Node节点类型也可以不一致,比如,Node节点类型可以是物理机也可以是虚拟机。运行分布式任务的子任务的Pod也可以是异质的,有不同资源需求偏好类型,比如,Pod可以是GPU(Graphics Processing Unit)和CPU资源需求的计算类型Pod,也可以是CPU和存储器资源需求的实时存储类型Pod,而且分布式任务对不同类型Pod数量要求也是不一致。
在需要将分布式任务调度到Kubernetes集群中时,先将运行分布式任务中各个子任务的pod的资源需求、及Kubernetes集群中各个Node的硬件资源发送给电子设备100。其中,pod的资源需求包括pod所需的处理器资源(比如,CPU资源和GPU资源)和所需的存储器资源。Node的硬件资源包括Node的处理器资源和存储器资源。
步骤S320,根据Kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求,对分布式任务中各个子任务进行预调度运算,得到预调度运算结果。
具体地,在本发明实施例中,通过对各个节点的硬件资源、各个子任务的资源需求分别进行排序,得到各个子任务的预调度运算结果。
可以理解的是,具体的排序规则在下述实施例中详细说明。
步骤S330,根据预调度运算结果,判断分布式任务中各个子任务能否被调度给Kubernetes集群。
具体地,获取步骤S320中得到的预调度运算结果,通过将预调度运算结果与资源约束条件进行比对,进而判断各个子任务能否被调度给Kubernetes集群。
步骤S340,在判断分布式任务中各个子任务不能被调度给Kubernetes集群时,则不向Kubernetes集群调度所述分布式任务。
具体地,根据步骤S340的描述,当预调度运算结果不满足资源约束条件时,则确定子任务不能被调度给Kubernetes集群,此时,不向Kubernetes集群调度分布式任务中的子任务。
在确定子任务不能被调度给Kubernetes集群时,可以通过减小分布式任务的子任务的资源需求,或增加Kubernetes集群的节点资源后再重新预调度分布式任务的各子任务。
本申请实施例提供的分布式任务预调度方法,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务能否被调度给Kubernetes集群,为将分布式任务调度给Kubernetes集群提供参考。在Kubernetes集群的节点的硬件资源不满足分布式任务的子任务的资源需求时,以避免分布式任务的各子任务被调度到Kubernetes集群的节点后分布式任务无法被完成,及分布式任务的部分子任务被调度到Kubernetes集群的节点上占用Kubernetes集群资源的技术问题,提高分布式任务的调度效率。
在本申请实施例中,根据Kubernetes集群的各个Node的资源以及分布式任务中各个子任务的资源需求,对分布式任务中各个子任务进行预调度运算的方式有多种。
可选地,在本申请实施例的第一种实施方式中,步骤S320通过以下方式实现:
根据各个Pod的资源需求对各个Pod进行排序,并根据Kubernetes集群的各个Node的资源对各个Node进行排序。
具体地,计算各个Node的硬件资源值,根据各Node的硬件资源值对各个Node进行排序;其中,各Node的硬件资源值分别为各Node的处理器资源与存储器资源的乘积。
同理地,计算各个子任务的硬件资源值,根据各子任务的硬件资源值对各个子任务进行排序。
针对各个子任务按照排列顺序依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点。
可选地,在本申请实施例的第二种实施方式中,步骤S320通过以下方式实现:
根据Kubernetes集群的各个Node的资源对各个Node进行排序。
Node排序方式和第一实施方式相同,在此就不再赘述。
针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点。
与第一种实施方式相比,本实施方式只对Kubernetes集群的各个Node进行排序,不对分布式任务中各子任务进行排序。
可选地,在本申请实施例的第三种实施方式中,步骤S320通过以下方式实现:
根据各个Pod的资源需求对各个Pod进行排序。
Pod排序方式和第一实施方式相同,在此就不再赘述。
针对各个子任务按照排列顺序依次在各个节点中查找满足资源需求的节点。
与第一种实施方式相比,本实施方式只对分布式任务的各个Pod进行排序,不对Kubernetes集群的各个Node进行排序。
在本申请实施例的第四种实施方式中,步骤S320也可以不进行Pod与Node的排序,直接判断各个Node的资源是否满足各个Pod所需的资源。
在上述实施方式中,各个子任务的硬件资源值可以是运行各个子任务的Pod的硬件资源值,各个子任务的资源需求可以是运行各个子任务的Pod的资源需求。
可选地,在本申请实施例中,完成对分布式任务中各个子任务的预调度运算之后,步骤S330通过以下方式实现:
若排序后的每个子任务均查找到满足资源需求的节点,则判定分布式任务中各个子任务能被调度给Kubernetes集群,反之,则判定分布式任务中各个子任务不能被调度给Kubernetes集群。
下面以第一种实施方式为例,介绍实现第一实施方式的具体算法步骤。
Step1,获得分布式任务中各个子任务的资源需求及Kubernetes集群的Node的资源。
分布式任务的资源需求可以通过运行各个子任务的Pod的资源需求表示,具体地,可以表示为:P={p’1,p'2,...p'n},其中,n表示Pod的数量,表示第i个Pod的CPU资源需求,表示第i个Pod的存储器资源需求,表示第i个Pod的GPU资源需求;
Kubernetes集群的资源可以表示为:N={n’1,n'2,...,n'm},其中,m表示Node的数量,表示第j个Node的CPU资源,表示第j个Node的存储器资源,表示第j个Node的GPU资源。
Step2,根据各个Pod的资源需求对各个Pod进行排序,并根据Kubernetes集群的各个Node的资源对各个Node进行排序。
计算p’i的硬件资源值并将从大到小排序,获得有序Pnew={p1,p2,…,pn},其中,
计算n'j的硬件资源值并将从大到小排序,获得有序Nnew={n1,n2,…,nm},其中,
Step3,将Pnew={p1,p2,…,pn}中的Pod预调度到Nnew={n1,n2,...,nm}中的Node中,具体地:可以根据以下资源约束条件判定Pod是否可以调度到Node中。
在本申请实施例中,资源约束条件可以如下:
表示nj的CPU资源满足运行在nj上的Pod的CPU资源需求;
表示nj的存储器资源满足运行在nj上的Pod的存储器资源需求;
表示nj的GPU资源满足运行在nj上的Pod所需的GPU资源需求;
即在上述资源约束条件中,Pod能在Node上运行,则Node应该能为Pod至少提供Pod所需的资源。
在上述资源约束条件中,xij=0或1,xij表示pi是否运行在nj上,其中,0表示pi未运行在nj上,1表示pi运行在nj上。
Step4,计算xij值,当xij=1时,i=i+1,执行Step3,直到i=n;当xij=0时,j=j+1,执行Step3,直到j=m。
当j=m时,若表明pi无法调度到nj,即不存在可进行预调度的方案。
当i=n时,若表明存在可进行预调度的方案。
相应地,本申请实施例还提供一种分布式任务预调度装置110,与上面实施例不同的是,本分布式任务预调度装置110是从虚拟装置的角度描述本申请方案的。请参照图4,分布式任务预调度装置110可以包括以下模块。
获取模块1101,用于获取Kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求。
在需要将分布式任务调度到Kubernetes集群中时,获取模块1101获取运行分布式任务中各个子任务的pod的资源需求,及Kubernetes集群中各个Node节点硬件资源。其中,pod所需资源包括pod所需的处理器资源(比如,CPU资源和GPU资源)和所需的存储器资源。Node的硬件资源包括Node的处理器资源和存储器资源。
预调度运算模块1102,用于根据Kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求,对分布式任务中各个子任务进行预调度运算,得到预调度运算结果。
具体地,在本发明实施例中,预调度运算模块1102可以通过对各个节点的硬件资源、各个子任务的资源需求分别进行排序,得到各个子任务的预调度运算结果。
可以理解的是,具体的排序规则在下述实施例中详细说明。
判断模块1103,用于根据所述预调度运算结果,判断分布式任务中各个子任务能否被调度给Kubernetes集群。
具体地,预调度运算模块1102得到的预调度运算结果后,判断模块1103可以通过将预调度运算结果与资源约束条件进行比对,进而判断各个子任务能否被调度给Kubernetes集群。
预调度模块1104,用于判断分布式任务中各个子任务不能被调度给Kubernetes集群时,则不向Kubernetes集群调度分布式任务。
具体地,预调度模块1104在预调度运算结果不满足资源约束条件时,则确定子任务不能被调度给Kubernetes集群,此时,不向Kubernetes集群调度分布式任务中的子任务。
请参照图5,预调度运算模块1102可以包括排序子模块11021、查找子模块11022。可选地,在本申请实施例的第一种实施方式中:
排序子模块11021,用于根据Kubernetes集群中各个节点的硬件资源对各个节点进行排序;
排序子模块11021,还用于根据分布式任务中各个子任务的资源需求对各个子任务进行排序;
查找子模块11022,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
判断模块1103用于:在每个子任务均查找到满足资源需求的节点时,判定分布式任务能被调度给Kubernetes集群,反之,则判定分布式任务不能被调度给Kubernetes集群。
在本申请实施例的第二种实施方式中:
排序子模块11021,用于根据所述Kubernetes集群中各个节点的硬件资源对各个节点进行排序;
具体地,计算各个节点的硬件资源值,根据各节点的硬件资源值对各个节点进行排序;其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。
查找子模块11022,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
判断模块1103用于:在每个子任务均查找到满足资源需求的节点时,则判定分布式任务中各个子任务能被调度给Kubernetes集群,反之,则判定分布式任务中各个子任务不能被调度给Kubernetes集群。
在本申请实施例的第三种实施方式中:
排序子模块11021,用于根据分布式任务中各个子任务的资源需求对各个子任务进行排序;
具体地,排序子模块11021具体用于:
计算各个子任务的硬件资源值,根据各子任务的硬件资源值对各个子任务进行排序,其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。
查找子模块11022,用于针对排序后的各个子任务依次在各个节点中,查找满足各个子任务的资源需求的节点;
判断模块1103用于:在排序后的每个子任务均查找到满足资源需求的节点时,则判定分布式任务中各个子任务能被调度给Kubernetes集群,反之,则判定分布式任务中各个子任务不能被调度给所述Kubernetes集群。
如果上述功能以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备100执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本申请提供的分布式任务预调度方法及装置,在所述方法中,首先,获取Kubernetes集群中各个节点的硬件资源和分布式任务中各个子任务的资源需求;接着,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务能否被调度给Kubernetes集群,为将分布式任务调度给Kubernetes集群提供参考。在Kubernetes集群中各个节点的硬件资源不满足分布式任务中各个子任务的资源需求时,避免无法完成的分布式任务被调度到Kubernetes集群,导致分布式任务无法被完成,和分布式任务的部分子任务被调度到Kubernetes集群的节点上占用Kubernetes集群资源的技术问题,提高分布式任务调度效率和Kubernetes集群调度效率。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (12)

1.一种分布式任务预调度方法,其特征在于,所述方法用于将分布式任务预调度给容器管理系统Kubernetes集群,所述Kubernetes集群包括多个节点,所述分布式任务包括多个子任务,所述方法包括:
获取Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求;
根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果;
根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群;
在判断所述分布式任务中各个子任务不能被调度给所述Kubernetes集群时,则不向所述Kubernetes集群调度所述分布式任务。
2.如权利要求1所述的方法,其特征在于,所述根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:
根据Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群,包括:
若每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
3.如权利要求1所述的方法,其特征在于,所述根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:
根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群,包括:
若每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
4.如权利要求1所述的方法,其特征在于,所述根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:
根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
针对各个子任务按照排列顺序依次在各个节点中,查找满足资源需求的节点;
所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群,包括:
若排序后的每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
5.如权利要求2或3所述的方法,其特征在于,所述根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序,包括:
计算各个节点的硬件资源值;
根据各节点的硬件资源值对所述各个节点进行排序;
其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。
6.如权利要求2或4所述的方法,其特征在于,所述根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序,包括:
计算各个子任务的硬件资源值;
根据各子任务的硬件资源值对所述各个子任务进行排序;
其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。
7.一种分布式任务预调度装置,其特征在于,所述装置用于将分布式任务预调度给容器管理系统Kubernetes集群,所述Kubernetes集群包括多个节点,所述分布式任务包括多个子任务,所述装置包括:
获取模块,用于获取Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求;
预调度运算模块,用于根据所述Kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果;
判断模块,用于根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述Kubernetes集群;
预调度模块,用于在判断所述分布式任务中各个子任务不能被调度给所述Kubernetes集群时,则不向所述Kubernetes集群调度所述分布式任务。
8.如权利要求7所述的装置,其特征在于,所述预调度运算模块,包括:
排序子模块,用于根据Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
所述排序子模块,还用于根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
查找子模块,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述判断模块,还用于:
在每个子任务均查找到满足资源需求的节点时,判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
9.如权利要求7所述的装置,其特征在于,所述预调度运算模块,包括:
排序子模块,用于根据所述Kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;
查找子模块,用于针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;
所述判断模块,还用于:在每个子任务均查找到满足资源需求的节点时,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
10.如权利要求7所述的装置,其特征在于,所述预调度运算模块,包括:
排序子模块,用于根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;
查找子模块,用于针对各个子任务按照排列顺序依次在各个节点中,查找满足资源需求的节点;
所述判断模块,还用于:
在排序后的每个子任务均查找到满足资源需求的节点时,则判定所述分布式任务中各个子任务能被调度给所述Kubernetes集群;
若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述Kubernetes集群。
11.如权利要求8或9所述的装置,其特征在于,所述排序子模块具体用于:
计算各个节点的硬件资源值;
根据各节点的硬件资源值对所述各个节点进行排序;
其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。
12.如权利要求8或10所述的装置,其特征在于,所述排序子模块具体用于:
计算各个子任务的硬件资源值;
根据各子任务的硬件资源值对所述各个子任务进行排序;
其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。
CN201811434601.8A 2018-11-28 2018-11-28 分布式任务预调度方法及装置 Pending CN109614211A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811434601.8A CN109614211A (zh) 2018-11-28 2018-11-28 分布式任务预调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811434601.8A CN109614211A (zh) 2018-11-28 2018-11-28 分布式任务预调度方法及装置

Publications (1)

Publication Number Publication Date
CN109614211A true CN109614211A (zh) 2019-04-12

Family

ID=66005813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811434601.8A Pending CN109614211A (zh) 2018-11-28 2018-11-28 分布式任务预调度方法及装置

Country Status (1)

Country Link
CN (1) CN109614211A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532103A (zh) * 2019-09-09 2019-12-03 北京西山居互动娱乐科技有限公司 一种多任务处理的方法及装置
CN110727512A (zh) * 2019-09-30 2020-01-24 星环信息科技(上海)有限公司 集群资源调度方法、装置、设备及储存介质
CN111538586A (zh) * 2020-01-23 2020-08-14 中国银联股份有限公司 集群gpu资源管理调度系统、方法以及计算机可读存储介质
CN112114950A (zh) * 2020-09-21 2020-12-22 中国建设银行股份有限公司 任务调度方法和装置、以及集群管理系统
CN112286631A (zh) * 2020-10-23 2021-01-29 烽火通信科技股份有限公司 一种Kubernetes资源调度方法、装置与电子设备
CN113377515A (zh) * 2021-06-22 2021-09-10 浪潮云信息技术股份公司 一种Kubernetes资源的任务预调度方法
CN113553194A (zh) * 2021-09-22 2021-10-26 阿里巴巴达摩院(杭州)科技有限公司 硬件资源管理方法、设备及存储介质
CN115098238A (zh) * 2022-07-07 2022-09-23 北京鼎成智造科技有限公司 一种应用程序任务调度方法及装置
CN115174695A (zh) * 2022-07-18 2022-10-11 中软航科数据科技(珠海横琴)有限公司 一种用于分布式网络资源的调度系统及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073546A (zh) * 2010-12-13 2011-05-25 北京航空航天大学 一种云计算环境中分布式计算模式下的任务动态调度方法
US20120005682A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Holistic task scheduling for distributed computing
CN103365713A (zh) * 2012-04-01 2013-10-23 华为技术有限公司 一种资源的调度和管理方法及装置
CN105022670A (zh) * 2015-07-17 2015-11-04 中国海洋大学 一种云计算平台中的异构分布式任务处理系统及其处理方法
CN107291545A (zh) * 2017-08-07 2017-10-24 星环信息科技(上海)有限公司 计算集群中多用户的任务调度方法及设备
CN108519911A (zh) * 2018-03-23 2018-09-11 上饶市中科院云计算中心大数据研究院 一种基于容器的集群管理系统中资源的调度方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005682A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Holistic task scheduling for distributed computing
CN102073546A (zh) * 2010-12-13 2011-05-25 北京航空航天大学 一种云计算环境中分布式计算模式下的任务动态调度方法
CN103365713A (zh) * 2012-04-01 2013-10-23 华为技术有限公司 一种资源的调度和管理方法及装置
CN105022670A (zh) * 2015-07-17 2015-11-04 中国海洋大学 一种云计算平台中的异构分布式任务处理系统及其处理方法
CN107291545A (zh) * 2017-08-07 2017-10-24 星环信息科技(上海)有限公司 计算集群中多用户的任务调度方法及设备
CN108519911A (zh) * 2018-03-23 2018-09-11 上饶市中科院云计算中心大数据研究院 一种基于容器的集群管理系统中资源的调度方法和装置

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
YAOHUI WANG: "Study on re-implement mechanism based on node-ability in Hadoop", 《PROCEEDINGS OF 2011 INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND NETWORK TECHNOLOGY》, 12 April 2012 (2012-04-12), pages 1220 - 1223 *
桂小林: "程序设计重点综述与试题分析 程序员级", 北京邮电大学出版社, pages: 145 *
樊留群: "《实时以太网及运动控制总线技术》", 31 March 2009, pages: 99 - 100 *
毕思文: "《数字地球 地球系统数字学》", 31 October 2001, pages: 526 *
谢文舟等: "基于Kubernetes负载特征的资源预测模型研究", 《网络安全技术与应用》 *
谢文舟等: "基于Kubernetes负载特征的资源预测模型研究", 《网络安全技术与应用》, no. 04, 15 April 2018 (2018-04-15), pages 30 - 31 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532103A (zh) * 2019-09-09 2019-12-03 北京西山居互动娱乐科技有限公司 一种多任务处理的方法及装置
CN110727512A (zh) * 2019-09-30 2020-01-24 星环信息科技(上海)有限公司 集群资源调度方法、装置、设备及储存介质
CN111538586A (zh) * 2020-01-23 2020-08-14 中国银联股份有限公司 集群gpu资源管理调度系统、方法以及计算机可读存储介质
CN112114950A (zh) * 2020-09-21 2020-12-22 中国建设银行股份有限公司 任务调度方法和装置、以及集群管理系统
CN112286631A (zh) * 2020-10-23 2021-01-29 烽火通信科技股份有限公司 一种Kubernetes资源调度方法、装置与电子设备
CN113377515A (zh) * 2021-06-22 2021-09-10 浪潮云信息技术股份公司 一种Kubernetes资源的任务预调度方法
CN113553194A (zh) * 2021-09-22 2021-10-26 阿里巴巴达摩院(杭州)科技有限公司 硬件资源管理方法、设备及存储介质
CN113553194B (zh) * 2021-09-22 2022-05-06 阿里巴巴达摩院(杭州)科技有限公司 硬件资源管理方法、设备及存储介质
CN115098238A (zh) * 2022-07-07 2022-09-23 北京鼎成智造科技有限公司 一种应用程序任务调度方法及装置
CN115098238B (zh) * 2022-07-07 2023-05-05 北京鼎成智造科技有限公司 一种应用程序任务调度方法及装置
CN115174695A (zh) * 2022-07-18 2022-10-11 中软航科数据科技(珠海横琴)有限公司 一种用于分布式网络资源的调度系统及方法
CN115174695B (zh) * 2022-07-18 2024-01-26 中软航科数据科技(珠海横琴)有限公司 一种用于分布式网络资源的调度系统及方法

Similar Documents

Publication Publication Date Title
CN109614211A (zh) 分布式任务预调度方法及装置
CN108960708B (zh) 货物上架方法、装置、系统、货物上架终端及存储介质
Masdari et al. Efficient task and workflow scheduling in inter-cloud environments: challenges and opportunities
Zhang et al. Genetic programming with multi-tree representation for dynamic flexible job shop scheduling
CN109472523A (zh) 用于分拣货物的方法和装置
US9015169B2 (en) Tenant placement in multitenant cloud databases with data sharing
CN109992407A (zh) 一种yarn集群gpu资源调度方法、装置和介质
Turner et al. Effectiveness of kanban approaches in systems engineering within rapid response environments
US9672545B2 (en) Optimizing license use for software license attribution
US10027596B1 (en) Hierarchical mapping of applications, services and resources for enhanced orchestration in converged infrastructure
CN103986669B (zh) 一种云计算中资源分配策略的评估方法
CN107968810A (zh) 一种服务器集群的资源调度方法、装置和系统
US20180211196A1 (en) Automated procurement device
CN106095582A (zh) 云平台的任务执行方法
Basu et al. Implementing fuzzy TOPSIS in cloud type and service provider selection
Khajemohammadi et al. Efficient workflow scheduling for grid computing using a leveled multi-objective genetic algorithm
US10984345B2 (en) Management of power sources and jobs in an integrated power system
CN110339567A (zh) 系统资源配置、场景预测模型训练方法和装置
CN111045932A (zh) 业务系统仿真处理方法、装置、电子设备及存储介质
Rauchecker et al. Using high performance computing for unrelated parallel machine scheduling with sequence-dependent setup times: Development and computational evaluation of a parallel branch-and-price algorithm
WO2016018352A1 (en) Platform configuration selection based on a degraded makespan
CN109840815B (zh) 用于订单处理的系统及方法
Partheeban et al. Versatile provisioning and workflow scheduling in WaaS under cost and deadline constraints for cloud computing
Shi et al. Hpks: High performance kubernetes scheduling for dynamic blockchain workloads in cloud computing
van Stralen et al. Fitness prediction techniques for scenario-based design space exploration

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