CN111406250B - 无服务器计算环境中的使用经预取的数据的配设 - Google Patents
无服务器计算环境中的使用经预取的数据的配设 Download PDFInfo
- Publication number
- CN111406250B CN111406250B CN201880076997.5A CN201880076997A CN111406250B CN 111406250 B CN111406250 B CN 111406250B CN 201880076997 A CN201880076997 A CN 201880076997A CN 111406250 B CN111406250 B CN 111406250B
- Authority
- CN
- China
- Prior art keywords
- udf
- node
- data
- working
- nodes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000006870 function Effects 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000012512 characterization method Methods 0.000 description 18
- 230000015654 memory Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Abstract
提供了一种用于对无服务器计算集群进行数据配设的方法。接收多个用户定义函数(UDF),以用于在无服务器计算集群的工作节点上执行。对于第一UDF,确定执行第一UDF所需的UDF数据的一个或多个数据位置。在无服务器计算集群的主节点处,接收多个工作节点票证,每个票证指示相应工作节点的资源可用性。分析一个或多个数据位置和多个工作节点票证,以确定能够执行第一UDF的合格工作节点。主节点将预取命令发送到合格工作节点中的一个或多个,通过在第一UDF被分配用于执行之前存储经预取的第一UDF数据来使得合格工作节点变为用于第一UDF的经配设的工作节点。
Description
技术领域
本技术总体上涉及无服务器计算环境,并且更具体地涉及无服务器计算环境中的数据配设和任务配设。
背景技术
无服务器计算(serverless computing)的概念正在云计算领域迅速流行。无服务器计算这个名称有点用词不当,因为仍然需要服务器。替代地,该名称源于以下事实:服务器管理和容量规划决策可以完全被隐藏或以其他方式从计算能力的终端用户和消费者中分离出来。有利的是,终端用户可以简单地向无服务器计算环境提供用户定义函数(UDF)或其他计算作业,此时必要计算资源被动态地分配以执行这些UDF或计算作业,用户在任何时间都无需管理(或甚至知道)任何底层硬件或软件资源。
在无服务器计算环境中,经常从多个终端用户接收到UDF。执行UDF的顺序可以取决于多种因素,从UDF本身的方面(计算要求、效率要求等)到由无服务器计算环境的运营商提供的服务方面(最大等待时间保证、支付优先级等)。无论UDF如何排序,它们通常在执行之前被保存在一个或多个任务队列中。无服务器计算的主要缺点在于配设任务或UDF的方式。
UDF通常需要一定量的数据才能执行。例如,UDF可能需要数据集来进行分析或操作,或者UDF可能需要几个库才能运行完成。在无服务器计算环境中,经常情况下,UDF将不会被调度为在该必需数据所驻留的同一节点上执行。替代地,选择一个或多个节点来执行UDF,并且在UDF能够开始执行之前必须先将必需数据移动至这些节点,从而可能给整个UDF计算过程带来大量的延迟。因此,需要改进。
附图说明
为了描述能够获得本公开的上述和其他优点和特征的方式,将呈现对上面简要描述的原理的更加具体的描述,这通过参考在附图中示出的其具体示例来进行。应当理解,这些附图仅描绘了本公开的示例并且因此不能被认为是对本公开的范围的限制,通过使用附图,利用附加特征和细节来描述和解释本文的原理,在附图中:
图1描绘了本公开的各方面可以在其中进行操作的示例环境;
图2描绘了实现本公开的各方面的无服务器计算环境的示例架构;
图3描绘了本公开的方法的流程图;并且
图4A和图4B示出了与示例系统实施例一起使用的示例计算系统的示意图。
具体实施方式
概述
以下阐述的详细描述旨在作为对本主题技术的各种配置的描述,并且不旨在表示能够实践本主题技术的仅有配置。附图被并入本文并且构成详细描述的一部分。详细描述包括特定细节,以用于提供对本主题技术的更透彻理解。然而,将清楚且显而易见的是,本主题技术不限于本文阐述的特定细节,并且可以在没有这些细节的情况下实践。在一些实例中,以框图形式示出结构和组件,以避免模糊本主题技术的概念。
本技术包括方法和计算机可读介质,用于利用经预取的数据对无服务器计算环境(替代地被称为无服务器计算集群)进行数据配设,从而减少无服务器计算环境对任务和函数的执行延迟。在一些实施例中,该数据配设被提供作为在无服务器计算环境的工作节点(worker node)与UDF之间的任务分配的任何现有步骤之前发生的新步骤。
根据该方法,接收多个用户定义函数(UDF),以用于在无服务器计算集群的工作节点上执行。对于第一UDF,确定执行第一UDF所需的UDF数据的一个或多个数据位置。在无服务器计算集群的主节点处,接收多个工作节点票证(ticket),每个票证指示相应工作节点的资源可用性。分析一个或多个数据位置和多个工作节点票证,以确定能够执行第一UDF的合格工作节点。主节点将预取命令发送到这些合格工作节点中的一个或多个,通过在第一UDF被分配用于执行之前存储经预取的第一UDF数据来使得合格工作节点变为用于第一UDF的经配设的工作节点。
详细说明
图1示出了本公开可以在其中进行操作的示例网络环境100。环境100包括多个用户设备(在此被示出为用户设备102、104和106),不过应当理解,可以提供各种数目的用户设备。用户设备通过各种方式耦合到网络110和无服务器计算环境120中的一个或多个。每个用户设备都能够向一个或多个用户(在此被示出为用户1、用户2和用户3)提供访问。如本领域普通技术人员将理解的,用户设备可以由以下各项中的一项或多项提供:移动电话、平板电脑、膝上型计算机、台式计算机、工作站、以及各种其他计算设备(包括移动的和固定的)。通常,预期用户设备包括输入装置,用于允许设备的用户输入或以其他方式定义要由无服务器计算环境120执行(即,计算)的一个或多个用户定义函数(UDF)。在一些实施例中,用户设备102、104、106可以在存储器中存储一个或多个UDF,使得用户(例如,用户1、用户2或用户3)能够简单地选择预定义UDF以用于在无服务器计算环境120上传输和执行,或者能够选择预定义UDF以用于在无服务器计算环境120上传输和执行之前进行编辑。
如前所述,每个用户设备都耦合到网络110和无服务器计算环境120中的一者(或两者)。例如,用户设备104仅耦合到网络110,该网络110充当用于用户设备104与无服务器计算环境120之间的通信的中继。另一方面,用户设备106仅耦合到无服务器计算环境120,这意味着用户设备106与其他用户设备以及连接到网络110的任何其他设备通信地隔离。与无服务器计算环境120的这种直接耦合可以提供更大安全性,代价是对更多通用操作和通信产生更大不便。用户设备102示例说明了第三种配置,该用户设备102具有到网络110和无服务器计算环境120两者的直接通信链路。这样,用户设备102和用户设备104经由网络110通信地耦合,这在用户1和用户2都在共同的项目上工作或以其他方式进行协作时可以是有益的,而在可能需要更大安全性的情况下,用户设备102仍保持与无服务器计算环境120的直接通信链路。
前述通信链路可以是有线或无线的,采用本领域已知的各种通信技术和标准,而不脱离本公开的范围。在一些实施例中,无服务器计算环境120可以是经由互联网可公开访问的,并且其组成硬件组件以分布式或集中式方式进行布置。在一些实施例中,无服务器计算环境120的一个或多个组成硬件组件可以与一个或多个用户设备共置(co-locate)。在无服务器计算环境120可以不是可公开访问的并且替代地以访问受限的方式被提供时,可能会出现这种情况(不过要注意的是,上述共置不是实现访问限制的必要条件)。例如,可以实现访问受限的无服务器计算环境120,使得仅共置的计算设备或用户(作为批准的业务实体的雇员)才可以访问无服务器计算环境120。
如图所示,图1中呈现的无服务器计算环境120的架构概述被示出为包括REST API122(代表性状态转移应用编程接口),用于实现无服务器计算环境120与外部网络和计算设备(其希望访问或以其他方式利用无服务器计算环境的计算资源)之间的接口层。如图所示,这些计算资源由主节点124(在本文中可替代地被称为调度节点(scheduler node)或执行节点(executor node))、多个工作节点126、和多个存储节点128提供,不过应当再次理解,可以利用各种其他组件来实现无服务器计算环境的计算资源,而不脱离本公开的范围。
广泛地,多个存储节点128被用于存储原始数据或经处理的数据,并且可以被提供作为计算元件(例如,其计算能力远大于管理存储功能所需的计算能力)或存储元件(例如,其计算能力略大于管理存储功能所需的计算能力)。多个工作节点126从多个存储节点128检索数据(原始的或先前处理的),并且然后根据正在工作节点上执行的一个或多个UDF来处理检索到的数据。给定工作节点通常被提供具有一定量的本地存储,不过该存储通常主要被对以下内容的存储所消耗:由工作节点当前正在处理的数据、和/或处理和执行UDF的最终结果和中间结果。在一些实施例中,工作节点126和存储节点128的功能可以被组合,使得在无服务器计算环境120中仅提供单一类型的节点。多个工作节点126可以是同质的,或者可以在其硬件组件和计算能力方面存在不同。类似地,多个存储节点128可以是同质的,或者可以在其硬件组件和计算能力方面存在不同。最后,如本领域普通技术人员所理解的,工作节点126和存储节点128可以用已知与无服务器计算环境(例如,无服务器计算环境120)的实现方式兼容的任何方式(分布式、集中式、或其他方式)进行布置。
主节点124通信地耦合在REST API 122与多个工作节点126和多个存储节点128之间,并且用于将进入的UDF分配给工作节点和存储节点的适当子集。例如,主节点124可以分析给定UDF以确定被需要或请求的计算能力,并且然后可以分析多个工作节点126的当前状态以确定工作节点的哪些子集(如果存在的话)是合格的以用于执行UDF。为了分析工作节点的当前状态,工作节点生成并发送票证或更新分组到主节点124。这些票证可以包括但不限于诸如以下各项之类的信息:节点的当前状态/运行状况(health)、节点的当前利用率、节点的当前存储可用性等。可以响应于给定工作节点的任何状态改变、或编码在票证内的参数之一的任何改变而生成票证。还可以响应于某预定义刷新周期的期满而生成票证,例如,如果工作节点在最近五分钟内未生成票证,则即使没有状态改变,该工作节点也会被触发以生成新的票证。
这样,主节点124可以被广义地视为无服务器计算环境120中的中央执行器和中央信息中心,可操作用于监视工作节点和存储节点的状态,并且还可操作用于分析UDF并且将UDF分配给任务队列(UDF在该任务队列中等待执行)。主节点124将从任务队列中把给定UDF分配给一个或多个工作节点以用于执行。在把存储节点和工作节点区分开的实施例中,将不会是这样的情形:执行UDF所需的数据就驻留在要对该数据进行处理的同一节点上。即使在具有至少一些组合的工作/存储节点的实施例中,执行UDF所需的数据也不太可能存储在要对该数据进行处理的同一节点上,特别是在具有非常大数目的节点、非常大的或分布式的数据集、或两者兼有的无服务器计算环境中。
这样,在接收到新分配的UDF时,工作节点几乎必须始终在开始执行UDF之前定位并检索所需的数据。在该过程进行期间,工作节点处于不活动状态,UDF未被处理。取决于无服务器计算环境中的各种网络特性(例如,瓶颈、带宽问题、链路断开、节点断开等),该延迟可能甚至比针对仅定位和检索数据所预期的延迟还要大。这样,发现在无服务器计算环境中对UDF的处理遭受到的延迟比通常的UDF执行延迟高,这是因为如下事实:直到在工作节点处接收到每个请求或UDF执行任务之后,才开始配设执行环境(例如,启动(spin up)某些docker容器)。这样,虽然可以利用主节点124在各种目标之间进行优化(例如,最小化UDF在任务队列中的平均等待时间,最小化UDF在任务队列中的最长等待时间,最大化工作节点的利用率等),但是这类优化固有地受到没有考虑数据检索产生的延迟的限制。
图2示出了实现本公开的数据配设解决方案的无服务器计算环境的示例架构200。REST API 202(或其他监听器层)接收或检索各种用户定义函数(UDF),在此被表示为任务204(“任务”和“UDF”在本文中可互换使用)。如前所述,这些UDF或任务可以由一个或多个用户计算设备的用户生成,并且被主动推送到REST API 202或者被动地由REST API 202拉取。
从REST API 202,任务204被输入到任务队列210,通常基于任务204被接收的顺序将任务204存储在任务队列210中(例如,先进先出(FIFO)队列),不过应当理解,任务队列210可以实现其他方式的队列。任务队列210与主节点220通信地耦合,主节点220从相应多个工作节点230(这里被表示为各个节点230a、230b、230c)接收多个票证232。本文描述的票证和节点可以被认为提供和继承归因于先前关于图1描述的票证和节点的相同特性。
鉴于常规无服务器计算环境将简单地从任务队列210中检索任务并且将任务分配给工作节点230,此时给定工作节点将从多个存储节点240中的一个或多个中检索必需数据并且然后才开始执行任务,所示出的架构200提供了附加组件(数据配设模块206),以避免与常规无服务器计算环境相关联的此类延迟。
数据配设模块206可以通信地耦合在REST API 202和任务队列210之间,如图所示,不过替代放置也是可能的(如果需要的话)。通过这种耦合,数据配设模块206还接收正在被输入到任务队列210中的每个任务204的副本(或能够检查副本)。在一些实施例中,数据配设模块206可以被配置为存储其已经检查或接收的每个任务的内部日志,使得该内部日志可以与任务队列210中包含的任务进行比较,从而确保在数据配设模块206和任务队列210之间维持一致状态。
根据每个接收到的任务的副本,数据配设模块206检查任务并且对任务进行分析,以提取与工作节点执行任务将所需的数据相对应的信息。在一些实例中,该信息可以从与任务或UDF相关联的元数据中提取。在一些实施例中,该信息可以在数据配设模块206解析并分析任务或UDF本身之后提取。如前所述,UDF通常仅配设给工作节点,该工作节点负责自己执行所有必要的数据检索,这通常作为执行UDF的过程中的早期步骤。这样,在一些实施例中,数据配设模块206可以分析每个UDF,以根据每个UDF将以其他方式进行的函数调用来检索该必需信息。
通常,该信息指定该数据的一个或多个位置以及数据中要从每个位置检索的部分。例如,可以用统一资源标识符(URI)的形式来提供位置标识符。URI可以指向在无服务器计算环境内部的位置(即,多个存储节点240中的存储节点处、或多个工作节点230中的工作节点处),或者可以指向在无服务器计算环境外部的位置(即,由第三方提供的或与无服务器计算环境的功能无关的某个节点、服务器、计算设备、数据库等处)。此外,基于各种存储方案(及其相关联的数据复制策略),可以存在以下实例,其中执行给定任务所需的数据被存储在多个位置中。在这类实例中,可以为在内部或外部的一个或多个合格位置提供位置标识符。
这类位置可以是要由UDF处理的数据的存储库、或UDF执行所需的库,两者都可以是可以在其中下载URI所指定的全部内容的实例。然而,通常可能是URI包含更多的碎片数据或变化数据的情况,UDF只需要其中的一部分。这样,除了数据位置/URI之外,更通用的实现方式还可以包括用于每个URI的一个或多个数据部分标识符。例如,给定URI中所需的每个数据部分可以由以下方式指定:开始字节和结束字节、开始字节和总字节数、总字节数和结束字节、或标识文件系统中的或给定URI处的数据部分的其他这类方式。
因此,利用针对每个接收到的任务204的这种表征信息(该表征信息被确定为一个或多个(数据位置,数据部分)或(数据位置)对),数据配设模块206可以将该表征信息发送到主节点220。在一些实施例中,数据配设模块206可以阻止将任务发送到任务队列210中,直到已经确定了用于该任务的表征信息为止。以这种方式,可以避免以下情况:其中在数据配设模块206已经将任务的表征信息发送到主节点220之前,该任务就进入任务队列并且被主节点220选择以进行分配。例如,数据配设模块206本身可以从REST API 202接收任务204,并且然后将任务204发送到任务队列210并基本同时地将针对任务204的相应表征信息发送到主节点220;REST API 202可以接收任务204并且将任务204仅转发给数据配设模块206,数据配设模块206然后将在表征信息被发送到主节点220的基本同时,向REST API 202发送“释放”命令;或者主节点220可以在分配任务之前检查其是否已经接收到针对该任务的相应表征信息。
不管实现方式如何,通常预期主节点220在分配一个或多个工作节点以执行任务之前接收到该任务的表征信息。与仅执行任务配设的单个步骤的常规系统相反,根据该表征信息,主节点220以新的方式可操作用于执行数据配设的第一步骤和任务配设(即,分配)的第二步骤。
在数据配设步骤中,分配一个或多个工作节点以预取执行任务或UDF将所需的数据。以这种方式,预期在主节点220对给定任务进行分配之前,一个或多个工作节点将已经存储有必需数据的副本。最佳地,该数据配设可以用即时(JIT)方式执行,其中主节点220选择工作节点以进行数据配设,并且然后正当工作节点完成其对必需数据的预取的时候分配任务以用于执行。在一些实施例中,仅空闲节点可以被分配用于预取数据。在一些实施例中,具有一定量的空闲能力的活动节点可以被分配以使用其空闲能力来预取数据。也就是说,工作节点可以当前正在使用其第一百分比的计算能力来执行一个或多个任务,并且可以使用其某第二百分比的计算能力来与正在进行的计算并行地检索预取数据。
因为表征信息指示在执行分配的任务或UDF之前工作节点需要访问的数据和数据位置,所以主节点220可以在从多个工作节点230中选择工作节点来预取该数据时,执行不同程度的分析。例如,为了执行针对给定任务的数据配设,主节点220可以分析以下标准中的任一项:工作节点当前是否可用;工作节点是否将很快可用(例如,预计在给定任务到达任务队列210的顶部时可用);工作节点是否具有给定任务所需的计算能力;工作节点当前是否具有给定任务所需的至少一部分数据;工作节点到任务数据的最近位置的接近度(例如,传输延迟、或跳数);任务是否可以在多个工作节点上并行处理;以及其他将来任务是否将需要与给定任务相同的数据。
一种简单的方法可以是简单地检查工作节点是否可用并且是否合格(具有计算能力)来处理任务,并且然后从该池中选择一个或多个工作节点,该一个或多个工作节点将被分配以预取处理任务或UDF所需的数据。一种适度高级的方法可以在简单的方法的基础上构建,并且添加关于工作节点当前是否已存储有执行任务所需的任何数据的附加检查。一种更高级的方法仍然可以在适度高级的方法的基础上构建,并且使主节点220进一步计算合格工作节点与执行任务所需的数据的各种源之间的接近度。
为了降低这种接近度计算的复杂性,主节点220可以构建表示各种工作节点、存储节点、和其他数据源或URI之间的互连的网络图或生成树(spanning tree),使得接近度计算不需要从头开始执行,并且替代地可以包含查找。可替代地,在执行接近度计算之后,主节点220可以使用新计算出的接近度信息来构建类似网络图并且在存储器中存储类似网络图,这将减少前期计算成本。
独立于所使用的方法,主节点220还必须确定应当选择多少个工作节点来预取数据以用于给定任务的数据配设。在一些实施例中,可以配设执行给定任务所需的最小数目的节点。然而,这带来了以下风险:在主节点220实际分配任务以用于执行时,经配设的工作节点不再可用。例如,工作节点可能由于硬件故障或来自其当前执行任务的增加的计算负荷,而具有降低的计算能力。如果出现这些情况中的任何一种,则必须配设附加工作节点,同时任务等待恢复(在常规无服务器计算环境中通常会遇到相同的延迟问题)。这样,可以期望提供超出任务或UDF所需数目的一些数目的经配设的工作节点,这些工作节点有效地充当对抗在任务分配时变为不合格的任何经数据配设的节点的缓冲或保护手段(hedge)。
一些任务或UDF可以与多个工作节点上的并行执行兼容,其中这种对并行合格性的确定是由用户在创建UDF期间提供的、由数据配设模块206确定的、或由主节点220确定的。在确定并行合格性的情况下,主节点220可以在确定要为并行任务分配多少个工作节点时,执行附加平衡步骤。通常,分配给并行任务的节点越多,任务可以完成得越快。然而,在本公开的上下文中,存在拐点,其中与参与节点完成其针对即将到来的任务的数据配设预取所需的时间相比,并行任务可以在更短的时间内被处理。这样,除了在为并行处理任务分配工作节点时出现的任何一般计算可用性限制之外,还可以给要分配的节点的数目设置上限,使得所涉及的节点都将在完成其并行处理任务的部分之前完成其数据配设预取。
通过将预取数据分配到工作节点,可以进一步考虑并行处理任务。一种简单的方法可以简单地为所选工作节点配设执行完整任务所需的整个数据集。然而,特别是在分布在多个工作节点上的高度并行的任务中,许多这种数据预取是不必要的,因为并行任务中的每个工作节点经常只需要整体任务数据集的一部分。这样,在一些实施例中,主节点220可以将并行任务预配设给多个工作节点,使得每个工作节点将仅预取任务数据的一部分,该部分任务数据是整体任务执行中该工作节点的那部分所需的。还可以提供与先前关于备份经配设的节点的缓冲所描述的逻辑类似的逻辑。在一些实施例中,每个经配设的工作节点可以预取足够在并行处理中执行多个角色的数据,以这种方式,主节点220可以在并行任务将被分配时检查工作节点的当前状态(基于接收到的票证232),并且然后可以基于该当前状态信息以及关于哪些工作节点能够承担哪些角色的知识,以最有效的方式在经配设的工作节点之间执行最终的并行任务分配。
在一些实例中,并行处理合格任务可以被划分为多个并行任务,然后这些并行任务不全部并行执行。例如,一个并行任务可以被划分为100个并行子任务,但随后仅在50个工作节点上进行处理。以这种方式,主节点220可以执行数据配设以利用以下知识:在前50个子任务完成之后,将继续向50个工作节点中的每一个配设必需的预取数据。例如,主节点可以分析多个票证232,以将多个工作节点230的状态评估为:当前拥挤,但可能在大型的当前正在执行的任务完成之后的不久将来变为高度可用。因此,主节点220可以将可用工作节点配设有与并行任务的较小子任务相对应的预取数据,并且将即将成为可用的工作节点配设有与并行任务的较大子任务相对应的预取数据。
在其他实施例中,任务队列210中的任务或UDF可以与并行处理不兼容,但是仍然可以具有并行数据需求。也就是说,任务A、任务B和任务C可能都需要相同的数据以用于其执行。当出于比较UDF的目的,针对同一数据集使用不同的UDF测试或实现不同的理论、假设、算法等时,可能会出现这种情况。与可以并行处理任务的情况一样,具有并行数据需求的任务可以由主节点220作为特殊情况进行处理。同样,对并行数据需求的确定可以由用户在生成UDF时输入,可以由数据配设模块206确定,可以由主节点220确定,或者这三者的任意组合。例如,数据配设模块206可以扫描针对每个任务204生成的表征信息,以标识任何相似或重叠(全部或部分)的数据需求,并且更新或标记表征信息以反映这一事实。在实践中,在配设一个或多个工作节点以预取用于任务A的数据之后,主节点220然后可以分配相同的工作节点以在任务A完成之后接着执行任务B和/或任务C。虽然这类任务分配不遵循队列通常采用的传统先进先出系统,但是可以通过最小化各个工作节点所执行的预取次数来实现整体效率的提高。
这样的声明通常适用于上述任意特定情况,虽然与没有预取的常规方法相比,预取的使用减少了延迟,但是重复的或其他不必要的预取会增加延迟并且降低本公开所提供的益处。这样,主节点220可以执行数据分配和任务分配所依据的另一因素将是,使给定工作节点刷新其预取数据存储的次数最小化。在并行任务处理中,在完成子任务之后,可以向工作节点分配同一完整并行任务的另一子任务。在并行数据需求任务处理中,在完成第一任务之后,可以向工作节点分配来自同一并行数据需求组的第二任务。
图3描绘了本公开的示例方法的流程图300。在第一步骤302中,在REST API或监听器层处接收一个或多个UDF。例如,一个或多个UDF可以直接从一个或多个用户设备接收,或者可以通过网络或其他方式从存储装置间接接收。
在接收到一个或多个UDF之后,在步骤304中分析每个UDF。具体地,针对表征信息来分析每个UDF,该表征信息关于为了使得能够执行UDF而所需的执行或配设。例如,该表征信息可以包括UDF所需的数据的位置,并且还可以包括对来自该位置的所需数据的一个或多个特定部分的标识。该表征信息可以从UDF解析(例如,通过分析工作节点在初始化UDF的执行时将执行的函数调用),或者可以通过其他分析方式得出。
在步骤306(其可以在步骤302和304之后执行)中,主节点或调度器从系统的一个或多个工作节点接收多个工作节点票证。这些工作节点票证指示相应工作节点(即,生成工作节点票证的工作节点)的资源可用性。根据这些工作节点票证,主节点或调度器可操作用于对每个工作节点的状态进行基本实时的表征,从而对整个工作节点池进行基本实时的表征。因此,为了维持最新信息,步骤306可以被连续地执行,即,可以与流程图300中看到的一个或多个剩余步骤同时执行,而不是仅如图所示在步骤304和308之间执行。工作节点票证可以以规则的间隔(例如,每分钟)被生成,或者响应于在工作节点处检测到改变(例如,状态改变)而被生成,或两者兼有。工作节点票证可以以推送方式生成(由工作节点自由发送到主节点或调度器),或者可以以拉取方式生成(由工作节点响应于来自主节点或调度器的命令而生成)。
在步骤308中,将表征信息与工作节点票证一起进行分析,以便确定能够执行与表征信息相对应的给定UDF的合格工作节点的集合。在一些实施例中,该分析可以由无服务器计算环境的数据配设模块、无服务器计算环境的主节点或调度器、或两者的某种组合来执行。例如,数据配设模块可以被提供作为在其上执行UDF的相同无服务器计算环境中的模块,使得数据配设模块包括硬件元素、软件元素、或两者的某种组合。例如,可以以与提供主节点或调度器相似的方式,在无服务器计算环境中提供数据配设模块。在一些实施例中,可以在包括整个无服务器计算环境的各种硬件元素之间灵活地重新分配数据配设模块。在一些实施例中,数据配设器可以由硬件元素的静态集合来提供,该硬件元素的静态集合可以从无服务器计算环境的硬件元素中选择,或可以除了无服务器计算环境的硬件元素之外被单独提供。无论在何处执行分析,通常认为分析会检查UDF的表征信息或UDF的单独分析所指示的计算要求,并且然后针对每个工作节点的计算能力(如根据从工作节点接收到的一个或多个工作票证中得出的)来分析这些计算要求。因此,该步骤可操作用于确定工作节点的集合,该工作节点的集合具有执行正被分析的UDF的原始计算能力和可用计算能力两者。
在下一步骤310中,从合格以执行给定UDF的所有工作节点的集合中选择子集。具体地,子集被选择以仅包含最适合于被数据配设有UDF的预取数据的那些合格工作节点。该预取数据对应于执行UDF所需的数据,如步骤304中获得的表征信息所指示的。在一些实施例中,可以设置最小、最大或两者,使得经数据配设的节点的数目符合期望参数。要配设有预取数据的节点可以根据诸如以下各项之类的标准来选择:节点到预取数据的源的距离(例如,延迟、跳数等)、可用存储容量、完成任何当前处理任务的估计时间、或所需的其他因素。
接下来,在步骤312中,在选择了子集的情况下,预取命令被生成(例如,通过主节点/调度器和数据配设器中的一个或多个),并且被发送到所选子集中的每个工作节点。这些预取命令可以使得接收预取命令的工作节点检索预取数据或由预取命令指定的预取数据的指示部分,并且然后存储检索到的预取数据的至少一部分。例如,工作节点可以从存储节点检索预取数据,该存储节点也是相同无服务器计算环境的一部分。在这种情况下,预取命令可以包含针对存储节点的URI以及对要从该URI检索的数据部分的指示符。在一些实例中,工作节点可以从不是无服务器计算环境的一部分的存储节点或其他数据存储库(即,从外部数据源)检索预取数据。在这种情况下,预取命令可以包含URI、URL、网络地址、或用于促进工作节点与外部数据源之间的通信耦合的其他必要信息。在根据预取命令检索到数据的情况下,工作节点存储预取数据,但不会开始执行UDF或UDF中与预取数据相关联的一部分。此时,这些工作节点被称为经数据配设的节点,因为它们包含针对给定UDF的预取数据。
在下一步骤314中,主节点或调度器然后可以执行UDF分配,以使得UDF被无服务器计算环境执行。UDF分配可以仅发生在针对该UDF的经数据配设的节点上,或者还可以包括未进行数据配设的其他工作节点。可以针对各种参数(例如,完成时间、期望的并行计算程度、功耗等)执行或优化UDF分配。在选择了一个或多个工作节点的情况下,主节点或调度器然后可以使得所选的一个或多个工作节点开始执行UDF。在选择了经数据配设的工作节点的情况下,UDF可以立即开始执行,因为所有必要数据已经存储在工作节点上。在选择了未经数据配设的工作节点的情况下,UDF会暂停并且不会开始执行,直到工作节点已经完成定位以及检索到必要数据。
图4A和图4B示出了在示例系统实施例中用作控制设备的示例计算系统。当实施本技术时,更合适的实施例对于本领域的普通技术人员将是显而易见的。本领域普通技术人员也将容易理解,可能有其他系统实施例。
图4A示出了常规系统总线计算系统架构400,其中系统的组件使用总线405来彼此电通信。示例性系统400包括处理单元(CPU或处理器)410和系统总线405,系统总线405将包括系统存储器415(诸如只读存储器(ROM)420和随机存取存储器(RAM)425)的各种系统组件耦合到处理器410。系统400可以包括与处理器410直接连接的、紧密接近处理器410的、或集成作为处理器410的一部分的高速存储器的缓存。系统400可以将数据从存储器415和/或存储设备430拷贝到缓存412以供处理器410快速访问。通过这种方式,缓存可以提供性能提升,以避免处理器410在等待数据时延迟。这些和其他模块可以控制或被配置为控制处理器410执行各种动作。其他系统存储器415也可用于使用。存储器415可以包括具有不同性能特性的多种不同类型的存储器。处理器410可以包括任何通用处理器和硬件模块或软件模块(例如,存储在存储设备430中的模块1 432、模块2 434和模块3 436),该硬件模块或软件模块被配置为控制处理器410以及专用处理器,其中软件指令被合并到实际的处理器设计中。处理器410实质上可以是完全独立的计算系统,其包含多个核心或处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或不对称的。
为了使用户能够与计算设备400交互,输入设备445可以表示任意数目的输入机构,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。输出设备435也可以是本领域技术人员已知的多个输出机构中的一个或多个。在一些情况下,多模式系统可以使用户能够提供多种类型的输入以与计算设备400通信。通信接口440通常可以支配和管理用户输入和系统输出。不存在对任何特定的硬件布置上的操作的限制,因此此处的基本特征随着改进的硬件或固件布置被开发出来可以很容易地被替代为这些改进的硬件或固件布置。
存储设备430是非易失性存储器并且可以是硬盘或可以存储可由计算机访问的数据的其他类型的计算机可读介质,诸如磁带盒、闪存卡、固态存储器设备、数字通用盘、盒式磁盘(cartridge)、随机存取存储器(RAM)425、只读存储器(ROM)420、以及它们的混合。
存储设备430可以包括用于控制处理器410的软件模块432、434、436。其他硬件或软件模块是可预期的。存储设备430可以连接到系统总线405。在一个方面中,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,其结合必要的硬件组件(例如,处理器410、总线405、显示器435等)来执行功能。
图4B示出了具有芯片组架构的示例计算机系统450,该芯片组架构可以用于执行所描述的方法并生成和显示图形用户界面(GUI)。计算机系统450是可以用来实现所公开的技术的计算机硬件、软件和固件的示例。系统450可以包括处理器455,处理器455表示能够实施被配置为执行所标识的计算的软件、固件和硬件的任意数目的物理和/或逻辑上不同的资源。处理器455可以与芯片组460进行通信,芯片组460可以控制到处理器455的输入和来自处理器455的输出。在该示例中,芯片组460将信息输出到输出设备465(例如显示器),并且可以读取信息并将信息写入到存储设备470,存储设备470可以包括例如磁介质和固态介质。芯片组460也可以从RAM 475读取数据并将数据写入RAM 475。用于与各种用户接口组件485接口连接的桥接器480可以被提供来用于与芯片组460接口连接。这样的用户接口组件485可以包括键盘、麦克风、触摸检测及处理电路、诸如鼠标之类的点选设备等等。通常,系统450的输入可以来自机器生成和/或人为生成的各种源中的任意源。
芯片组460还可以与一个或多个通信接口490接口连接,该一个或多个通信接口490可以具有不同的物理接口。这种通信接口可以包括用于有线和无线局域网、用于宽带无线网络、以及个人局域网的接口。用于生成、显示和使用本文公开的GUI的方法的一些应用可以包括通过物理接口接收有序数据集或者由处理器455通过分析存储在存储装置470或475中的数据由机器本身生成。此外,机器可以经由用户接口组件485接收来自用户的输入并执行适当的功能,例如,通过使用处理器455解释这些输入来浏览功能。
应该理解,示例系统400和450可以具有不止一个处理器410,或者可以是联网在一起的计算设备组或集群的一部分,以提供更大的处理能力。
为了解释清楚,在一些情况下,本技术可以被呈现为包括单独的功能块,这些功能块包括包含以下项的功能块:设备、设备组件、在软件或者硬件和软件的组合中实现的方法中的步骤或例程。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的有线或无线信号。然而,当提及时,非暂态计算机可读存储介质显式地排除诸如能量、载波信号、电磁波和信号本身之类的介质。
可以使用存储在计算机可读介质中、或可以用其他方式从计算机可读介质中获得的计算机可执行指令,来实现根据上述描述的方法。这类指令可以包括例如使得或以其他方式配置通用计算机、专用计算机、或专用处理设备来执行特定的功能或功能组的指令和数据。可以通过网络访问所使用的计算机资源的部分。计算机可执行指令可以是二进制;中间格式指令,例如汇编语言;固件;或源代码。能够用于存储指令、所使用的信息、和/或在根据上述描述的方法期间创建的信息的计算机可读介质包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、联网的存储设备等。
为了解释清楚,在一些情况下,本技术可以被呈现为包括单独的功能块,这些功能块包括包含以下各项的功能块:设备、设备组件、在软件或者硬件和软件的组合中实现的方法中的步骤或例程。
计算机可读存储设备、介质和存储器可以包括包含比特流等的有线或无线信号。然而,当提及时,非暂态计算机可读存储介质显式地排除诸如能量、载波信号、电磁波和信号本身之类的介质。
实现根据这些公开内容的方法的设备可以包括硬件、固件和/或软件,并且可以采取各种形式因素中的任何一种。这类形式因素包括膝上型电脑、智能电话、小型因素个人计算机、个人数字助理、机架安装的设备、独立设备等等。本文描述的功能也可以在外围设备或附加卡中实现。这样的功能还可以在不同芯片中的电路板上实现或者在单个设备中执行的不同进程中实现。
指令、用于传送这些指令的介质、用于执行它们的计算资源、以及用于支持这种计算资源的其他结构是用于提供这些公开内容中所描述的功能的构件。
虽然使用各种信息来解释所附权利要求的范围内的各方面,但是不应基于特定的特征或布置来暗示对权利要求的限制,因为本领域普通技术人员将能够推导各种各样的实现方式。此外,虽然可能以特定于结构特征和/或方法步骤的语言描述了一些主题,但是应该理解,所附权利要求中限定的主题不必限于这些描述的特征或动作。这种功能可以不同地分布,或在除本文所标识的组件之外的组件中执行。而所描述的特征和步骤作为所附权利要求的范围内的系统和方法的可能组件被公开。此外,记载集合中的“至少一个”的权利要求语言表示该集合中的一个成员或该集合中的多个成员满足该权利要求。
Claims (21)
1.一种用于数据配设的方法,包括:
在无服务器计算集群处接收多个用户定义函数(UDF),以用于在所述无服务器计算集群的一个或多个工作节点上执行;
经由所述无服务器计算集群,确定将来执行所述多个UDF中的第一UDF所需的第一UDF数据的一个或多个数据位置;
在所述无服务器计算集群的主节点处接收多个工作节点票证,每个工作节点票证指示相应工作节点的资源可用性,每个工作节点票证包括相应工作节点的当前利用率或当前存储可用性;
经由所述主节点,分析所述一个或多个数据位置和所述多个工作节点票证,以确定能够执行所述第一UDF的合格工作节点;
经由所述主节点,将预取命令发送到所述合格工作节点中的一个或多个合格工作节点,所述预取命令从所确定的一个或多个数据位置生成,使得所述合格工作节点中的所述一个或多个合格工作节点变为经配设的工作节点,其中,每个经配设的工作节点在所述第一UDF已经被分配用于执行之前存储经预取的UDF数据;以及
在所述经配设的工作节点之间执行UDF分配。
2.根据权利要求1所述的方法,其中:
所述经配设的工作节点各自存储相同的经预取的UDF数据;并且
UDF分配包括选择所述经配设的工作节点中的一个经配设的工作节点以执行所述第一UDF。
3.根据权利要求2所述的方法,其中,UDF分配还包括:从所述经配设的工作节点的剩余部分中选择一个或多个工作节点以执行一个或多个附加UDF,所述一个或多个附加UDF各自被确定为需要所述第一UDF数据。
4.根据权利要求3所述的方法,其中,所述剩余部分中的经配设的工作节点的数目等于被确定为需要所述第一UDF数据的所述附加UDF的数目。
5.根据任一前述权利要求所述的方法,其中:
响应于确定所述第一UDF能被并行处理,多个预取命令被发送,使得所述经配设的工作节点存储不同的经预取的UDF数据;并且
UDF分配包括选择所述经配设的工作节点中的两个或更多个经配设的工作节点以执行所述第一UDF,使得由所选择的两个或更多个经配设的工作节点存储的不同的经预取的UDF数据的组合包含所述第一UDF数据的全部。
6.根据权利要求1至4中任一项所述的方法,其中,每个工作节点票证是由工作节点响应于所述工作节点处的资源可用性或状态改变、或响应于预定义票证刷新周期的期满而生成的,所述预定义票证刷新周期在所述工作节点生成新的工作节点票证时重置。
7.根据权利要求1至4中任一项所述的方法,其中,预取命令被发送,使得经预取的UDF数据在多个UDF中的任意UDF已经被分配给工作节点以用于执行之前被存储用于所述多个UDF。
8.根据权利要求1至4中任一项所述的方法,其中,预取命令被发送,使得所述一个或多个工作节点中的每个工作节点被配设以存储用于所述多个UDF中的至少一个UDF的经预取的UDF数据。
9.根据权利要求1至4中任一项所述的方法,其中,所述一个或多个数据位置包括指向以下各项中的一项或多项的统一资源标识符(URI):所述无服务器计算集群的工作节点;所述无服务器计算集群的专用存储节点,所述专用存储节点不同于所述工作节点;以及在所述无服务器计算集群外部的外部节点。
10.根据权利要求1至4中任一项所述的方法,还包括:
确定所述经配设的工作节点中的每个经配设的工作节点不再是能够执行所述第一UDF的合格工作节点,所述确定至少部分地基于从相应经配设的工作节点接收到的工作节点票证;以及
分析任何剩余工作节点以标识新的工作节点,该新的工作节点能够从所述经配设的工作节点中的一个或多个经配设的工作节点接收所述第一UDF数据并且随后执行所述第一UDF,其中,所述新的工作节点是基于其与所述经配设的工作节点的接近度来标识的,使得所述第一UDF数据到所述新的工作节点的传输时间最小化。
11.一种计算机可读介质,在其中存储有指令,所述指令在由无服务器计算集群的至少一个处理器执行时,使得所述至少一个处理器执行包括以下各项的操作:
接收多个用户定义函数(UDF),以用于在所述无服务器计算集群的一个或多个工作节点上执行;
确定将来执行所述多个UDF中的第一UDF所需的第一UDF数据的一个或多个数据位置;
在所述无服务器计算集群的主节点处接收多个工作节点票证,每个工作节点票证指示相应工作节点的资源可用性,每个工作节点票证包括相应工作节点的当前利用率或当前存储可用性;
经由所述主节点,分析所述一个或多个数据位置和所述多个工作节点票证,以确定能够执行所述第一UDF的合格工作节点;
经由所述主节点,将预取命令发送到所述合格工作节点中的一个或多个合格工作节点,所述预取命令从所确定的一个或多个数据位置生成,使得所述合格工作节点中的所述一个或多个合格工作节点变为经配设的工作节点,其中,每个经配设的工作节点在所述第一UDF已经被分配用于执行之前存储经预取的UDF数据;以及
在所述经配设的工作节点之间执行UDF分配。
12.根据权利要求11所述的计算机可读介质,其中:
所述经配设的工作节点各自存储相同的经预取的UDF数据;并且
UDF分配包括选择所述经配设的工作节点中的一个经配设的工作节点以执行所述第一UDF。
13.根据权利要求11至12中任一项所述的计算机可读介质,其中,所述指令还使得所述至少一个处理器通过以下操作来执行UDF分配:从所述经配设的工作节点的剩余部分中选择一个或多个工作节点以执行一个或多个附加UDF,所述一个或多个附加UDF各自被确定为需要所述第一UDF数据。
14.根据权利要求13所述的计算机可读介质,其中,所述剩余部分中的经配设的工作节点的数目等于被确定为需要所述第一UDF数据的所述附加UDF的数目。
15.根据权利要求11或12所述的计算机可读介质,其中:
响应于确定所述第一UDF能被并行处理,多个预取命令被发送,使得所述经配设的工作节点存储不同的经预取的UDF数据;并且
UDF分配包括选择所述经配设的工作节点中的两个或更多个经配设的工作节点以执行所述第一UDF,使得由所选择的两个或更多个经配设的工作节点存储的不同的经预取的UDF数据的组合包含所述第一UDF数据的全部。
16.根据权利要求11或12所述的计算机可读介质,其中,每个工作节点票证是由工作节点响应于所述工作节点处的资源可用性或状态改变、或响应于预定义票证刷新周期的期满而生成的,所述预定义票证刷新周期在所述工作节点生成新的工作节点票证时重置。
17.根据权利要求11或12所述的计算机可读介质,其中,预取命令被发送,使得经预取的UDF数据在多个UDF中的任意UDF已经被分配给工作节点以用于执行之前被存储用于所述多个UDF。
18.根据权利要求11或12所述的计算机可读介质,其中,预取命令被发送,使得所述一个或多个工作节点中的每个工作节点被配设以存储用于所述多个UDF中的至少一个UDF的经预取的UDF数据。
19.根据权利要求11或12所述的计算机可读介质,其中,所述一个或多个数据位置包括指向以下各项中的一项或多项的统一资源标识符(URI):所述无服务器计算集群的工作节点;所述无服务器计算集群的专用存储节点,所述专用存储节点不同于所述工作节点;以及在所述无服务器计算集群外部的外部节点。
20.根据权利要求11或12所述的计算机可读介质,其中,所述指令还使得所述至少一个处理器执行包括以下各项的操作:
确定所述经配设的工作节点中的每个经配设的工作节点不再是能够执行所述第一UDF的合格工作节点,所述确定至少部分地基于从相应经配设的工作节点接收到的工作节点票证;以及
分析任何剩余工作节点以标识新的工作节点,该新的工作节点能够从所述经配设的工作节点中的一个或多个经配设的工作节点接收所述第一UDF数据并且随后执行所述第一UDF,其中,所述新的工作节点是基于其与所述经配设的工作节点的接近度来标识的,使得所述第一UDF数据到所述新的工作节点的传输时间最小化。
21.一种计算系统,被布置为执行根据权利要求1至10中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/827,969 US10771584B2 (en) | 2017-11-30 | 2017-11-30 | Provisioning using pre-fetched data in serverless computing environments |
US15/827,969 | 2017-11-30 | ||
PCT/US2018/063455 WO2019109023A1 (en) | 2017-11-30 | 2018-11-30 | Provisioning using pre-fetched data in serverless computing environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111406250A CN111406250A (zh) | 2020-07-10 |
CN111406250B true CN111406250B (zh) | 2024-02-20 |
Family
ID=64734216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880076997.5A Active CN111406250B (zh) | 2017-11-30 | 2018-11-30 | 无服务器计算环境中的使用经预取的数据的配设 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10771584B2 (zh) |
EP (2) | EP3718008B1 (zh) |
CN (1) | CN111406250B (zh) |
WO (1) | WO2019109023A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11962606B2 (en) * | 2018-04-04 | 2024-04-16 | Twistlock Ltd. | Protecting serverless applications |
EP3803587A1 (en) * | 2018-05-29 | 2021-04-14 | Telefonaktiebolaget LM Ericsson (publ) | Improved performance of function as a service |
US20210303371A1 (en) * | 2018-07-20 | 2021-09-30 | Pivotal Software, Inc. | Container framework for user-defined functions |
US11240045B2 (en) * | 2019-10-30 | 2022-02-01 | Red Hat, Inc. | Detection and prevention of unauthorized execution of severless functions |
US11356367B2 (en) | 2019-11-22 | 2022-06-07 | Red Hat, Inc. | Secure preloading of serverless function sequences |
US11411802B2 (en) | 2019-12-09 | 2022-08-09 | Arista Networks, Inc. | Determining the impact of network events on network applications |
US11044173B1 (en) * | 2020-01-13 | 2021-06-22 | Cisco Technology, Inc. | Management of serverless function deployments in computing networks |
US11513860B2 (en) | 2020-01-31 | 2022-11-29 | Red Hat, Inc. | Serverless function colocation with storage pools |
US11625192B2 (en) * | 2020-06-22 | 2023-04-11 | Western Digital Technologies, Inc. | Peer storage compute sharing using memory buffer |
US20220318065A1 (en) * | 2021-04-02 | 2022-10-06 | Red Hat, Inc. | Managing computer workloads across distributed computing clusters |
WO2022225578A1 (en) * | 2021-08-20 | 2022-10-27 | Futurewei Technologies, Inc. | Real-time event-driven serverless functions within storage systems for near data processing |
US20230214387A1 (en) * | 2022-01-05 | 2023-07-06 | International Business Machines Corporation | Techniques for Tiered Cache in NoSQL Multiple Shard Stores |
CN116185596B (zh) * | 2023-04-24 | 2023-08-01 | 之江实验室 | 提升广域多集群分布式系统执行任务效率的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102986290A (zh) * | 2010-06-04 | 2013-03-20 | 高通股份有限公司 | 用于无线分布式计算的方法和装置 |
US8429351B1 (en) * | 2008-03-28 | 2013-04-23 | Emc Corporation | Techniques for determining an amount of data to prefetch |
CN104331464A (zh) * | 2014-10-31 | 2015-02-04 | 许继电气股份有限公司 | 一种基于MapReduce的监控数据优先预取处理方法 |
CN105487930A (zh) * | 2015-12-01 | 2016-04-13 | 中国电子科技集团公司第二十八研究所 | 一种基于Hadoop的任务优化调度方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493804B1 (en) | 1997-10-01 | 2002-12-10 | Regents Of The University Of Minnesota | Global file system and data storage device locks |
JP2005148868A (ja) * | 2003-11-12 | 2005-06-09 | Hitachi Ltd | ストレージ装置におけるデータのプリフェッチ |
US8108466B2 (en) * | 2008-05-01 | 2012-01-31 | Microsoft Corporation | Automated offloading of user-defined functions to a high performance computing system |
US9665405B1 (en) * | 2010-02-12 | 2017-05-30 | Sas Institute Inc. | Distributed systems and methods for state generation based on multi-dimensional data |
US9495427B2 (en) * | 2010-06-04 | 2016-11-15 | Yale University | Processing of data using a database system in communication with a data processing framework |
US8271537B2 (en) * | 2010-11-15 | 2012-09-18 | Sas Institute Inc. | Grid computing system alongside a distributed database architecture |
CN102073546B (zh) | 2010-12-13 | 2013-07-10 | 北京航空航天大学 | 一种云计算环境中分布式计算模式下的任务动态调度方法 |
KR20130088512A (ko) | 2012-01-31 | 2013-08-08 | 한국전자통신연구원 | 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법 |
TWI592808B (zh) * | 2012-08-17 | 2017-07-21 | High-speed automated cluster system deployment using virtual disks | |
CA3078018C (en) * | 2013-03-15 | 2023-08-22 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
EP2849064B1 (en) | 2013-09-13 | 2016-12-14 | NTT DOCOMO, Inc. | Method and apparatus for network virtualization |
US9535909B2 (en) * | 2013-09-13 | 2017-01-03 | Box, Inc. | Configurable event-based automation architecture for cloud-based collaboration platforms |
US9338097B2 (en) | 2013-10-31 | 2016-05-10 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for load balancing at a data network |
US9436443B2 (en) | 2014-08-28 | 2016-09-06 | At&T Intellectual Property I, L.P. | Software defined network controller |
US20160112502A1 (en) | 2014-10-20 | 2016-04-21 | Cisco Technology, Inc. | Distributed computing based on deep packet inspection by network devices along network path to computing device |
US9921866B2 (en) | 2014-12-22 | 2018-03-20 | Intel Corporation | CPU overprovisioning and cloud compute workload scheduling mechanism |
US9858191B2 (en) * | 2014-12-31 | 2018-01-02 | Samsung Electronics Co., Ltd. | Electronic system with data management mechanism and method of operation thereof |
BR112017015617A2 (pt) | 2015-01-20 | 2018-04-10 | Huawei Tech Co Ltd | sistemas e métodos para sdt trabalhar interligada com nfv e sdn. |
US9537971B2 (en) * | 2015-01-29 | 2017-01-03 | Huawei Technologies Co., Ltd. | Systems, devices and methods for distributed content pre-fetching in mobile communication networks |
US10298715B2 (en) | 2015-04-15 | 2019-05-21 | Hitachi, Ltd. | Distributed processing system, task processing method, and storage medium |
US9848041B2 (en) * | 2015-05-01 | 2017-12-19 | Amazon Technologies, Inc. | Automatic scaling of resource instance groups within compute clusters |
US20160328273A1 (en) | 2015-05-05 | 2016-11-10 | Sap Se | Optimizing workloads in a workload placement system |
US9575808B1 (en) * | 2016-02-01 | 2017-02-21 | Sas Institute Inc. | Managing virtual machines |
US9900378B2 (en) * | 2016-02-01 | 2018-02-20 | Sas Institute Inc. | Node device function and cache aware task assignment |
US10346211B2 (en) * | 2016-02-05 | 2019-07-09 | Sas Institute Inc. | Automated transition from non-neuromorphic to neuromorphic processing |
US11190458B2 (en) * | 2017-11-15 | 2021-11-30 | Vmware, Inc. | Network functions support for serverless and granular computing environments |
US20200328977A1 (en) * | 2019-04-10 | 2020-10-15 | Cisco Technology, Inc. | Reactive approach to resource allocation for micro-services based infrastructure |
-
2017
- 2017-11-30 US US15/827,969 patent/US10771584B2/en active Active
-
2018
- 2018-11-30 EP EP18821890.3A patent/EP3718008B1/en active Active
- 2018-11-30 CN CN201880076997.5A patent/CN111406250B/zh active Active
- 2018-11-30 WO PCT/US2018/063455 patent/WO2019109023A1/en unknown
- 2018-11-30 EP EP22208443.6A patent/EP4155936A1/en active Pending
-
2020
- 2020-08-31 US US17/008,520 patent/US11570272B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429351B1 (en) * | 2008-03-28 | 2013-04-23 | Emc Corporation | Techniques for determining an amount of data to prefetch |
CN102986290A (zh) * | 2010-06-04 | 2013-03-20 | 高通股份有限公司 | 用于无线分布式计算的方法和装置 |
CN104331464A (zh) * | 2014-10-31 | 2015-02-04 | 许继电气股份有限公司 | 一种基于MapReduce的监控数据优先预取处理方法 |
CN105487930A (zh) * | 2015-12-01 | 2016-04-13 | 中国电子科技集团公司第二十八研究所 | 一种基于Hadoop的任务优化调度方法 |
Non-Patent Citations (3)
Title |
---|
Chien-Hung Chen.Scheduling-Aware Data Prefetching for Data Processing Services in Cloud.《2017 IEEE 31st International Conference on Advanced Information Networking and Applications (AINA)》.2017,第835-842页. * |
Robert Cooksey.A stateless, content-directed data prefetching mechanism.《Proceedings of the 10th international conference on Architectural support for programming languages and operating systems》.2002,第279-290页. * |
卞琛 ; 于炯 ; 修位蓉 ; 钱育蓉 ; 英昌甜 ; 廖彬 ; .内存计算框架局部数据优先拉取策略.计算机研究与发展.2017,(04),全文. * |
Also Published As
Publication number | Publication date |
---|---|
EP4155936A1 (en) | 2023-03-29 |
CN111406250A (zh) | 2020-07-10 |
EP3718008A1 (en) | 2020-10-07 |
US11570272B2 (en) | 2023-01-31 |
WO2019109023A1 (en) | 2019-06-06 |
EP3718008B1 (en) | 2022-12-28 |
US10771584B2 (en) | 2020-09-08 |
US20200396311A1 (en) | 2020-12-17 |
US20190166221A1 (en) | 2019-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111406250B (zh) | 无服务器计算环境中的使用经预取的数据的配设 | |
US9841998B2 (en) | Processor power optimization with response time assurance | |
US9342376B2 (en) | Method, system, and device for dynamic energy efficient job scheduling in a cloud computing environment | |
US9396028B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
TW201820165A (zh) | 用於雲端巨量資料運算架構之伺服器及其雲端運算資源最佳化方法 | |
CN111247515A (zh) | 用于提供基于性能的分组调度器的装置和方法 | |
US10972555B2 (en) | Function based dynamic traffic management for network services | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
US10411977B2 (en) | Visualization of workload distribution on server resources | |
JP7282823B2 (ja) | メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム | |
US11422858B2 (en) | Linked workload-processor-resource-schedule/processing-system—operating-parameter workload performance system | |
KR20140097815A (ko) | 자원 할당 방법 및 그 장치 | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
US20170371707A1 (en) | Data analysis in storage system | |
US20150106522A1 (en) | Selecting a target server for a workload with a lowest adjusted cost based on component values | |
US20150160973A1 (en) | Domain based resource isolation in multi-core systems | |
US20140281322A1 (en) | Temporal Hierarchical Tiered Data Storage | |
US9619153B2 (en) | Increase memory scalability using table-specific memory cleanup | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
CN111459653B (zh) | 集群调度方法、装置和系统以及电子设备 | |
CN114077481A (zh) | 任务调度方法、装置、设备和存储介质 | |
KR101695238B1 (ko) | 다중 컴퓨팅 자원을 이용한 작업 스케줄링 시스템 및 방법 | |
CN117093335A (zh) | 分布式存储系统的任务调度方法及装置 | |
CN117539597A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN117539598A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |