CN110050261A - 计算资源分配 - Google Patents

计算资源分配 Download PDF

Info

Publication number
CN110050261A
CN110050261A CN201780075655.7A CN201780075655A CN110050261A CN 110050261 A CN110050261 A CN 110050261A CN 201780075655 A CN201780075655 A CN 201780075655A CN 110050261 A CN110050261 A CN 110050261A
Authority
CN
China
Prior art keywords
request
computing resource
program part
program
resource
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.)
Granted
Application number
CN201780075655.7A
Other languages
English (en)
Other versions
CN110050261B (zh
Inventor
J·C·K·朱
S·J·施密特
B·王
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.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of CN110050261A publication Critical patent/CN110050261A/zh
Application granted granted Critical
Publication of CN110050261B publication Critical patent/CN110050261B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • 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/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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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]
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/5061Partitioning or combining of resources
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

请求用于执行包括多个程序部分的程序(224)的计算资源包括计算请求集合。除初始集合之外,每个集合仅在先前提交的集合已被授权时才由计算资源管理器(120)进行处理。在该初始集合之后,形成一个或多个附加集合以供该管理器进行处理。附加集合的请求包括用于程序部分的部分请求(386),该程序部分在程序部分的最不满足集合中。每一程序部分与其先前请求的资源的数量除以相关联目标数量的对应满足率相关联。该部分请求请求足够小的资源数量,使得在该部分请求被授权后,在该最不满足集合中的每一程序部分将具有大于其曾经的满足率并且仍然小于一的满足率。

Description

计算资源分配
相关申请的交叉引用
本申请要求于2016年12月8日提交的美国申请序列号62/431,505的优先权。
技术领域
本说明书涉及计算系统中的计算资源的分配。
背景技术
在计算系统上运行的应用程序要求计算系统的计算资源中的一部分执行该应用程序。因此,计算系统必须管理其资源对在其上运行的应用程序的分配。被分配到应用程序的资源的一些示例包括对计算系统的存储器中的一部分的访问、对文件数据的访问、以及对所需量的处理能力的访问。
在分布式计算系统中,计算资源(包括数据存储和处理资源)分布在一个或多个集群中包括的多个服务器中,这些集群一起工作以运行数据处理应用程序。在一些示例中,分布式计算系统使用集中式资源管理器,其既调度在计算系统上执行应用程序又管理给应用程序分配计算系统的分布式资源。一种此类资源管理器是“Hadoop YARN”。
发明内容
在一般方面1中,提供一种用于从计算资源管理器请求用于在计算系统中执行具有多个程序部分的计算机程序的计算资源的方法,该方法包括:存储指定与这些程序部分的对应程序部分相关联的计算资源的目标数量的信息,其中,每一程序部分使用由该计算资源管理器授权的授权计算资源,使得程序部分能够在该计算系统中执行;以及计算请求,以作为多个请求集合提交给计算资源管理器,该请求针对在计算系统中执行计算机程序的计算资源,其中,除初始请求集合之外,每一请求集合将仅当多个请求集合中的先前提交的一个或多个集合通过计算资源管理器授权以供多个程序部分使用时,才能够通过计算资源管理器进行处理,该计算包括:形成初始请求集合,并且在初始请求集合之后形成一个或多个附加请求集合以供该计算资源管理器进行处理,其中,这些附加请求集合中的至少一个请求集合包括用于在一个或多个程序部分的最不满足集合中的多个程序部分的至少一个程序部分的部分请求,其中,该多个程序部分中的每一程序部分与其先前请求的资源的数量除以其相关联的计算资源的目标数量的对应满足率相关联,其中,如果程序部分的相关联的满足率在所有的多个程序部分上是相关联的满足率的最小值,则该程序部分是最不满足集合的成员,并且其中,部分请求请求一定数量的计算资源,使得在部分请求被授权后,在最不满足集合中的每一程序部分将具有大于在部分请求被授权之前的在最不满足集合中的一个或多个程序部分中的每一个的满足率并且仍然小于一的满足率。
根据方面1的方面2,其中,部分请求请求小于或等于一定数量的计算资源的数量,使得在部分请求被授权后,在最不满足集合中的每一程序部分将具有仍然小于非最不满足集合的成员的至少一个程序部分的满足率的满足率。
根据方面1或2的方面3,其中,部分请求请求大于或等于一定数量的计算资源的数量,使得在部分请求被授权后,在最不满足集合中的每一程序部分将具有与非最不满足集合的成员的至少一个程序部分的满足率一样大的满足率。
根据方面1至3中任一项的方面4,其中,部分请求请求大于或等于一定数量的计算资源的数量,使得在部分请求被授权之后,在最不满足集合中的每一程序部分将具有与非最不满足集合的成员的至少一个程序部分的满足率一样大的满足率。
根据方面1至4中任一项的方面5,其中,初始请求集合包括用于每一程序部分的最小请求,其中,每一最小请求请求执行程序的相应部分所需的计算资源的最小数量。
根据方面1至5中任一项的方面6,其中,这些程序部分中的至少一个与计算资源的固定目标数量相关联,以及这些程序部分中的至少一个与计算资源的可变目标数量相关联,以及用于与计算资源的固定目标数量相关联的每一程序部分的最小请求是与计算资源的完整目标数量相对应的完整请求,以及用于与计算资源的可变目标数量相关联的每一程序部分的最小请求是与少于计算资源的完整目标数量相对应的部分请求。
根据方面1至6中任一项的方面7,其中,用于与计算资源的可变目标数量相关联的每一程序部分的最小请求是与计算资源的单一单元相对应的部分请求,其中,计算资源的每一可变目标数量是根据计算资源的粒度来限定的,该粒度将计算资源的完整目标数量分成多个大小相等的单元。
根据方面1至7中任一项的方面8,其中,在至少一个请求集合中的至少一些请求与彼此大小不同的计算资源的数量相对应。
根据方面1至8中任一项的方面9,其中,存储指定与多个程序部分的对应程序部分相关联的计算资源的目标数量的信息包括:针对至少一个程序部分,至少部分基于用户输入来确定其计算资源的相关联目标数量。
根据方面1至9中任一项的方面10,其中,计算资源分布于多个计算节点上。
根据方面1至10中任一项的方面11,其中,程序部分中的至少一些需要从多个计算节点中的特定的一个或多个计算节点中获得其被授权的计算资源。
根据方面1至11中任一项的方面12,其中,与多个请求集合的每一请求集合的每一请求相关联的计算资源必须从多个计算节点中的单一计算节点中获得。
根据方面1至12中任一项的方面13,其中,程序部分中的至少一些被配置用于处理来自一个或多个数据源的数据项,并且该方法进一步包括至少部分基于来自一个或多个数据源的数据项为程序部分中的每一个确定计算资源的目标数量。
根据方面1至13中任一项的方面14,其中,至少部分基于来自一个或多个数据源的数据项针对程序部分中的每一个确定计算资源的目标数量包括:针对每一程序部分,对于将要通过该程序部分进行处理的每一数据项,将与程序部分的单一实例相关联的计算资源添加到与程序部分相关联的计算资源的目标数量。
根据方面1至14中任一项的方面15,其中,多个请求集合的每一请求集合的每一请求请求多个程序部分的特定程序部分的单一实例所需的计算资源。
根据方面1至15中任一项的方面16,其中,多个程序部分中的第一程序部分与来自多个请求集合的多个请求相关联。
根据方面1至16中任一项的方面17,进一步包括,响应于初始请求集合,接收初始请求集合的一个或多个请求不被满足的指示,并且基于响应中止程序执行。
在一般方面18中,一种计算机可读介质存储有软件,该软件用于从计算资源管理器请求用于在计算系统中执行具有多个程序部分的计算机程序的计算资源,该软件包括用于使计算系统执行根据方面1至17中任一项的方法的指令。
在一般方面19中,提供一种用于从计算资源管理器请求用于在计算系统中执行程序的计算资源的计算系统,该程序具有多个程序部分,该计算系统包括:数据存储系统,用于存储指定与这些程序部分的对应程序部分相关联的计算资源的目标数量的信息;以及至少一个处理器,被配置用于执行根据方面1至17中任一项的方法。
以上方面和以下所描述的条项可包括以下优点中的一个或多个。
除其他优点之外,方面将计算系统的计算资源分配给计算机程序诸如数据处理图的程序部分诸如数据处理组件,使得当另一个程序部分缺乏计算资源时,没有一个数据处理组件被分配比它需要的更多的计算资源。因此,本文所描述的技术减少了当计算系统的其他计算资源未完全参与数据处理任务时,数据处理任务可能过载的计算系统的计算资源的故障。因此,这些技术有助于更有效地使用执行计算机程序诸如数据处理图的计算系统的计算资源,并因此增强和确保计算系统的正常内部运作。本文所描述的技术的另一个技术效果是对在计算系统上执行的计算机程序诸如数据处理图的效果。例如,通过促进计算系统的计算资源的整体平衡分配,能够同时执行更大数量的计算机程序诸如数据处理图,并且/或者通过不必长期等待获得执行所需的计算系统的必要计算资源,能够更快地启动计算机程序中的一些,诸如数据处理图。
从以下描述、附图以及从权利要求书,本发明的其他特征和优点将变得显而易见。
提供本发明内容从而以简化形式引入将在下文实施方式中进一步描述的一系列概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征。
附图说明
图1是用于分配分布式计算资源的系统的框图。
图2A是用于分配分布式计算资源的系统的详细框图。
图2B是数据处理图的示例的图示。
图3是分布式计算资源分配算法的流程图。
图4是在完成计算资源分配算法的第一步骤之后的图2的框图。
图5是在完成计算资源分配算法的第二步骤之后的图2的框图。
图6是在计算资源分配算法的第三步骤期间的图2的框图。
图7是在计算资源分配算法的第五步骤期间的图2的框图。
图8是在计算资源分配算法的第七步骤的第一部分期间的图2的框图。
图9是在计算资源分配算法的第七步骤的第二部分期间的图2的框图。
图10是在计算资源分配算法的第七步骤的第三部分期间的图2的框图。
图11是在计算资源分配算法的第九步骤的第一迭代期间的图2的框图。
图12是在计算资源分配算法的第九步骤的第二迭代期间的图2的框图。
图13是在计算资源分配算法的第九步骤的第三迭代期间的图2的框图。
图14是在计算资源分配算法的第九步骤的第四迭代期间的图2的框图。
图15示出参考本文所描述的编号条项的过程流程,计算资源可以根据该过程流程被分配。
具体实施方式
图1示出计算资源分配技术可以在其中使用的计算系统100或数据处理系统100的示例。
系统100包括数据源102,该数据源可包括一个或多个数据源,诸如存储设备或到在线数据流的连接,数据源中的每一个可以以各种格式(例如,数据库表、电子表格文件、平面文本文件或大型机使用的本机格式)中的任一种存储或提供数据。执行环境104包括执行模块112、资源管理器120、以及资源请求模块122。例如,在合适的操作系统诸如UNIX操作系统版本的控制下,执行环境104可以被托管在例如一台或多台通用计算机(每一个具有中央处理单元CPU)上。例如,执行环境104可以是多节点并行计算环境,其被托管在使用多个中央处理单元(CPU)或处理器核的计算机系统的配置上,或者是本地的(例如,多处理器系统诸如对称多处理(SMP)计算机),或者是本地分布式的(例如,作为集群耦接的多个处理器或大规模并行处理(MPP)系统),或者是远程的或远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多个处理器),或其任何组合。
如整个本申请中使用的,被分配给一个或多个计算机程序(诸如,一个或多个数据处理图)的术语“计算资源”的一些示例包括对计算系统存储器(诸如,主存储器)的一部分的访问、对计算系统100的数据存储(诸如,存储在盘片上的文件数据)的访问、以及对计算系统100的所需量的处理能力(诸如,对CPU的访问)的访问中的一个或多个。在整个本申请中,被分配给计算机程序(诸如,数据处理图)的术语“计算资源”可更具体地包括对执行环境104可访问的存储器(诸如,主存储器)的一部分的访问、对执行环境104可访问的数据存储(诸如,数据源102或数据存储116)的访问、以及对执行环境104的所需量的处理能力的访问(例如,对执行环境104可访问的CPU或虚拟核的访问)中的一个或多个。
数据存储系统116可访问执行环境104和可选的开发环境118。开发环境118是一种用于开发计算机程序诸如本文所提及的数据处理图的系统。数据存储系统116对于执行环境104可以是本地的,例如,存储在连接到托管执行环境104的计算机的存储介质(例如,硬盘驱动器)上,或者可以远离执行环境104,例如,被托管在远程系统(例如,大型机)上,该远程系统通过远程连接(例如,由云计算基础设施提供)与托管执行环境104的计算机通信。
例如,在名称为“Managing Parameters for Graph-Based Applications(为基于图的应用管理参数)”的美国公开号2007/0011668中更详细地描述了此种用于开发基于图的计算的环境,该公开通过引用并入本文。在名称为“EXECUTING COMPUTATIONS EXPRESSEDAS GRAPHS(执行表示为图的计算)”的美国专利5,966,072中描述了一种用于执行此类基于图的计算的系统,该专利通过引用并入本文。例如,根据该系统制成的数据处理图提供了用于将信息输入和输出由图组件表示的各个过程、用于在过程之间移动信息、以及用于为过程限定运行顺序的方法。该系统可以包括从任何可用方法中选择过程间通信方法的算法(例如,根据图的链路的通信路径可以使用TCP/IP或UNIX域套接字,或者使用共享存储器以在过程之间传递数据)。
执行模块112根据一个或多个计算机程序114(诸如一个或多个数据处理图114)使用由资源管理器120分配的计算资源处理来自数据源102的数据,以产生可以被存储回数据源102中、或存储在数据存储系统116中、或以其他方式使用的输出数据。提供数据源102的存储设备对执行环境104可以是本地的,例如,被存储在连接到托管执行环境104的计算机的存储介质(例如,硬盘驱动器108)上,或者可以远离执行环境104,例如,被托管在远程系统(例如,大型机110)上,该远程系统通过远程连接(例如,由云计算基础设施提供)与托管执行环境104的计算机通信。在一些示例中,数据源102包括一个或多个(例如,不同的)数据库系统形式,该数据库系统包括可被组织为具有用于对应字段(也称为“属性”或“列”)的值(可能包括空值)的记录的数据。
资源管理器120在执行环境104上调度一个或多个计算机程序114(诸如一个或多个数据处理图114)的执行,并且管理将计算系统的计算资源,或者更具体地,执行环境的计算资源分配给计算机程序或数据处理图114。如下面更详细描述的,对于包括程序部分的计算机程序,诸如包括多个数据处理组件的数据处理图,资源请求模块122与资源管理器120交互以将计算资源分配给程序部分(诸如数据处理组件),使得当另一个程序部分组件缺乏计算资源时,没有一个程序部分或数据处理组件被分配比其需要更多的计算资源。
一个或多个计算机程序114,诸如一个或多个数据处理图114可以以各种方式被配置或被编程,使得其不同部分(例如,程序部分诸如数据处理图的数据处理组件)与要分配以在运行时间使用的计算资源的特定的(例如,不同的)目标数量相关联。可以基于对应程序部分正确或完全执行所有的其一个或多个实例所需要的计算资源的最小需要数量来确定目标数量,例如,以完全处理(没有失败)与对应程序部分相关联的或要由对应程序部分处理的给定量的输入数据,并且/或者在给定输入数据上在无执行失败的情况下执行与实例相关联、由程序部分实施并与输入数据相关联的所有数据处理任务。计算资源的最小需要数量可以是当要执行实例的程序部分时需要并行消耗的与程序部分相关联的CPU、虚拟核和/或主存储器的部分的最小数量。如整个本申请中使用的,这些计算机程序114可以是在运行时间期间处理数据(诸如从数据源102接收的数据)的数据处理程序。此种数据处理程序的一个示例是如整个本申请中提到的数据处理图114(其也可以称为“数据流图”),其可以由包括顶点的有向图(表示数据处理组件或数据集)表示,通过有向链路或数据流连接(表示工作元素即数据的流)在顶点之间连接。图2B中示出了数据处理图114的示例225。在图2B中,数据处理组件是C1到C5(也标记为226、228、230、232和234)。链路或数据流连接在图2B中标记为226a、228a、228b、230a和232a。如整个本申请中描述的计算机程序的程序部分也可以通过数据流连接来连接,该数据流连接提供程序部分之间的数据的流动。在本申请中选择数据处理组件或程序部分的数量以及链路或数据流连接的数量仅用于例示性目的,并且各自可以是任何其他数量。除这些链路或数据流连接外,一些数据处理图还可以具有用于确定和/或调整数据处理组件之间的数据流的控制流连接。在整个本申请中描述的数据处理图中,数据处理组件可以是程序部分,并且可以根据它们的链路或数据流连接相互关联或相互依赖。数据处理组件可以被单独授权用于执行的计算资源。在计算机程序的其他示例中,程序部分是计算机程序内的子模块或其他数据处理实体,其被单独地授权用于执行的计算资源。如整个本申请中描述的,程序部分诸如数据处理组件被认为是“相互关联的或相互依赖的”,其程度是它们所属的要执行的整个计算机程序诸如数据处理图的能力取决于要执行的各个程序部分的能力。在示例中,如果程序部分中的一个不能执行,则它们所属的整个计算机程序不能执行。此种相互关联或相互依赖的程序部分也可以针对执行彼此依赖。例如,一个程序部分可以接收来自另一程序部分的数据或向另一程序部分提供数据。而且,虽然程序部分诸如数据处理组件被单独地授权计算系统的计算资源,但是它们可以以各种其他方式重叠、相互关联或相互依赖(例如,竞争计算资源的有限供应)。如整个本申请中使用的,术语“程序部分”(或“数据处理组件”)可以是一段软件代码(也称为“编程代码”),其中,计算机程序(或数据流图)可以由其程序部分(或数据处理组件)形成。
参考图2A,在上面图1的情境中描述的计算系统100/数据处理系统100的更特定的表示包括执行环境104、数据源102、以及用于使用执行环境104的计算资源处理来自数据源102的数据的计算机程序或数据处理图224。
执行环境104包括资源请求模块122、资源管理器120、以及执行模块112。除其他特征之外,执行模块112包括可以跨多个主机(例如,计算集群诸如服务器)分布和/或分配给多个主机的计算资源。在图2A中,有三个主机:第一主机H1 236、第二主机H2 238、以及第三主机H3 240。每一主机包括有限量或数量的计算资源,它们合起来包括执行模块112的总计算资源。由资源管理器120管理和分配的计算资源的示例可以包括以下中的任一个:主机的处理器的使用份额(例如,指定为映射到一个或多个多核处理器的物理核的虚拟核)、主机的易失性存储器的一部分(例如,指定主机的主存储器空间的数量)、主机的非易失性存储器的一部分(例如,指定为主机的硬盘驱动器存储空间的数量)、或通信信道的使用份额(例如,主机的以太网接口的带宽的一部分)。计算资源的单一单元237可以包括多种类型的计算资源中的一种或多种,诸如指定数量的CPU或虚拟核,以及指定量的主要/主存储器或指定数量的(虚拟)主要/主存储器部分。CPU可以是处理器。
在图2A中,为简化对本文描述的计算资源分配方法的说明,主机的整个计算资源由一个或多个计算资源单元237(在图2A中的主机内示出为方形)形成,其都被示为具有相同的粒度(即,可以被授权的最小大小)。然而,应注意,计算资源不必被分割成具有固定且相等粒度的单元237,而是可以被分割成各种粒度的单元或者使用其他替代性的方法来划分。此外,为了简化本文描述的计算资源分配方法的说明,图2A的执行模块112中的所有主机都被示为具有相同数量(即,16)的计算资源单元237。然而,应注意,通常,不同的主机可具有不同量的计算资源,例如,通过具有不同数量的计算资源单元237。
资源管理器120接收用于计算资源的请求,并基于执行模块112的主机236、238、240中的可用计算资源的量来授权或拒绝请求。此资源管理器120的一个示例包括“HadoopYARN”资源管理器,其能够接收用于执行计算机程序(或程序部分)的计算资源的请求,并且如果足够的计算资源可用,则向“容器”,例如用于程序部分的每一实例的一个容器授权供计算机程序使用的一些数量的计算资源单元。容器可以被实施为用于包含特定数量的计算资源,或者包含标识特定数量的计算资源的任何信息或其任何组合的任何合适的数据结构。然后,计算机程序可以使用授权的容器中的计算资源来执行。在一些示例中,计算机程序可以从资源管理器120同时请求计算资源的多个容器(例如,用于运行程序的一部分的并发实例239,或用于运行程序的多个部分的多个容器)。如果足够的资源可用于资源管理器120以将所有请求的多个容器授权给计算机程序,则它将执行此操作。否则,基于可用资源,资源管理器120可以仅授权请求的容器中的一些(即,小于请求的容器总数的整数个容器),或者资源管理器120可以不授权请求的容器中的任一个。在一些实施方式中,与给定容器相关联的所有计算资源都得自单一主机。替代性地,在其他实施方式中,给定容器的资源可以得自多个主机。
如以下更详细描述的,资源请求模块122以确保由计算机程序诸如数据处理图224施加的多个限制被满足和/或以更平衡的方式被满足的方式与资源管理器120交互。
数据处理图224是用于处理从数据源102接收的数据的计算机程序的规范或示例。图2B示出数据处理图224的基于图的规范的示例225,其包括多个(例如,相互关联或相互依赖的)数据处理组件,该数据处理组件包括第一数据处理组件C1 226、第二数据处理组件C2228、第三数据处理组件C3 230、第四数据处理组件C4 232、以及第五数据处理组件C5 234。
通常,整个本申请中描述的数据处理图的每一数据处理组件可以与一个或多个限制相关联。此限制可以是指定与数据处理组件的实例239的并行化相关的限制的“布局”。布局中指定的限制中的一个可以是“布局类型”,其可以采用包括静态(S)布局类型、固定深度动态布局(FDL)类型、以及可变深度动态布局(VDL)类型的多个值中的一个。一个或多个限制诸如不同布局类型可以指定用于数据处理组件的组件实例的目标数量和/或执行位置,该数据处理组件的组件实例在数据处理组件的执行期间是可执行的或要被并行执行。对于每一数据处理组件,基于要通过数据处理组件进行处理的数据元素的相关联数量来确定组件实例的目标数量。
这也意味着,当目标数量的组件实例要被执行时,这些限制诸如布局直接确定需要并行消耗的计算资源的目标数量(例如,虚拟核或主存储器的量)。换句话说,这些组件实例中的每一个将消耗计算资源,使得具有特定布局的数据处理组件所需的计算资源的目标数量直接由该组件的组件实例的相应目标数量确定或与之相关。如整个本申请中使用的,用于特定程序部分诸如特定数据处理组件的术语“计算资源的目标数量”可以等于程序部分的实例的目标数量乘以程序部分的实例中的每一个所需的计算资源的数量的乘积。
非常通常地,如果整个本申请中描述的数据处理组件中的一个具有静态布局类型,则该数据处理组件具有预定的固定目标数量的组件实例239,该组件实例需要在执行模块112上执行以用于数据处理图224成功运行(例如,在没有失败的情况下执行所有相关联的数据处理任务)。具有静态布局类型的数据处理组件还需要在执行模块112的一个或多个主机236、238、240的预定集合上执行其组件实例239。
静态布局类型的潜在优点是计算的本地性。本地性是指将用于数据处理组件(例如,实例将在其上执行的主机的核)的某些计算资源设置在与其他计算资源(例如,用于实例的数据将存储在其中的主机的存储器)相同的主机上的能力。动态布局类型(FDL或VDL)可以分派实例以在与存储要通过该实例操作的数据的主机不同的主机上执行,这可以仅通过折衷降低的本地性而提供提高的灵活性。但是,如果本地性对于特定计算不是关键的,那么这种折衷可能是值得的。
如果整个本申请中描述的数据处理组件中的一个具有FDL类型,则该数据处理组件具有预定的固定目标数量的组件实例239,该组件实例需要在执行模块112上执行以用于数据处理图224成功运行(例如,在没有失败的情况下执行所有相关联的数据处理任务)。具有FDL类型的数据处理组件的组件实例执行的位置(即,在执行模块112的哪个主机236、238、240上)是没有限制的。
如果整个本申请中描述的数据处理组件中的一个具有VDL类型,则该数据处理组件具有动态确定的目标数量的组件实例239(其可以在运行时间确定),其中,为了数据处理图224成功运行(例如,在没有失败的情况下执行所有相关联的数据处理任务),需要在执行模块112上执行至少一个组件实例。具有VDL类型的数据处理组件的组件实例执行的位置(即,在执行模块112的哪个主机236、238、240上)是没有限制的。
动态布局类型(FDL或VDL)的潜在优点是即使在特定(例如,本地)主机236、238、240上没有可用的计算资源,只要在集群中的一些主机236、238、240上有可用的计算资源,计算也能够启动的灵活性。另一个潜在的优点是,如果由于一个或多个主机236、238、240的失败使计算失败,则计算能够在主机236、238、240的不同集合上重新启动。
VDL类型相对于FDL类型的潜在优点是,即使没有与所期望的一样高的数量的计算资源,计算仍然能够启动。FDL类型相对于VDL类型的潜在优点是,固定并行度(即,组件实例的数量)以便限制通过等待更大并行度的请求被满足所引起的启动时间延迟的能力。
在图2A和图2B的示例性数据处理图224、225中,示例性第一组件226具有静态布局类型并且需要在执行模块112的第一主机236上执行两个组件实例239(在相同或不同的计算资源单元237中执行)。示例性第二组件228具有FDL类型并且需要在执行模块112上运行三个组件实例239,其中组件实例运行的位置(即,在执行模块112的哪个主机236、238、240上)没有限制。示例性的第三组件230、第四组件232、以及第五组件234都具有VDL类型,因此仅需要在执行模块112上执行单一组件实例以用于数据处理图执行,虽然如果在执行模块112上足够的计算资源可用,则可以执行附加的组件实例。第三组件230、第四组件232、以及第五组件234的组件实例的执行位置(即,在执行模块112的哪个主机236、238、240上)没有限制。
数据处理图224、225中的数据处理组件226、228、230、232、234中的每一个被配置用于处理来自数据源102的数据,诸如来自数据源102中的数据集的数据元素(例如,块、文件或记录)。在一些示例中,块是包括一个或多个记录的文件中的数据的一部分。在图2A中,第一组件226处理来自第一数据集242的第一数据元素252,第二组件C2 228处理来自第二数据集244的第二数据元素254,第三组件C3 230处理来自第三数据集246的第三数据元素256,第四组件C4 232处理来自第四数据集248的第四数据元素258,以及第五组件C5 234处理来自第五数据集250的第五数据元素260。在以下所描述的示例中,系统100的一部分(例如,资源请求模块122)分析与每个组件相关联的数据集,以基于数据元素的数量确定用于不同组件的实例的目标数量,并因此确定计算资源的目标数量。但是,在其他示例中,计算资源的目标数量不仅仅基于相关联的数据集中的数据数量,而可以替代地(或者还)取决于其他因素,诸如显式或隐式用户需求、历史或估计性能数据、或其组合。注意,不需要每一数据处理组件226、228、230、232、234与不同的数据集相关联。例如,多个数据处理组件226、228、230、232、234可以全部处理来自(多个)相同数据集中的一个或多个的数据。
换句话说并且总结了在上面图1和图2A的情境中描述的计算系统100,计算系统100包括:包括一个或多个数据的源的数据源102;包括执行模块112、资源管理器120和资源请求模块122的执行环境104,其中,执行环境104被托管在一台或多台计算机上,其中,执行模块112被配置用于根据一个或多个计算机程序114诸如一个或多个数据处理图224使用由资源管理器120分配给一个或多个计算机程序114的执行环境104的计算资源,处理来自数据源102的数据以产生输出数据,其中,计算机程序114包括多个(例如,相互关联或相互依存)程序部分,诸如,数据处理图224的多个(例如,相互关联或相互依存)数据处理组件226、228、230、232、234,其通过多个程序部分实现对从数据源102流动的数据执行的数据处理任务以产生输出数据,可访问执行环境104的数据存储116,其中,计算机程序114及其多个程序部分由存储在数据存储116中的编程代码和/或数据结构指定,其中多个程序部分通过用于数据流的诸如链路226a、228a、228b、230a、232a之类的一个或多个数据流连接在程序部分之间连接,该数据流连接由编程代码和/或数据结构指定,其中,执行模块112被配置用于读取存储的编程代码和/或数据结构,其中,资源管理器120被配置用于从资源请求模块122接收用于计算资源的请求,并基于执行环境104中可用的计算资源的量来授权或拒绝所接收的请求,并且可选地,其中,资源管理器120进一步被配置用于通过执行模块112调度和监视一个或多个计算机程序114的执行,并且其中,资源管理器120进一步被配置用于将与所请求的和授权的请求相关联的执行环境的计算资源分配给多个程序部分,并且资源请求模块122和资源管理器120被配置用于彼此交互,使得执行本申请中所描述的方法中的任一种,例如,使得多个程序部分的每一程序部分具有在没有执行失败的情况下对来自数据源102的数据中的一部分执行以产生输出数据的程序部分的实例,使得由多个程序部分实现的所有数据处理任务在没有执行失败的情况下对来自数据源102的数据执行,或使得要通过计算机程序进行处理的来自数据源102的给定量的数据通过计算机程序完全处理(例如,没有执行失败)以产生输出数据。
如整个本申请中使用的,数据处理组件的“组件实例”,或更通常地,程序部分的“实例”是诸如在主存储器的一部分中的当前消耗计算资源的数据处理组件、或程序部分的可执行副本。
1资源分配
给定与在数据处理图224中的组件相关联的布局限制,示例性数据处理图224可仅在以下情况下成功运行或完全运行:在执行模块112的第一主机236上执行第一数据处理组件226的两个组件实例,在执行模块112上执行第二数据处理组件228的三个组件实例,以及在执行模块112上执行第三数据处理组件230、第四数据处理组件232和第五数据处理组件234中的每一个的至少一个组件实例。数据处理图的成功运行可以特征在于,在无执行失败的情况下,对来自数据源102的数据执行所有组件实例以产生输出数据。
如果资源请求模块122知道数据处理图224的数据处理组件的总数的组件实例所需的计算资源以及执行模块112中可用的计算资源,则可使用封包优化问题的解决方案,经由资源管理器120执行分配用于数据处理图224的计算资源的任务。
然而,通常来说并不是资源请求模块122知道执行模块112中可用的计算资源的情况。相反,资源请求模块122请求来自资源管理器120的计算资源,并等待查看所请求的计算资源是否被授权。由于缺乏对执行模块112中可用的计算资源的认识,资源请求模块122可能过度分配数据处理图224的某些VDL类型数据处理组件的资源需求并在进行此操作时,在将任何计算资源分配给数据处理图224的其他VDL类型数据处理组件之前耗尽执行模块112中可用的计算资源(即,缺乏),或通过用分配不足的数据处理组件产生瓶颈而浪费过度分配的数据处理组件的计算资源(即,不平衡执行)。
1.1计算资源缺乏
例如,在为数据处理图224分配计算资源的一种方法中,资源请求模块122首先请求第一静态布局类型组件226和第二FDL类型组件228所需的计算资源。在该示例中,资源管理器120能够为第一组件226和第二组件228分配所需的计算资源。
然后,资源请求模块122请求用于在执行模块112上执行第三VDL类型组件230的目标数量的实例(4个实例)(而不是仅请求足够的计算资源在执行模块112上执行第三组件230的所需的单一实例)的计算资源。资源管理器120能够为第三组件230的4个实例分配所请求的计算资源。接下来,资源请求模块122请求执行第四组件232的单一实例所需的计算资源。在该示例中,资源管理器120指示没有足够的资源用于分配在执行模块112上执行第四组件232的单一实例所需的计算资源。
在上述示例中,通过为第三组件230过度分配可选的目标计算资源,资源请求模块122基本上使数据处理图224的第四组件232和第五组件234缺乏任何计算资源。结果,第四组件232和第五组件234甚至不能在执行模块112上执行单一组件实例。由于数据处理图224需要在计算系统112上执行所有其VDL类型组件的至少一个实例以成功运行,因此数据处理图不能成功运行。然而,如果第三组件230仅被分配用于单一实例的计算资源,则对于第四组件232和第五组件234中的每一个的单一实例已经足够。在这个意义上,第三组件230被过度分配了计算资源。
1.2计算资源请求算法
参考图3,资源请求算法由计算系统100诸如由资源请求模块122实现,并且下面将针对作为计算机程序的示例的数据处理图和针对作为程序部分的示例的数据处理组件进行描述。该算法避免了数据处理组件的上述缺乏,并且以平衡的方式公平且合理的将计算资源分配给VDL类型组件。该算法接受数据处理图224的数据处理组件362和来自数据源102的数据集364作为输入,并处理输入以将计算资源分配给数据处理组件362以用于处理来自数据集364的数据,包括公平合理地将计算资源分配给VDL类型组件230、232、234,并且避免VDL类型组件230、232、234缺乏计算资源。在第一步骤370之前的一个或多个预处理步骤可以可选地包括在算法中,并且可以包括识别(例如,基于与数据处理组件中的每一个相关联的元数据)在数据处理图224的所接受的数据处理组件362中的任何静态、FDL和VDL数据处理组件。
在第一步骤370中,分析数据处理组件362中的每一个以确定在执行模块112上执行数据处理组件的组件实例所需的计算资源372的量。也就是说,分析数据处理组件362中的每一个以确定编程代码和/或定义数据处理组件的数据结构所需的计算资源372的量,以用于数据处理组件的一个组件实例239的(完全)执行。对于每一静态布局类型数据处理组件和每一FDL类型数据处理组件,可以确定在执行数据处理组件期间要执行的或可执行的组件实例的目标数量,这产生用于执行这些数据处理组件中的每一个所需的计算资源的目标数量。在第二步骤366中,对于每一VDL类型数据处理组件(例如,图2A、图2B中的数据处理组件230、232、234),与数据处理组件相关联或要由数据处理组件进行处理的(多个)数据集的数据的量或数据项的数量用于确定与数据处理组件相关联的或由数据处理组件所需的组件实例239、368(有时称为“层(plys)”)的目标数量,可以确定在数据处理组件的执行期间要执行或可执行的组件实例的目标数量,这产生执行这些数据处理组件的每一个所需的计算资源的目标数量。在一些示例中,实例368的目标数量和与该组件相关联的(多个)数据集的数据项的数量相同。
在第三步骤374中,对于数据处理组件362中的每一静态布局类型组件226的每一所需的组件实例,资源请求模块122从资源管理器120请求“容器”,其包括来自用于组件实例的(多个)所需主机H1-H3的所需计算资源。如果请求是成功的或满足的,则资源管理器120用包括所需计算资源的容器响应请求中的每一个。在第四步骤376,如果未满足在第三步骤374中发送到资源管理器120的请求中的任一个(例如,如果资源管理器120在预定时间间隔内没有响应),则算法中止,因为在执行模块112中没有足够的可用计算资源用于执行数据处理图224。也就是说,如果未满足请求中的任一个,则无法运行数据处理图。如果满足在第三步骤374中发送到资源管理器120的所有请求,则算法前进到第五步骤378。
在第五步骤378中,对于在数据处理组件362中的每一FDL类型组件228的每一所需组件实例,资源请求模块122从资源管理器120请求包括用于组件实例的所需计算资源的容器。如上所述,FDL类型组件可以使用来自执行模块112的主机中的任一个的计算资源来执行。在第六步骤380中,如果未满足在第五步骤378中发送到资源管理器120的请求中的任一个,则算法中止,因为在执行模块112中没有足够的可用计算资源用于执行数据处理图224。也就是说,如果未满足请求中的任一个,则无法运行数据处理图。如果满足在第五步骤378中发送到资源管理器120的所有请求,则算法前进到第七步骤382。
在第七步骤382中,对于在数据处理组件362中的每一VDL类型组件230、232、234,资源请求模块122从资源管理器120请求包括用于组件的单一组件实例的所需计算资源的容器。在第八步骤384中,如果不满足在第七步骤382中发送到资源管理器120的请求中的任一个,则算法中止,因为在执行模块112中没有足够的可用计算资源用于执行数据处理图224。如果满足在第七步骤382中发送到资源管理器120的所有请求,则分配足够的计算资源以确保数据处理图224可以执行。特别地,在成功完成第七步骤382之后,该算法确保分配用于任何静态布局类型组件和任何FDL类型组件的所需计算资源,并且至少一些计算资源被分配给VDL类型组件中的每一个。该算法然后进行到第九步骤386。
在第九步骤386中,在数据处理组件362中的所有VDL类型组件230、232、234根据它们的满足率进行排序,其中,术语“满足率”是已分配给对应组件的对应组件的计算资源的目标数量的百分比。特别地,满足率是先前请求的(和假定授权的)计算资源“#授权(#granted)”的数量除以其相关联计算资源的目标数量“#目标(#target)”。例如,如果VDL类型组件具有设置为运行其自身的十个组件实例的目标,并且具有先前请求(并且被授权)的两个组件实例,则该组件被满足百分之二十,即具有百分之二十的满足率。注意,在此示例中,假定特定组件的每一实例需要相同数量的计算资源(指定为多个容器),但在其他示例中,相同组件的不同实例可能需要不同数量的计算资源。然后,授权的容器数量确定可以在运行时间执行的组件实例的数量。
一旦VDL类型组件根据其满足率进行排序,则识别最不满足的VDL类型组件(称为组件A)和第二最不满足的组件(称为组件B)。对于识别最不满足的组件中的平局,可以为最不满足的组件中的每一个执行以下操作。识别第二最不满足的组件中的平局不重要,因为将仅使用其满足率。对于最不满足的组件,资源请求模块122请求用于最不满足的组件的数量N的容器的一个或多个容器,如果被授权,则“部分请求”将引起最不满足的组件比第二最不满足的组件更满足。在一些示例中,N根据以下等式确定:
如果因为完全满足所有组件(即,满足率为1)而出现平局,则算法完成。
在第十步骤388中,如果不满足资源管理器120在第九步骤386中请求的容器中的任一个,则算法完成。如果满足第九步骤386中资源管理器120请求的所有容器,则算法循环回到第九步骤386。第九步骤386和第十步骤388重复运行直到完全满足所有数据处理组件362,即具有100%的满足率,或者不满足对用于VDL类型组件中的任一个的容器的请求。
在其他示例性实施方式中,资源请求算法的步骤中的一些可以以不同的顺序执行或者可以消除一些步骤。例如,步骤374、378和382的请求可以以不同的顺序执行,或者组合成单一请求。
在一些示例性实施方式中,上述算法在将请求中的任一个提交给资源管理器120之前制定用于容器的所有请求。一旦被制定,所有请求例如一次全部地一起提交,并且由资源管理器120根据使用上述算法提交的请求的顺序按顺序处理。例如,请求可以与优先级相关联或者包括指定优先级的优先级标签(例如,指定主要优先级、次要优先级和第三优先级等的元数据),这引起资源管理器120以通过优先级给出的顺序评估请求用于授权。换句话说,优先级可以限定要由资源管理器120访问和使用的评估限制,限定资源管理器120评估请求用于授权所依据的顺序,其中,根据评估限制,如果由计算资源管理器授权请求中的所有更高优先级的和/或先前提交的一个或多个请求,则请求仅由资源管理器120评估用于授权。例如,资源管理器120可以首先访问包括在所有接收的请求中的优先级标签。然后,资源管理器120可以根据通过优先级标签给出的优先级来识别这些请求的顺序。然后,如果所有更高优先级的和/或先前提交的请求(如果有的话)由资源管理器120授权并且仅当如此时(否则当前考虑的请求甚至不被评估计算资源的授权),则资源管理器120可以根据所识别的顺序应邀请求,确定当前所考虑的请求,评估计算资源是否仍然可用于分配给与顺序中的当前所考虑的请求相关联的程序部分。如果此类计算资源仍然可用,则该当前考虑的请求被授权。然而,如果对于当前考虑的请求,评估结果是没有足够的计算资源可用于分配给与在顺序中的当前所考虑的请求相关联的程序部分,则当前考虑的请求不被授权(即,被拒绝)。每一程序部分可以与当前满足率相关联,该满足率是被认为由计算资源管理器模块已经或者迄今为止分配给对应程序部分的对应程序部分的计算资源的确定目标数量的程度,其中,每当附加计算资源已被或被认为被分配给对应程序部分时(例如,通过资源管理器120授权相关联的请求),满足率可以被更新。
1.3示例
参考图4至图14,图3的算法被应用于准备执行数据处理图224的图1或图2的系统100。参考图4,在算法的第一步骤370中,资源请求模块122分析数据处理图224的数据处理组件,以确定用于数据处理组件中的每一个的计算资源需求。作为第一步骤370的结果,资源请求模块122确定第一数据处理组件226的每一组件实例需要五个单元237的计算资源,第二数据处理组件228的每一组件实例需要三个单元237的计算资源,第三数据处理组件230的每一组件实例需要四个单元的计算资源,第四数据处理组件232的每一组件实例需要五个单元237的计算资源,并且第五数据处理组件234的每一组件实例需要两个单元237的计算资源。
参考图5,在算法的第二步骤366中,资源请求模块122分析与每一VDL类型组件相关联的数据集246、248、250,以确定用于组件的实例的目标数量。在一些示例中,在与组件相关联的数据集中包括的数据项的数量确定用于组件的实例的目标数量。在图5中,与第三组件230相关联的第三数据集246包括四个数据项256。因此,资源请求模块122确定用于第三组件230的组件实例的目标数量等于四。与第四组件232相关联的第四数据集248包括两个数据项258。因此,资源请求模块122确定用于第四组件232的组件实例的目标数量等于二。与第四组件234相关联的第五数据集250包括十个数据项260。因此,资源请求模块122确定用于第五组件234的组件实例的目标数量等于十。
参考图6,在算法的第三步骤374中,资源请求模块122与资源管理器120交互以为第一静态布局类型组件226分配计算资源。为此,资源请求模块122向资源管理器120发送用于来自第一主机236的两个容器(即,一个容器用于组件的每一所需组件实例)的请求690,每一容器具有五个计算资源单元237的大小。在图6中,资源管理器120在第一主机236上分配十个计算资源单元237,并用指示其能够分配所请求的计算资源的消息692进行响应而因此满足请求690。在两个容器的情况下,每一个容器包括为第一组件226分配的五个计算资源单元,第一组件226被100%满足,如数据处理图224执行所需要的。算法的第四步骤376确定满足请求690,并因此使算法前进到算法的第五步骤378。
参考图7,在算法的第五步骤378中,资源请求模块122与资源管理器120交互以为第二FDL类型组件228分配计算资源。为此,资源请求模块122向资源管理器120发送请求790,其用于任何主机236、238、240中的任一个的三个容器(即,一个容器用于组件的每一所需组件实例),每一容器具有三个计算资源单元的大小。在图7中,资源管理器120在第一主机236上分配三个计算资源单元237,在第二主机238上分配三个计算资源单元,并在第三主机240上分配三个计算资源单元。然后,资源管理器120用指示其能够分配所请求的计算资源的消息792进行响应并因此满足请求790。在三个容器的情况下,每一容器包括为第二组件228分配的三个计算资源单元237,第二组件228被100%满足,如数据处理图224执行所需。算法的第六步骤380确定满足请求790,并因此使算法前进到算法的第七步骤382。
参考图8至图10,在算法的第七步骤382中,资源请求模块122与资源管理器120交互以为第三VDL类型组件230、第四VDL类型组件232、以及第五VDL类型组件234中的每一个的单一组件实例分配资源。
在图8中,资源请求模块122通过向资源管理器120发送用于具有四个计算资源单元237的大小的单一容器的请求890,请求分配用于第三VDL类型组件230的单一组件实例的计算资源。资源管理器120在第三主机240上分配四个计算资源单元237,并然后用指示其能够分配所请求的计算资源的消息892进行响应并因此满足请求890。在包括分配用于第三组件230的四个计算资源单元的一个容器(在四个容器的目标数量中)的情况下,第三组件230被满足25%。
在图9中,资源请求模块122通过向资源管理器120发送用于具有五个计算资源单元237的大小的单一容器的请求990,请求为第四VDL类型组件232的单一组件实例分配计算资源。资源管理器120在第二主机238上分配五个计算资源单元237,并然后用指示其能够分配所请求的计算资源的消息992作为响应并因此满足请求990。在包括分配用于第四组件232的五个计算资源单元的一个容器(在两个容器的目标数量中)的情况下,第四组件232被满足50%。
在图10中,资源请求模块122通过向资源管理器120发送用于具有两个计算资源单元237的大小的单一容器的请求1090,请求为第五VDL类型组件234的单一组件实例分配计算资源。资源管理器120在第二主机238上分配两个计算资源单元227,并然后用指示其能够分配所请求的计算资源并因此满足请求1090的消息1092作为响应。在包括分配用于第五组件234的两个计算资源单元的一个容器(在十个容器的目标数量中)的情况下,第五组件234被满足10%。
算法的第八步骤384确定为VDL类型组件230、232、234中的每一个的单一组件实例成功分配计算资源,并因此使算法前进到算法的第九步骤386。
在完成第七步骤382和第八步骤384时,将足够的计算资源分配给数据处理图224的数据处理组件,以确保每一数据处理组件具有至少一个可以执行的组件实例,使得数据处理图224可以在执行模块104上执行。然后,算法的第九步骤386和第十步骤388被重复运行以公平且适当地将剩余的计算资源分配给第三组件230、第四组件232和第五组件234,如图11至图14所示。
参考图11,在算法的第九步骤386中,资源请求模块122确定第五组件234是最不满足的组件(处于10%的满足率),并且确定第三组件230是第二最不满足的组件(处于25%的满足率)。然后,资源请求模块122确定第五组件234的实例的数量N,如果被授权,则将引起第五组件234比第三组件230更满足:
然后,资源请求模块122向资源管理器120发送用于来自主机中的任一个的两个容器的请求1190,每一容器具有两个计算资源单元的大小。在图11中,资源管理器120在第二主机238上分配两个计算资源单元,并且在第三主机240上分配两个计算资源单元。然后,资源管理器120用指示其能够分配所请求的计算资源的消息1192作为响应并且因此满足请求1190。在三个容器的情况下,每一容器包括分配用于第五组件234的两个计算资源单元,第五组件234被满足30%。第十步骤388确定满足第九步骤386中资源管理器120请求的所有容器,并且算法因此循环回到第九步骤386。
参考图12,在算法的第九步骤386的第二次迭代中,资源请求模块122确定第三组件230是最不满足的组件(处于25%的满足率),并且确定第五组件234是第二最不满足的组件(处于30%的满足率)。然后,资源请求模块122确定第三组件230的实例的数量N,如果被授权,则将引起第三组件230比第五组件234更满足:
然后,资源请求模块122向资源管理器120发送用于来自主机中的任一个的一个容器的请求1290,该容器具有四个计算资源单元的大小。在图12中,资源管理器120在第二主机238上分配四个计算资源单元。然后,资源管理器120用指示其能够分配所请求的计算资源的消息1292作为响应并因此满足请求1290。在包括分配用于第三组件230的四个计算资源单元的单一容器的情况下,第三组件230被满足50%。第十步骤388确定满足第九步骤386中资源管理器120请求的所有容器,并且算法因此循环回到第九步骤386。
参考图13,在算法的第九步骤386的第三次迭代中,资源请求模块122确定第五组件234是最不满足的组件(处于30%的满足率),并且第三组件230(或第四组件232)是第二最不满足的组件(处于50%的满足率)。然后,资源请求模块122确定第五组件234的实例的数量N,如果被授权,则将引起第五组件234比第三组件230更满足:
然后,资源请求模块122向资源管理器120发送用于来自主机中的任一个的三个容器的请求1390,每一容器具有两个计算资源单元的大小。在图13中,资源管理器120在第一主机236上分配两个计算资源单元,并且在第三主机240上分配四个计算资源单元。然后,资源管理器120用指示其能够分配所请求的计算资源的消息1392作为响应并因此满足请求1390。在包括分配用于第五组件234的两个计算资源单元的三个容器的情况下,第五组件234被满足60%。第十步骤388确定满足第九步骤386中资源管理器120请求的所有容器,并且算法因此循环回到第九步骤386。
参考图14,在算法的第九步骤386的第四次迭代中,资源请求模块122确定第四组件232是最不满足的组件(处于50%的满足率),并且第三组件230是第二最不满足的组件(处于50%的满足率)。然后,资源请求模块122确定第四组件232的组件实例的数量N,如果被授权,则将引起第四组件232比第三组件230更满足:
然后,资源请求模块122向资源管理器120发送用于来自主机236、238、240中的任一个的一个容器的请求1490,该容器具有五个计算资源单元237的大小。在图14中,资源管理器120不能在主机中的任一个上的可用计算资源单元中分配五个计算资源单元237,并因此用指示其不能分配所请求的计算资源的消息1492作为响应。第十步骤388确定不满足资源管理器120在第九步骤386中请求的所有容器,并因此算法“完成”并退出。
注意,在一些示例中,由于数据处理组件可以具有不同的计算资源需要,因此算法可能不会在第一次失败的资源分配请求时退出或完成,而是可以替代地尝试为其他VDL类型组件分配额外资源,直到没有一个数据处理组件能够分配任何额外的计算资源。
在一些示例中,每一数据处理组件与不同的布局相关联,但是在其他示例中,可以存在共享相同布局的多个(或甚至所有)组件。在那些后面的示例中,可以通过对多个组件所需的资源求和并请求所得到的资源总和用于多个组件共享来使用本文所描述的相同技术。
已经对计算资源分配描述了各个方面和实施例。本发明还可以(替代性地)由以下编号的条项1至23描述,这些条项也在图15中示出:
根据一般条项1,描述了一种计算机实现的方法(1000),用于分配用于在计算系统中执行具有多个程序部分的计算机程序的计算资源,该方法包括:
对于多个程序部分的每一程序部分,确定(1001)由计算系统执行以用于计算机程序运行所需的程序部分的一个或多个实例的目标数量;
对于多个程序部分的每一程序部分,分析(1002)程序部分以确定执行程序部分的所需的一个或多个实例所需的计算资源的目标数量,其中,多个程序部分的至少一个程序部分具有第一类型,并且多个程序部分的不同的至少一个程序部分具有与第一类型不同的第二类型;
对于多个程序部分的每一程序部分,将程序部分与当前或更新的满足率相关联(1003)和/或以当前或更新的满足率维持该程序部分,该满足率是被认为由计算资源管理器模块已经或者到目前为止分配给对应程序部分的对应程序部分的确定的计算资源的目标数量的程度;
其中,如果多个程序部分中的程序部分的相关联的满足率在多个程序部分的所有程序部分上等于相关联的满足率的最小值,则该多个程序部分中的程序部分是最不满足集合的成员;
向计算资源管理器模块提交(1004)对计算资源的多个请求,其中多个请求包括:
对于第一类型的每一程序部分,具有相关联的主要优先级的第一请求,用于为第一类型的程序部分确定的计算资源的完整的目标数量,以及
对于第二类型的每一程序部分,具有相关联的次要优先级的第二请求,用于小于为第二类型的程序部分确定的完整的确定的计算资源的目标数量,但用于至少与第二类型的程序部分的所需实例的单一实例相关联的计算资源的数量;以及
一个或多个第三请求,第三请求中的每一个具有相关联的第三优先级,并且被提交用作为最不满足集合的成员的第二类型的一个程序部分,并且每一第三请求用于一定数量的计算资源,在该数量的计算资源被分配或被认为分配给第二类型的一个程序部分之后,作为最不满足集合中的成员的多个程序部分的每一程序部分将具有如下满足率,该满足率大于在第三请求中请求的该数量的计算资源已经或被认为分配之前的作为最不满足集合中的成员的一个或多个程序部分的满足率,并且仍然小于一;
以及
接收(1005)如由计算资源管理器模块基于可用的计算资源授权的多个请求的那些一个或多个请求中所请求的到多个程序部分中的程序部分的计算资源的分配或被认为分配的指示,其中,主要优先级、次要优先级和第三优先级限定评估限制,根据该评估限制(i)一个或多个第一请求、一个或多个第二请求和一个或多个第三请求将由计算资源管理器模块按照第一请求在第二请求之前和第二请求在第三请求之前的顺序进行评估用于授权,以及(ii)如果第一请求、第二请求和第三请求都在更高优先级的顺序中,和/或多个请求的先前提交的一个或多个请求由计算资源管理器授权,则第一请求、第二请求和第三请求才由计算资源管理器模块评估授权。
在条项2中,根据条项1的方法,进一步包括:确定存储在数据源中的多个数据集的每一数据集中的数据元素或数据项的数量,其中,多个数据集的每一数据集与多个程序部分中的程序部分相关联。
在条项3中,根据条项2的方法,进一步包括:对于多个程序部分的每一程序部分,基于相关联的确定的数据元素或数据项的数量,确定以多个数据集作为输入数据由计算系统执行以用于计算机程序的运行所需的程序部分的一个或多个实例的目标数量。
根据条项1至3中任一项的条项4,其中,第一类型的至少一个程序部分与固定目标数量的计算资源相关联,并且第二类型的至少一个程序部分与可变的或动态确定的目标数量的计算资源相关联。
根据条项1至4中任一项的条项5,其中,第一类型的至少一个程序部分与固定目标数量的实例相关联,并且第二类型的至少一个程序部分与可变的或动态确定的目标数量的实例相关联。
根据条项4或条项5的条项6,其中,动态确定是在计算机程序运行时间的确定。
根据条项1至条项6中任一项的条项7,其中,多个请求中的至少一些请求与大小彼此不同的计算资源的数量相对应。
根据条项1至条项7中任一项的条项8,其中,一个或多个第三请求各自请求计算资源的数量,该计算资源的数量小于或等于一定数量,使得在第三请求被授权后,在最不满足集合中的每一程序部分将具有仍然小于非最不满足集合的成员的至少一个程序部分的满足率。
根据条项1至条项8中任一项的条项9,其中,一个或多个第三请求各自请求大于或等于一定数量的某个数量的计算资源,使得在第三请求被授权后,在最不满足集合中的每一程序部分将具有与非最不满足集合的成员的至少一个程序部分至少一样大的满足率。
根据条项1至9中任一项的条项10,其中,一个或多个第三请求各自请求大于或等于一定数量的某个数量的计算资源,使得在第三请求被授权后,在最不满足集合中的每一程序部分将具有与非最不满足集合的成员的至少一个程序部分至少一样大的满足率。
根据条项1至条项10中任一项的条项11,该方法进一步包括:存储指定与程序部分的对应程序部分相关联的计算资源的目标数量的信息,其中,每一程序部分使用由计算资源管理器授权的授权计算资源,使得程序部分能够在计算系统中执行。
根据条项11的条项12,其中,存储指定与多个程序部分的对应程序部分相关联的计算资源的目标数量的信息包括:针对至少一个程序部分,至少部分基于用户输入来确定其相关联的计算资源的目标数量。
根据条项1至条项12中任一项的条项13,其中,计算资源分布在多个计算节点上。
根据条项13的条项14,其中,第一类型的一个或多个程序部分中的至少一些需要从多个计算节点的特定一个或多个计算节点获得其被授权的计算资源。
根据条项1至条项14中任一项的条项15,其中,程序部分中的至少一些被配置用于处理来自一个或多个数据源的数据项,并且该方法进一步包括至少部分基于来自一个或多个数据源的数据项,为程序部分中的每一个确定计算资源的目标数量。
根据条项1至条项15中任一项的条项16,其中,用于计算资源的多个请求一次全部提交给计算资源管理器模块,其中,每一请求可以可选地包括指定相关联的主要优先级、次要优先级和第三优先级的优先级标签。
根据条项1至条项16中任一项的条项17,其中,用于计算资源的多个请求以第一请求在第二请求之前和第二请求在第三请求之前的顺序提交给计算资源管理器模块。
根据条项2至条项17中任一项的条项18,进一步包括,至少部分基于数据元素或数据项为程序部分中的每一个确定计算资源的目标数量,并且对于每一程序部分,将与程序部分的单一实例相关联的计算资源添加到与程序部分相关联的计算资源的目标数量,以用于要由程序部分进行处理的每一数据项或数据元素。
根据条项1至条项18中任一项的条项19,包括响应于提交第一请求或第二请求,接收未授权或满足第一请求或第二请求中的一个或多个请求的指示,并且基于响应中止计算机程序的执行。
根据条项1至19中任一项的条项20,其中,第一类型是静态(S)布局类型或固定深度动态布局(FDL)类型,并且当第二类型是可变深度动态布局(VDL)类型时。
根据条项1至20中任一项的条项21,其中,该方法进一步包括:确定多个请求中的一个或多个请求未由计算资源管理模块授权;并且响应于该确定,输出指示与未授权的一个或多个请求相关联的一个或多个程序部分的通知,其中可选地,该通知包括与一个或多个程序部分相关联的当前满足率的指示,该一个或多个程序部分与未授权的一个或多个请求相关联。
在一般条项22中,一种计算机可读介质存储有软件,该软件用于从计算资源管理器请求用于在计算系统中执行具有多个程序部分的计算机程序的计算资源,该软件包括用于使计算机执行条项1至21中任一项方法的指令。
在一般条项23中,提供了一种计算系统,用于从计算资源管理器请求用于在计算系统中执行计算机程序的计算资源,该计算机程序具有多个程序部分,该计算系统包括:存储软件指令的计算机可读介质;以及被配置用于通过使用软件指令执行条项1至21中任一项的方法的至少一个处理器。
2实施方式
上述计算资源分配方法可以例如使用执行适当软件指令的可编程计算系统来实现,或者可以在诸如现场可编程门阵列(FPGA)的合适硬件中或以某种混合形式实现。例如,在程控方法中,软件可以包括一个或多个计算机程序中的在一个或多个程控的或可编程计算系统(其可以是各种体系架构,诸如分布式客户端/服务器、或电网)上执行的程序,该计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户接口(用于使用至少一个输入设备或端口接收输入,并且用于使用至少一个输出设备或端口提供输出)。软件可以包括较大程序的一个或多个模块,例如,提供与对数据处理图的设计、配置、和执行有关的服务的程序。程序模块(例如,数据处理图的元素)可以被实现为数据结构或符合存储在数据储存库中的数据模型的其他组织化的数据。
软件可以以非暂态的形式存储一段时间(例如,动态存储器设备诸如动态RAM的刷新周期之间的时间),诸如使用介质的物理属性(例如,表面凹坑和岸台、磁畴、或电荷)体现在易失性或非易失性存储介质中、或任何其他非暂态介质中。在准备下载指令时,软件可以提供在有形、非暂态介质诸如CD-ROM或其他计算机可读介质(例如,由通用或专用计算系统或设备可读)上,或者可以通过网络的通信介质递送(例如,被编码到传播信号中)到其被执行的计算系统的有形、非暂态介质。处理的一些或全部可以在专用计算机上执行,或者使用专用硬件诸如协处理器或现场可编程门阵列(FPGA)或专用的、专用集成电路(ASIC)。处理可以以分布式方式来实施,其中,由软件指定的计算的不同部分由不同的计算元件执行。每一个此种计算机程序优选地存储在或下载到可由通用或专用可编程计算机访问的存储设备的计算机可读存储介质(例如,固态存储器或介质、或者磁性介质或光学介质)上,以便当由计算机读取存储设备介质以执行本文中描述的处理时,对计算机进行配置和操作。也可以认为本发明的系统被实现为配置有计算机程序的有形非暂态介质,其中,如此配置的介质使得计算机以指定的且预定的方式操作以便执行本文中描述的处理步骤中的一个或多个。
说明书中描述的可选的特征的每一个可以与任何其他可选的特征组合,并且还可以单独组合,或者与其他可选特征组合,与本申请中描述的编号方面、条项或权利要求中的任一个组合。
已经描述了本发明的多个实施例。然而,应当理解,前述描述旨在说明而非限制本发明的范围,本发明的范围由所附权利要求书的范围限定。因此,其他实施例也在所附权利要求的范围内。例如,在不背离本发明的范围的情况下,可以进行各种修改。另外,上述步骤中的一些步骤可以是顺序独立的,并因此可以以与所描述的顺序不同的顺序来执行。

Claims (19)

1.一种用于从计算资源管理器请求用于在计算系统中执行具有多个程序部分的计算机程序的计算资源的方法,该方法包括:
存储指定与该程序部分的对应程序部分相关联的计算资源的目标数量的信息,其中,每一程序部分使用由该计算资源管理器授权的授权计算资源,使得该程序部分能够在该计算系统中执行;以及
计算请求,以作为多个请求集合提交给该计算资源管理器,所述请求针对在该计算系统中执行该计算机程序的计算资源,其中,除初始请求集合之外,每一请求集合将仅当该多个请求集合中的先前提交的一个或多个集合由该计算资源管理器授权以供该多个程序部分使用时才能够由该计算资源管理器进行处理,该计算包括:
形成该初始请求集合,以及
在该初始请求集合之后,形成一个或多个附加请求集合以供该计算资源管理器进行处理,
其中,该附加请求集合中的至少一个请求集合包括用于该多个程序部分的至少一个程序部分的部分请求,该至少一个程序部分在一个或多个程序部分的最不满足集合中,
其中,该多个程序部分中的每一程序部分与其先前请求的计算资源的数量除以其相关联的计算资源的目标数量的对应满足率相关联,
其中,如果程序部分的相关联的满足率在所有的该多个程序部分上是该相关联的满足率的最小值,则该程序部分是该最不满足集合的成员,并且
其中,该部分请求请求一定数量的计算资源,使得在该部分请求被授权后,在该最不满足集合中的每一程序部分将具有如下满足率,该满足率大于在该最不满足集合中的该一个或多个程序部分中的每一个在该部分请求被授权之前的满足率并且仍然小于一。
2.如权利要求1所述的方法,其中,该部分请求请求小于或等于一定数量的计算资源的数量,使得在该部分请求被授权之后,在该最不满足集合中的每一程序部分将具有仍然小于非该最不满足集合的成员的至少一个程序部分的满足率的满足率。
3.如权利要求2所述的方法,其中,该部分请求请求大于或等于一定数量的计算资源的数量,使得在该部分请求被授权之后,在该最不满足集合中的每一程序部分将具有与非该最不满足集合的成员的至少一个程序部分的满足率至少一样大的满足率。
4.如权利要求1所述的方法,其中,该部分请求请求大于或等于一定数量的计算资源的数量,使得在该部分请求被授权之后,在该最不满足集合中的每一程序部分将具有与非该最不满足集合的成员的至少一个程序部分的满足率至少一样大的满足率。
5.如任一项前述权利要求所述的方法,其中,该初始请求集合包括用于每一程序部分的最小请求,其中,每一最小请求请求执行该程序的该对应部分所需的计算资源的最小数量。
6.如任一项前述权利要求所述的方法,其中,所述程序部分中的至少一个与计算资源的固定目标数量相关联,并且所述程序部分中的至少一个与计算资源的可变目标数量相关联,并且用于与计算资源的固定目标数量相关联的每一程序部分的最小请求是与计算资源的完整目标数量相对应的完整请求,并且用于与计算资源的可变目标数量相关联的每一程序部分的最小请求是与少于计算资源的完整目标数量相对应的部分请求。
7.如权利要求6所述的方法,其中,用于与计算资源的可变目标数量相关联的每一程序部分的最小请求是与计算资源的单一单元相对应的部分请求,其中,计算资源的每一可变目标数量是根据计算资源的粒度来限定的,该粒度将计算资源的该完整目标数量分成多个大小相等的单元。
8.如任一项前述权利要求所述的方法,其中,至少一个请求集合中的至少一些请求与彼此大小不同的计算资源的数量相对应。
9.如任一项前述权利要求所述的方法,其中,存储指定与该多个程序部分的对应程序部分相关联的计算资源的目标数量的信息包括:针对至少一个程序部分,至少部分基于用户输入来确定其相关联的计算资源的目标数量。
10.如任一项前述权利要求所述的方法,其中,所述计算资源分布在多个计算节点上。
11.如权利要求10所述的方法,其中,所述程序部分中的至少一些需要其授权的计算资源从该多个计算节点中的特定一个或多个计算节点中获得。
12.如权利要求10或11所述的方法,其中,与该多个请求集合中的每一请求集合的每一请求相关联的计算资源必须从该多个计算节点中的单一计算节点中获得。
13.如任一项前述权利要求所述的方法,其中,所述程序部分中的至少一些被配置用于处理来自一个或多个数据源的数据项,并且该方法进一步包括至少部分基于来自该一个或多个数据源的所述数据项为所述程序部分中的每一个确定计算资源的所述目标数量。
14.如权利要求13所述的方法,其中,至少部分基于来自该一个或多个数据源的所述数据项为所述程序部分中的每一个确定计算资源的所述目标数量包括:针对每一程序部分,对于将要通过该程序部分进行处理的每一数据项,将与该程序部分的单一实例相关联的计算资源添加到与该程序部分相关联的计算资源的目标数量。
15.如任一项前述权利要求所述的方法,其中,该多个请求集合的每一请求集合的每一请求请求该多个程序部分的特定程序部分的单一实例所需的计算资源。
16.如任一项前述权利要求所述的方法,其中,该多个程序部分中的第一程序部分与来自该多个请求集合的多个请求相关联。
17.如任一项前述权利要求所述的方法,进一步包括,响应于该初始请求集合,接收该初始请求集合中的一个或多个请求不被满足的指示,并且基于该响应中止该程序执行。
18.一种存储有软件的计算机可读介质,该软件用于从计算资源管理器请求用于在计算系统中执行具有多个程序部分的计算机程序的计算资源,该软件包括用于使计算系统执行根据权利要求1至17中任一项所述的方法的指令。
19.一种计算系统,用于从计算资源管理器请求用于在该计算系统中执行具有多个程序部分的程序的计算资源,该计算系统包括:
数据存储系统,用于存储指定与所述程序部分的对应程序部分相关联的计算资源的目标数量的信息;以及
至少一个处理器,被配置用于执行如权利要求1至17中任一项所述的方法。
CN201780075655.7A 2016-12-08 2017-12-06 计算资源分配 Active CN110050261B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662431505P 2016-12-08 2016-12-08
US62/431,505 2016-12-08
PCT/US2017/064849 WO2018106772A1 (en) 2016-12-08 2017-12-06 Computational resource allocation

Publications (2)

Publication Number Publication Date
CN110050261A true CN110050261A (zh) 2019-07-23
CN110050261B CN110050261B (zh) 2022-11-25

Family

ID=61656329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780075655.7A Active CN110050261B (zh) 2016-12-08 2017-12-06 计算资源分配

Country Status (7)

Country Link
US (2) US10445137B2 (zh)
EP (1) EP3552104B1 (zh)
JP (1) JP6825103B2 (zh)
CN (1) CN110050261B (zh)
AU (1) AU2017373882B2 (zh)
CA (1) CA3043974C (zh)
WO (1) WO2018106772A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535333A (zh) * 2021-08-12 2021-10-22 北京字节跳动网络技术有限公司 Yarn集群资源调度方法、系统、介质和计算机设备

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697121B (zh) * 2017-10-20 2023-05-05 伊姆西Ip控股有限责任公司 用于向应用分配处理资源的方法、设备和计算机可读介质
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
JP7455813B2 (ja) * 2018-08-28 2024-03-26 ノボ・ノルデイスク・エー/エス コンテナベースの医薬品投与ガイダンスを提供して、糖尿病を治療するためのシステムおよび方法
US11836505B2 (en) * 2019-05-07 2023-12-05 Ab Initio Technology Llc Dynamic distribution of container images
CN112073498B (zh) * 2020-09-01 2022-09-09 北京字节跳动网络技术有限公司 一种资源分配方法及装置
US20240004720A1 (en) * 2020-12-01 2024-01-04 Nippon Telegraph And Telephone Corporation Computational resource cluster management device, computational resource cluster management method, and computational resource cluster management program
JP2024522297A (ja) * 2021-06-04 2024-06-13 アビニシオ テクノロジー エルエルシー 計算リソースの動的な割り当て

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549964A (zh) * 2002-01-04 2004-11-24 微软公司 管理计算系统中协处理器的计算资源的方法和系统
US20050210262A1 (en) * 2004-03-19 2005-09-22 Jerry Rolia Computing utility policing system and method using entitlement profiles
US20110061057A1 (en) * 2009-09-04 2011-03-10 International Business Machines Corporation Resource Optimization for Parallel Data Integration
CN102422298A (zh) * 2009-05-08 2012-04-18 惠普开发有限公司 分布式计算资源的访问控制系统和方法
CN103098027A (zh) * 2010-09-21 2013-05-08 亚马逊技术有限公司 用于动态管理计算容量请求的方法和系统
US20140189090A1 (en) * 2009-09-03 2014-07-03 C3Dna, Inc. Apparatus and methods for cognitive containters to optimize managed computations and computing resources
CN104937584A (zh) * 2012-12-19 2015-09-23 赛门铁克公司 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量
US20160164762A1 (en) * 2014-12-05 2016-06-09 Amazon Technologies, Inc. Automatic management of resource sizing

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US7051188B1 (en) 1999-09-28 2006-05-23 International Business Machines Corporation Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment
US8095620B2 (en) * 2002-06-13 2012-01-10 Elbit Systems Land and C41-Tadiran Ltd. System and method for dynamic allocation of a resource
US7584281B2 (en) 2005-06-07 2009-09-01 Datasynapse, Inc. Method for allocating shared computing infrastructure for application server-based deployments
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US8565407B1 (en) * 2009-11-23 2013-10-22 Amazon Technologies, Inc. Systems and methods for allocation of telephony resources on-demand
US8533724B1 (en) * 2010-12-20 2013-09-10 Amazon Technologies, Inc. Virtual resource provisioning by assigning colors to virtual resources in multi-tenant resource pool
US9183016B2 (en) 2013-02-27 2015-11-10 Vmware, Inc. Adaptive task scheduling of Hadoop in a virtualized environment
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US9727379B1 (en) * 2014-04-14 2017-08-08 Google Inc. Specifying behavior among a group of computing tasks
WO2017026929A1 (en) * 2015-08-07 2017-02-16 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for requesting of resources
US10642652B2 (en) 2016-01-29 2020-05-05 Peter P. Nghiem Best trade-off point on an elbow curve for optimal resource provisioning and performance efficiency

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549964A (zh) * 2002-01-04 2004-11-24 微软公司 管理计算系统中协处理器的计算资源的方法和系统
US20050210262A1 (en) * 2004-03-19 2005-09-22 Jerry Rolia Computing utility policing system and method using entitlement profiles
CN102422298A (zh) * 2009-05-08 2012-04-18 惠普开发有限公司 分布式计算资源的访问控制系统和方法
US20140189090A1 (en) * 2009-09-03 2014-07-03 C3Dna, Inc. Apparatus and methods for cognitive containters to optimize managed computations and computing resources
US20110061057A1 (en) * 2009-09-04 2011-03-10 International Business Machines Corporation Resource Optimization for Parallel Data Integration
CN103098027A (zh) * 2010-09-21 2013-05-08 亚马逊技术有限公司 用于动态管理计算容量请求的方法和系统
CN104937584A (zh) * 2012-12-19 2015-09-23 赛门铁克公司 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量
US20160164762A1 (en) * 2014-12-05 2016-06-09 Amazon Technologies, Inc. Automatic management of resource sizing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535333A (zh) * 2021-08-12 2021-10-22 北京字节跳动网络技术有限公司 Yarn集群资源调度方法、系统、介质和计算机设备

Also Published As

Publication number Publication date
AU2017373882B2 (en) 2020-04-02
JP6825103B2 (ja) 2021-02-03
EP3552104B1 (en) 2021-06-23
JP2020502641A (ja) 2020-01-23
CN110050261B (zh) 2022-11-25
US10445137B2 (en) 2019-10-15
WO2018106772A1 (en) 2018-06-14
CA3043974C (en) 2021-11-09
AU2017373882A1 (en) 2019-05-30
EP3552104A1 (en) 2019-10-16
US20180165129A1 (en) 2018-06-14
US20200257556A1 (en) 2020-08-13
CA3043974A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
CN110050261A (zh) 计算资源分配
US20220084085A1 (en) Parcelled Quantum Resources
Rodriguez et al. A taxonomy and survey on scheduling algorithms for scientific workflows in IaaS cloud computing environments
CN109983441A (zh) 用于批作业的资源管理
CN106933669A (zh) 用于数据处理的装置和方法
US20190095245A1 (en) System and Method for Apportioning Shared Computer Resources
Amalarethinam et al. An Overview of the scheduling policies and algorithms in Grid Computing
Singh et al. Energy based efficient resource scheduling: a step towards green computing
US20110307898A1 (en) Method and apparatus for efficiently distributing hardware resource requests to hardware resource offers
US11429440B2 (en) Intelligent orchestration of disaggregated applications based on class of service
WO2020081805A1 (en) Parcelled quantum resources
Ding et al. Kubernetes-oriented microservice placement with dynamic resource allocation
Amaral et al. DRMaestro: orchestrating disaggregated resources on virtualized data-centers
Marinescu et al. An approach for scaling cloud resource management
Patel et al. Truthful online double auction based dynamic resource provisioning for multi-objective trade-offs in IaaS clouds
Kehrer et al. Equilibrium: an elasticity controller for parallel tree search in the cloud
Teng Ressource allocation and schelduling models for cloud computing
Bawankule et al. Historical data based approach to mitigate stragglers from the Reduce phase of MapReduce in a heterogeneous Hadoop cluster
Baert et al. Fair multi-agent task allocation for large datasets analysis
Marinescu et al. A cloud reservation system for big data applications
Heger Optimized resource allocation & task scheduling challenges in cloud computing environments
Shiekh et al. A load-balanced hybrid heuristic for allocation of batch of tasks in cloud computing environment
Ghazali et al. CLQLMRS: improving cache locality in MapReduce job scheduling using Q-learning
Miranda et al. Dynamic communication-aware scheduling with uncertainty of workflow applications in clouds
Zhao et al. Resource Management in Utility and Cloud Computing

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010313

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant