CN102246152B - 保存程序执行状态 - Google Patents
保存程序执行状态 Download PDFInfo
- Publication number
- CN102246152B CN102246152B CN200980149598.8A CN200980149598A CN102246152B CN 102246152 B CN102246152 B CN 102246152B CN 200980149598 A CN200980149598 A CN 200980149598A CN 102246152 B CN102246152 B CN 102246152B
- Authority
- CN
- China
- Prior art keywords
- execution
- program
- computing node
- performs
- perform
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Retry When Errors Occur (AREA)
Abstract
描述了一种用于管理分布式程序执行的技术。在至少一些情形中,所述技术包括将程序的执行分解或分割成每个可以在不同计算节点上执行的多个不同执行作业,比如以并行的方式使得每个执行作业采用用于该程序的输入数据的不同子集。另外,所述技术还包括临时终止并在后来恢复至少一些执行作业的执行,比如通过持久地存储执行作业的部分执行的中间状态,并且在后来取回和使用所存储的中间状态来从中间状态恢复该执行作业的执行。另外,所述技术可以与分布式程序执行服务协作地使用,所述分布式程序执行服务以多个消费者或该服务的其它用户的名义来执行多个程序。
Description
背景技术
许多公司和其它组织对互连了许多计算***以支持其操作的计算机网络进行操作,比如利用协同定位(例如作为局部网络的一部分)的计算***或者替代地利用位于多个不同地理位置(例如经由一个或多个专用或公共的中间网络)的计算***。例如,容纳了数量巨大的互连计算***的数据中心变得普遍,比如由单独的组织操作并以其名义的专用数据中心,以及由经济实体操作以向消费者提供计算资源的公共数据中心。一些公共数据中心操作者为各种消费者拥有的硬件提供网络访问、权限、和安全安装的便利,而其他公共数据中心操作者提供了还包括使得可由其消费者所使用的硬件资源的“完全服务”。然而,随着普通数据中心的规模和范围的扩大,对物理计算资源的提供、实施和管理的任务变得日益复杂。
针对商用硬件的虚拟化技术的出现已经为具有多种需求的许多消费者提供了与管理大规模计算资源有关的一些好处,使得各种计算资源能够有效和安全地被多个消费者分享。例如,诸如由VMWare、XEN或用户模式Linux所提供的虚拟技术可以通过为每个用户提供由单个物理计算机主控(hosted)的一个或多个虚拟机来使得该单个物理计算机在多个用户之间共享,其中每个这样的虚拟机是一个充当不同逻辑计算***的软件模拟,其为用户提供了一种他们是给定硬件计算资源的唯一操作者和管理员的假象,同时还提供了各个虚拟机之间的应用隔离和安全性。此外,一些虚拟技术能够提供跨越一个或多个物理资源的虚拟资源,比如具有实际上跨越了多个不同物理计算***的多个虚拟处理器的单个虚拟机。
附图说明
图1A和图1B是示出由远程用户使用的分布式程序执行服务的示例实施例的网络示意图。
图2A和图2B示出用于对多个计算节点上的分布式程序执行进行管理的技术的示例实施例。
图3是示出用于管理分布式程序执行的一个计算***的示例实施例的框图。
图4A和图4B示出分布式程序执行服务***管理器例程的示例实施例的流程图。
图5示出计算节点管理器例程的示例实施例的流程图。
发明详述
描述了用于管理程序的分布式执行的技术。在至少一些实施例中,用于管理程序的分布式执行的技术包括将程序执行分解或者分割成多个不同的执行作业(job),每个执行作业可以在不同的计算节点上比如以并行的或者其它分布式方式来执行,每个执行作业使用该程序的输入数据的不同子集。
另外,该技术可以包括临时终止并且以后恢复至少一些执行作业的执行,比如通过如下方式:在执行终止之前持久地存储一个执行作业的部分执行的中间状态,并且以后在该执行作业的执行恢复期间取回和利用该中间状态。此外,在至少一些情形中,该技术可以与分布式程序执行(“DPE”)服务的一个实施例协同地被使用,该分布式程序执行服务以多个顾客或者该服务的其它用户的名义来执行多个程序,比如以分布式方式来提供用于执行程序的多个计算节点(例如,对一个或多个物理计算***进行主控的多个物理计算***和/或虚拟机)。在至少一些实施例中,如下文更详细地描述的那样,可以通过分布式程序执行服务***管理器模块来自动执行一些或所有这些技术。
可以以各个实施例中的各种方式启动分布式程序执行,比如通过DPE服务的一个实施例的用户与该DPE服务进行交互来请求程序的执行。例如,DPE服务可以提供远程用户可以用来作出请求的图形用户界面(“GUI”)(例如,用户经由客户应用程序与之交互的基于网络的GUI,比如在用户的客户装置上执行的一个网络浏览器),以及/或者DPE服务可以提供一个或多个API(“应用程序编程界面”),API使得用户的计算装置能够可编程地与DPE服务交互以作出请求(例如,由提供的GUI所使用的一个或多个API)。
用户可以将各种信息指定为这样一个请求的一部分,比如对执行程序的指示(例如,通过供给该程序的可执行拷贝,通过指示由用户之前对DPE服务登记的程序,通过指示由DPE服务使得可被用户使用的程序,等等),以及对执行程序所使用的输入数据的指示(例如,通过供给输入数据,或者通过指示可以得到该输入数据的可访问位置)。另外,在至少一些实施例中,用户还可以指定用于分布式程序执行的其它配置信息,比如如下的一个或多个:用来配置所请求的执行所用的程序的一个特定实例的配置信息;对所请求的执行所用的一些计算节点的指示;对所请求的执行所用的一类计算节点的指示(例如,当DPE服务以诸如不同的内存量、存储量和/或处理能力之类的不同容量来提供不同类型计算节点的情况下),以及/或者对用于执行所请求的执行的一个或多个其它执行标准的指示(例如,与所请求的执行相关的用户指定的QoS(“服务质量”)水平,对完成所请求的执行的时间的指示,等等);对将所指示的程序执行分割成多个并行的或其它分布式执行的执行作业的指示,或替代地,对DPE服务将如何自动地确定那些多执行作业的指示(例如,当所指示的程序被设计为可以以所定义方式分割成不同执行作业的情况下);等等。
在无论通过用户还是以其它方式来请求或启动程序执行之后,可以以各个实施例中的各种方式来将该程序执行分割成多个并行的或者其它分布式执行的执行作业。例如,如前所述,该程序可以设计为可以以所定义方式分割成不同的执行作业(例如,支持任务级并行模式),并且,如果是这种情况,则用户可以指示如何产生多个执行作业以及/或者DPE服务可以自动产生多个执行作业。另外,一些类型的程序可以对多个输入数据的每一个执行各种操作,并且在这种情形下,可以使用数据并行模式技术来将用于该程序执行中的输入数据的组分割成每一个被供给不同执行作业的多个子集(例如,对于每个执行作业,对用于该执行作业的输入数据子集执行一些或全部相同操作)。作为一个简单例子,一个特定的程序执行可以包括对两个特定时期搜索大量网页(或者可替代地,对用于以后搜索中的网页进行索引),并且该程序执行可以被分割成大量执行作业,这些执行作业同时地并行执行以便其中的每一个针对所述时期的一个或两者来搜索(或索引)网页的不同子集(例如单个网页或者少数网页)。可以被分割成多个执行作业的程序类型(例如支持任务并行模式和/或数据并行模式)的非排他性例子包括:用于处理和产生大数据集的MapReduce程序,MapReduce技术的Hadoop程序实现,各种类型的图像、视频和语音处理,对文本数据集或其它类型的输入数据的各种类型的分析和搜索,等等。关于MapReduce程序的更多细节包括在2004年12月的OSDI’04(操作***设计与实现第六届会议)论文集中由Jeffrey Dean和SanjayGhemawat发表的“MapReduce:Simplified Data Processing on LargeClusters”中,在申请提交时在labs<dot>***<dot>com<slash>papers<slash>mapreduce-osdi04.pdf(其中“<dot>”和“<slash>”分别由对应的字符“.”和“/”代替)处可以得到,其全部内容通过引用并入本文中。
此外,在至少一些实施例中,对分布式程序执行的管理可以包括监控或者跟踪该程序的一些或全部执行作业的正在进行的执行,比如确定何时进行以后启动的其它执行作业的执行(例如,如果由第一执行作业产生的输出数据是用于第二执行作业的至少一些输入数据,从而参与确定何时执行第二执行作业),以及/或者确定何时完成程序的所有执行作业。另外,在至少一些实施例中,一些或全部执行作业每一个可以具有将要执行的多个不同操作(在一些情形下也被称为“任务”),比如按照顺序的和/或并行的方式,并且对正在进行的这种执行作业的执行的监控或其它跟踪还可以包括确定与一些或全部这种操作的部分工作(performance)有关的信息,比如反映由一些这种操作的完成的工作所产生的中间数据。对用于执行作业的特定操作的工作的这种跟踪还可以提供各种各种益处,比如启用了来自要跟踪和使用的执行作业的部分执行中的正在进行的中间执行和数据状态,如下文将更详细地描述的那样。可以以各种方式来执行监控或者其它跟踪,比如通过使用***管理器部件来在特定计算节点上启动执行作业的执行,以及随后从计算节点得到状态信息(例如,由***管理器部件从计算节点采集状态信息,比如通过周期性地请求每个计算节点的状态信息;和/或由计算节点将状态信息发送到***管理器部件,比如周期性地或在发生特定事件时进行发送)。
当在计算节点上执行程序的执行作业时,可以以各种方式存储关于该执行的各种信息。例如,当启动了该执行时,要被执行作业使用的输入数据可以本地存储在计算节点上(例如在本地硬盘或者其它本地存储装置上)以促进在执行期间对该输入数据的访问,并且针对该执行作业要被执行的任何软件指令可以类似地本地存储在该计算节点上。要被本地存储的这种信息可以在DPE服务的***管理器部件的控制之下被供给计算节点,比如来自针对该DPE服务的与用来执行该程序的多个计算节点相距很远的便于得到的长期存储位置(例如,可以从网络可访问远程存储服务得到的长期存储位置)。另外,在完成了该执行作业的执行以及从该执行产生了任何输出数据之后,该输出数据可以类似地本地存储在计算节点中,比如被临时地存储直到将该输出数据复制到用于DPE服务的长期存储位置以由其他执行作业使用,或者在产生了用于该程序的执行的最终输出结果时被存储。在完成了该程序的执行作业的执行之后,在一些实施例中,在将来自该执行的任何输出数据复制到DPE服务的长期存储位置之后,比如为该计算节点上的另一个执行作业(例如,用于一个不同用户的不同程序的另一执行作业)的启动执行做准备或作为其一部分时,可以擦除或清除该计算节点上的本地存储。在其它实施例中,作为替代,可以即使在完成了执行作业的执行之后(例如一直到完成程序的执行)页保留计算节点上的本地存储。
此外,在至少一些实施例中,来自计算节点上执行作业的部分执行的各种中间输出数据和其它中间结果可以在执行期间被临时地本地存储在计算节点上,以便与完成了工作的执行作业的操作的子集所产生的输出数据相对应,以及/或者与已经启动但尚未完成工作的一个或多个操作所产生的部分或未完成输出数据相对应。在其中使用了DPE服务的长期存储位置的至少一些实施例中,这种中间结果没有被存储在DPE服务的长期存储位置上(例如,为了在将这种中间结果复制到DPE服务的长期存储位置时所涉及的执行延迟和网络流通量最小化),而在其它实施例中,一些或所有这种中间结果可以被存储在DPE服务的长期存储位置上。
作为中间结果的一个例子,参考在前的一个执行作业简化示例,其包括针对两个时期通过多个网页进行搜索,该执行作业的每个操作可以对应于针对单个时期通过单个网页进行的搜索,其中来自这样一个操作的工作的中间输出数据是与那个时期在那个网页中发生的任何事件有关的信息(例如,该时期所处的时刻的累积次数;与该时期在那个网页中发生每个时间有关的信息,比如该事件在该网页中的位置;等等)。可替代地,作为另一个例子,特定的执行作业可以包括针对特定时期通过网页日志或者其它具有多个项目的事务往来记录(例如,在网页日志中代表一个项目的每一行)所进行的搜索,并且执行作业的每个操作可以包括针对那个时期搜索特定输入数据项目,其中来自这样一个操作的工作的中间输出数据类似地包括与该输入数据项目是否包括该时期有关的信息。
通过将来自执行作业的完成了的执行的输出数据存储在DPE服务的长期存储位置中,即使特定计算节点后来发生故障或者变得不可用,也可以维持该输出数据的可用性。然而,如果来自执行作业的部分执行的中间结果没有被存储在DPE服务的长期存储位置上,则该执行作业的执行在完成之前的终止会导致那些中间结果丢失,使得该执行作业此后需要再次从开头执行(例如,即使之前完成了一些操作,也要重复该执行作业的所有操作的工作)。
因此,所述技术包括通过对来自完成之前终止的一个执行作业的部分执行的这种中间结果进行存储和使用的方式,来管理分布式程序执行,使得该执行作业的执行的以后的恢复可以恰在或者接近终止前的部分执行的中间点处进行恢复。例如,如果作出决定来在程序的一个或多个执行作业的执行完成之前在一个或多个计算节点上终止这些执行作业的执行,则***管理器部件可以启动对来自这些执行作业的部分执行的中间结果的持久存储,比如持久地存储在远离那些计算节点的位置处。当此后恢复这些执行作业的执行时,无论是在相同的那些计算节点还是在其它计算节点,都可以取回被持久存储的来自之前部分执行的中间结果,并以各种方式在恢复的执行中使用它们。例如,如果在终止前已经完成了特定的被终止的执行作业的多个操作,则可以针对所恢复的执行取回来自那些操作的工作的中间结果,并且无需对所恢复的执行再次进行那些已完成的操作。
在各个实施例中可以针对各种原因来进行部分完成的执行作业的终止。例如,在一些实施例中,已经请求程序执行的用户可以请求对该程序的一些或所有执行作业的执行进行暂停,比如暂停所指示的时间段或者一直到用户此后请求对程序暂停进行恢复。在其它实施例中,DPE装置可以启动对程序的一个或多个执行作业的执行的终止。例如,在第一计算节点上的执行作业的执行可以被终止并被移动到另一个第二计算节点,比如在第一计算节点被关闭以进行维护、被用于另一个执行作业或其它程序(例如具有更高优先级的另一个执行作业或其它程序)、显示可能故障的符号等情况下。另外,通过与指示用户请求相类似的方式,DPE服务可以确定将程序的所有执行暂停一个时间段。
如前所述,在执行作业的执行期间可以将各种信息本地存储在计算节点上,并且可以以各种方式来存储本地存储的信息。例如,在一些实施例中,可以在用于分布式程序执行的多个计算节点上创建分布式文件***或者其它分布式数据存储器,其中特定计算节点的本地存储数据被存储在该分布式数据存储器的本地部分中。另外,如果针对特定实施例的分布式数据存储器包括允许对故障或变得不可用的特定计算节点上本地存储的数据进行复原的冗余数据,那么对于该实施例而言,无需使用用于DPE服务的独立长期存储器就可以在许多情形下维持来自执行作业的执行的输出数据的可用性。在其它实施例中,可以以其它方式存储一些或全部信息,比如通过不使用DPE服务的长期存储位置(例如通过在计算节点上维持本地存储的数据一直到完成了程序的所有执行)以及/或者通过不使用被选择来参与分布式程序执行的计算节点上的本地存储器(例如,通过将没有加载到该计算节点上的易失性内存器(memory)中的任何信息存储到远程位置处,比如DPE服务的长期存储位置处)。
另外,当远离计算节点来持久地存储该计算节点上的部分执行的中间结果时,可以以各种方式来存储该中间结果。在DPE服务使用了长期存储位置的一些实施例中,可以将中间结果与已完成的执行作业的其它完成结果一起存储到DPE服务的长期存储位置中。作为替代,在一些实施例中,可以将针对特定计算节点的中间结果存储在一起,但是采用的是与其它计算节点的中间和/或完成结果不同的方式。例如,在一些实施例中,可以创建远程逻辑存储体用以对被用来存储中间结果的计算节点的本地硬盘或其它块数据存储装置的一些或全部进行镜像,包括分布式文件***的本地部分或其它分布式数据存储器。当此后对该计算节点的执行作业的部分执行进行恢复时,这样的远程逻辑存储体可以被附加到发生了被恢复的执行的计算节点,比如允许将所附加的逻辑存储体中的信息复制到该计算节点的物理块存储装置,以在所恢复的执行中使用,或者替代地在所恢复的执行期间使用附加的逻辑存储体来代替该计算节点的任何物理块存储装置。在逻辑存储体可被使用的这样的一些实施例中,可以在对计算节点上的执行作业进行终止时创建逻辑存储体,而在其它实施例中,可以在计算节点上的执行作业的初始执行的开始来创建执行作业的逻辑存储体,并且,即使该执行作业的执行被终止并且被恢复一次或多次,也可以在整个执行中使用它们(例如,代替该计算节点的任何物理块存储装置)。
与可用来持久存储程序状态信息和/或其它信息的远程存储服务(包括逻辑存储体)示例的操作有关的更多细节可以从如下文献中得到:2008年8月8日提交的题为“Providing Executing Programs With Reliable Access ToNon-Local Block Data Storage”的美国专利申请No.12/188,943;和2006年3月8日提交的题为“Distributed Storage System With Web Services ClientInterface”并要求2005年年12月29日提交的美国临时专利申请No.60/754,726的优先权的美国专利申请No.11/371,304,上述每一个文献的全部内容通过引用并入本文中。另外,与在不同时刻执行不同优先级的不同程序的示例实施例有关的更多细节包括在同时提交的题为“ManagingUse Of Program Execution Capacity”的美国专利申请No.__(代理人卷号为120137.598)中,其全部内容通过引用并入本文中。
出于说明的目的,下面描述一些示例和实施例,其中以具体的方式提供分布式程序执行的具体类型的管理。这些示例提供来用于说明,并且仅为了简明起见,将会理解,本发明的技术可以广泛用在其他场合下,下文更详细地描述其中一些示例。例如,尽管描述了如何以分布式方式执行程序以及如何存储并使用来自部分执行的中间结果的特定示例,但在其它实施例中可以使用其它类型的分布式执行以及其它类型的中间结果的存储和使用。另外,尽管在一些实施例中,用户提交请求来以分布式方式执行所指示的程序,但在其它实施例中,DPE服务的实施例可以启动这种所指示的程序的执行以及/或者可以确定以分布式方式对用户所指示的程序进行执行(例如,用户并不知道)。另外,在一些实施例中,所述的技术的至少一些可以用于没有以分布式方式执行的至少一些程序,比如用以通过存储中间结果来终止这样的非分布式程序执行的部分执行,并且使用所存储的中间结果对程序的部分执行进行恢复。
图1A是示出对用于多个用户的分布式程序执行进行管理的示例的网络示意图。在图1A的示例中,一些用户140通过具有分布式程序执行服务***管理器(“DPE服务SM”或者“DPESSM”)模块110的网络100进行交互,以在可用于执行用户的程序的一个或多个计算节点120上启动分布式程序执行,比如提供了DPE服务(未示出)的一个特定实施例的一些或所有功能的一个DPESSM模块110。网络100例如可以是可由各个不同团体操作的所链接网络的可公共访问的网络,比如互联网。在其它实施例中,网络100可以是专用网络,例如对于非特许用户全部或部分不可访问的法人或校园网络。在另外一些实施例中,网络100可以包括对互联网和/或从互联网进行访问的一个或多个专用网络。在所示的实施例中,DPESSM模块110和计算节点120以及可选的一个或多个其它存储节点130由DPE服务提供者105提供来作为DPE服务的一部分,并且DPESSM模块110可以在一个或多个其它计算***(未示出)上执行。
在一些实施例中,所示计算节点120由DPE服务提供者105提供用于以用户名义进行分布式程序执行,并且可以包括多个物理计算***和/或对一个或多个物理计算***进行主控的多个虚拟机(例如,如关于针对一个示例实施例的图1B详细描述的)。每个计算节点120具有可用于执行一个或多个程序的一些计算资源量,比如可以通过例如处理能力(例如处理单元的数量和/或大小)、内存容量、存储器容量、网络带宽能力等的一个或多个的组合来度量其计算资源量。在一些实施例中,DPE服务提供者105可以提供预配置的计算节点,其中每个预配置的计算节点具有可用于以用户名义执行程序的相似和/相等的资源量,而在其它实施例中,DPE服务提供者105可以提供对各种不同计算节点的选择,比如每个选择具有各种不同的计算资源的量和/或类型(例如,处理单元的大小、速度和/或类型;处理单元的数量;内存和/或存储器的量;平台配置,比如32位或者64位;等等)。
在所示实施例中,各个用户140可以与DPESSM模块110交互以作出请求并指定各种信息。在各个实施例中,这种请求和规定可以在各种时刻作出,比如在用户登记到DPE服务的使用服务时和/或在此后的时刻。在一些实施例中,DPESSM模块110可以对一个或多个用户提供预约和/或登记服务,使得用户可以指定与以用户名义执行的一个或多个程序有关的信息(例如一个或多个程序的程序、源代码、可访问位置等)、账户信息(例如用户名、订单信息等)、使用期限等。在一些实施例中,当用户与DPESSM模块110交互来预约和/或登记了服务之后,该用户可以发送与该用户相关、并且将与以用户名义执行的程序协同使用的一个或多个识别符(例如密钥、令牌、用户名等)。在其它实施例中,可以提供除DPESSM模块110之外的模块来执行与DPE服务的预约和/或登记服务有关的各种操作。
此外,用户可以与DPESSM模块110交互来以各个实施例中的各种方式配置对程序执行的请求,比如通过制定用于程序执行的计算节点的数量和/或类型、使用的计算节点的最小和/或最大数量、对用于执行的多个优先级之一进行选择(例如优先权增大则相关费用增加)等。另外,在一些实施例中,用户可以与DPESSM模块110交互来请求在指定数量的计算节点上的一个或多个程序的中间执行,以及/或者对该执行在一个或多个未来时刻处进行时间安排,使得DPESSM模块110可以在指定时刻或者在满足了一个或多个指定标准时(例如当它确定指定数量的计算节点可用时)在指定数量的计算节点上启动所请求的执行。
在所示实施例中,DPE服务提供了用于在计算节点120上针对多个用户的分布式程序执行进行管理的多种功能。例如,如前所述,一个特定用户可以使用由模块110提供的GUI或API来使用指定输入数据(并且可选地可以一并使用多种其它类型的配置信息)提交用于执行所指示的程序的请求。在接收到用于程序执行的请求之后,DPESSM模块110可以以各种方式选择哪一个可用的计算节点120要用于所请求的执行。例如,在一些实施例中,模块110可以简单地从具有足够的资源的任何可用计算节点中选择适当数量的计算节点,例如随机地从一群可用计算节点中选择。在其它实施例中,可以根据一个或多个其它要素来选择一个或多个具体的计算节点,例如,根据一个或多个计算节点的持续可用性的预计时长和/或概率,该一个或多个具体计算节点与一个或多个其它计算节点的物理接近度,该一个或多个具体计算节点和/或一个或多个其它计算节点的地理位置,等等。另外,在接收到请求之后,模块110可以进一步确定如何将所指示的程序分割成要在多个所选计算节点上执行的多个执行作业,比如通过基于之前得到的与所指示的程序的设计有关的信息并使用由用户和/或以自动方式所供给的信息来进行确定。类似地,在至少一些实施例和情形中,模块110可以确定如何将所指示的输入数据分割成由多个执行作业使用的多个子集。例如,在一些情形中,每个执行作业可以包括仅在特定的输入数据子集上执行所指示的程序的完全拷贝,而其它执行作业类似地在其它输入数据子集上执行完全的程序拷贝。
当执行作业在各个计算节点上执行时,在至少一些实施例中,执行作业在计算节点上本地存储了各种信息。此外,DPE服务可以可选地提供一个或多个存储节点130,其由DPE服务用来存储于程序执行和/或用于其它目的有关的信息。如在别处详细讨论的那样,存储在存储节点130上的这种信息可以包括与针对各种程序的各个执行作业的部分执行的中间状态有关的状态信息,并且在一些实施例中,可以可选地包括由完成的执行作业所产生的输出数据。此外,如在别处详细讨论的那样,在一些实施例中,模块110可以提供指示来使得一个或多个执行作业的部分执行的中间状态在该执行作业的部分执行终止之前被持久地存储。可以以各种方式将用于部分执行的中间状态信息存储得远离该发生部分执行的计算节点,比如,通过将该中间状态信息复制到一个或多个可选的存储节点130,和/或通过使用可经由网络100访问的一个或多个可选的远程存储服务150。在一些实施例中,模块110将中间状态信息的存储从该计算节点调配到远程的持久存储位置,比如通过使用模块110所跟踪的与部分执行的中间状态有关的信息来调配,而在其它实施例中,在进行中间状态信息的持久存储中的行为可替代地由在该计算节点上执行的管理软件来进行,以便对执行作业的执行进行本地管理。作为替代,如果特定的正执行的执行作业能够存储其自身的中间执行状态,则模块110可以替代地通知该执行作业以在关闭其自身的执行之前进行其自己的中间执行状态存储动作。
在已经持久存储了执行作业的部分执行的中间状态并且已经终止了该部分执行之后,可以在以后的时刻从该中间状态恢复该部分执行,比如基本上(substantially)立即地进行恢复(例如,如果执行作业的执行正从第一计算节点移动到第二计算节点,可以如存储并取回中间状态信息一样快),或者替代地在较长的时间段之后进行恢复(例如,在所安排的以后的时刻,在满足了一个或多个指定标准的以后的时刻,等等)。在执行恢复的时刻,存储的中间状态信息可以从持久存储位置被取回,并且被本地存储在要对执行作业的执行进行恢复的计算节点上,或者使其对于该计算节点可用。另外,可以以各种方式恢复执行作业的部分执行,比如通过指示该执行作业不要进行之前已完成的操作的子集(例如,在该执行作业支持这种功能性的情况下),通过将该执行作业更改为仅进行之前未完成的操作的子集,等等。在别处描述了与执行作业的执行的暂停和恢复有关的更多细节。
图1B示出一个实施例,其中提供的DPE服务可以使用包括了多个物理计算***的一个或多个数据中心。具体地说,图1B是示出其中DPE服务的DPESSM模块180在示例数据中心170处以用户名义对分布式程序执行进行管理的示例实施例的网络示意图。示例数据中心170连接到该数据中心170外部的互联网196,在该示例中,互联网196对诸如经由专用网络194的计算***190以及计算***192等各种外部计算***进行访问。专用网络194例如可以是法人网络,在专用网络194外部的非特许用户完全不能或不能部分访问该法人网络。计算***192例如可以包括直接连接到互联网的家庭计算***(例如经由电话或线缆调制解调器、数字用户线路(“DSL”)等)。另外,示出了经由互联网196连接到数据中心170的一个或多个其它数据中心198,比如在至少一些实施例中可以进一步由DPE服务来使用所述其它数据中心。例如,特定程序的分布式执行可以包括使用多个数据中心或者其它不同地理位置的计算节点来同时和/或顺序执行,包括将执行作业的执行从一个地理位置处的计算节点移动到另一个地理位置处的计算节点。
示例数据中心170包括多个物理主控计算***175、物理计算***182、可选的存储***160、和DPE服务的一个实施例的DPESSM模块180。在该示例中,主控计算***175每个提供了多个虚拟机177并且具有虚拟机(“VM”)管理器部件179来管理这些虚拟机(例如管理程序(hypervisor)或其它虚拟机监控器),并且一些或全部计算***182可以类似地具有一个或多个这样的虚拟机和/或VM管理器部件(未示出)。作为替代,在其它实施例中,在数据中心处的一些或全部物理主控计算***可以不提供任何虚拟机,比如替代地直接以DPE服务的最终用户消费者的名义来执行一个或多个程序。另外,在一些实施例中,物理主控计算***175和/或物理计算***182可以每个包括其它管理软件(例如DPE服务的管理模块)来管理计算***上的执行作业的执行。另外,在一些实施例中,各个计算***175和182可以具有不同能力,可以具有不同的相关使用费,可以支持不同类型的用户程序(例如,不同大小的虚拟机软件映像(image)实例,或者具有不同类型资源标准和/或计算资源用法的程序,比如不同模式的I/O和内存访问以及网络用法),等等。如果这样,则一个或多个这样的要素可以进一步用作由计算***选择来执行特定程序的限制和/或优选。可选存储***160还可以具有各种形式,比如具有附加存储器的计算***(例如有时还可以用作计算节点)、不被用作计算节点的网络存储装置等。示例数据中心170还包括内部网络172,该内部网络可以包括诸如开关、边缘路由器和核心路由器之类的多个网络装置(未示出),其中计算***175和182、存储***160、和DPESSM模块180连接到内部网络172.
所示的DPESSM模块180执行至少一些所述技术,以使用计算***175和182管理分布式程序执行和可选地将至少一些程序执行结果持久地存储在存储***160上。当选择了特定计算节点或***来执行程序的一个或多个执行作业时,DPESSM模块180在一些实施例中可以通过与VM管理器部件或其它管理器部件(其对用于所选计算节点/***的程序的执行进行控制)进行交互来启动执行作业的执行,或者作为替换,可以直接在所选计算节点/***上执行该执行作业。DPE服务的用户可以使用各种计算***来与DPESSM模块180进行交互,比如计算***190或192、或者在其它数据中心198中之一处的计算***。另外,计算***190或192或者在其它数据中心198中之一处的计算***中的一些可以被用来提供一个或多个网络可访问远程存储服务(未示出),其可以被DPE服务访问并被用于持久地存储至少一些中间结果或其它信息。
将会理解,图1B的数据中心提供来仅用于说明的目的,而在其它实施例中可以以其它方式来提供DPE服务的实施例和其它软件执行服务。例如,可以替代地将DPESSM模块180提供为使用在数据中心198处的或者处在数据中心170外部的一个或多个其它计算***(比如计算***190、192)。另外,在至少一些实施例中,提供了分布式执行的程序可以包括可执行的软件映像,比如虚拟机映像,其在一个或多个虚拟机计算节点上是可引导的(bootable)或可加载的并且每一个可以包括操作***软件、用于一个或多个应用程序的软件、和/或配置信息等等。至少一些这样的程序可以由DPE服务和/或由用户存储在存储***160上,以及/或者使用远程存储服务进行存储,并且如果是这样,则当以用户名义执行或者启动这些程序时,由DPE服务取回这些程序或者将它们提供给DPE服务。
图2A和图2B示出对多个计算节点上的分布式程序执行进行管理的特定示例,比如可以由DPESSM模块的实施例自动执行。例如,对于图2A,几个计算节点205和230被示出为当前包括在示例程序的分布式执行中,在该示例中将该示例程序称为程序X。在该示例中,DPE服务(未示出)已经创建了一个主导(master)节点205以参与对程序X的分布式执行进行管理,比如存储与程序X的正在进行的执行(例如,在未示出的对应软件模块的控制下,在主导节点205上或在别处执行)有关的各种状态信息。在该示例中的计算节点230是选择来在程序X的分布式执行中使用的多个计算节点,在该示例中示出了四个这样的计算节点230a至230d。
在该示例中,主导节点205维持与程序X的分布式执行有关的各种执行状态信息210,比如对每个计算节点230上的执行作业的执行状态进行跟踪。具体地,在该示例中,信息210中的每一行或项目对应于在特定计算节点上的特定执行作业的特定操作的工作,其中被跟踪的信息在该示例中包括计算节点的标识210a、执行作业的标识210b、操作的标识210c、操作的工作状态的标识210f、要由操作使用的输入数据的标识210d、要由操作的工作产生的输出数据的标识210e、和可选的各种其他信息的标识210g。这些其他状态信息可以包括例如与操作之间的依赖性或其它相互关系有关的信息(例如,操作B只有在完成操作A之后才能执行)、正进行的操作的期望完成的工作有关的信息(例如期望完成时刻、直到完成之前的期望时间量、操作的完成百分比、操作的仍待执行的百分比,等等)、与尚未进行的操作的工作的期望启动有关的信息,等等。
在该示例中,多个计算节点230包括节点A(230a),并且在计算节点230a上已经启动了示例执行作业J-A的执行。在该示例中,执行作业J-A包括要执行的操作,要执行的操作至少包括示例操作A01、A02、A03和A04,并且状态信息210中的第一组四个项目对应于该执行作业和计算节点的这些操作。在该示例中,操作A01已经完成,使用了输入数据D-A01用于其工作,并且已经产生了输出数据D-A11操作A03使用输出数据D-A11作为输入数据,并正在进行产生输出数据D-A21,但输出数据还未完成。类似地,操作A02正在进行,正在使用输入数据D-A02以最后产生输出数据D-A12。因为操作A04使用输出数据D-A12作为输入数据,所以操作A04正排队并准备好在其输入数据和计算节点230a可用来执行它时开始执行,但是操作A04的工作还未开始。
针对计算节点230a显示的示例信息对应于状态信息210。具体地,在该示例中,计算节点230被图示为示出本地存储在节点上的多个信息,但是在该示例中没有示出其它信息(例如,本地存储的与正执行的执行作业和正进行的操作有关的信息),并且没有示出与如何执行本地存储有关的细节。具体地,本地存储在节点230a上的信息的示例包括提供来在执行作业J-A的执行中使用的输入数据,其包括数据235a和235b。另外,已经从进行了的操作输出的中间数据结果包括由完成的操作A01产生的D-A11输出数据240a。另外,在一些实施例中,部分输出数据245a和245b可以在节点230a上产生并且存储,以便反映操作的正在进行的工作(例如,在该示例中为操作A02和A03),而在其它实施例中,这样的部分输出数据可以不以这种方式存储在节点230a上,除非已经完成了对应操作的工作。
状态信息210中的其它项目对应于其它计算节点230b、230c和230d的状态。具体地,对于节点B(230b),其存储了输入数据235c和235d、来自完成的操作B01的输出数据240c、以及与操作B02的正在进行的工作相对应的可选的部分输出数据结果245c。类似地,节点C(230c)存储了输入数据235e和235f、来自完成了工作的操作C01的输出数据240e、以及可选的部分中间输出结果245e。节点D(230d)类似地存储了输入信息235g和235h、以及可选的部分中间输出结果245g和245h,但是在该示例中,基于执行作业J-D没有已经完成的操作,节点D不包括任何已完成的输出数据。
另外,在该示例中,主导节点205可选地还包括分别作为已完成输出数据240a、240c和240e的拷贝220a、220b和220c,比如提供已完成的输出数据的持久存储。在其它实施例中,这种中间输出数据可以不存储在计算节点230外部,或者替代地可以存储在计算节点230的外部,但存储在除主导节点205以外的位置中。
图2B继续图2A的示例,具体地示出了对于示例计算节点230随着时间可能会发生的改变。具体地,在图2B的示例中,在左边第一时间的时刻1处示出了计算节点230a、230b、230c和230d,时刻1对应于图2A中所示时刻的不久之后,并在右边在后来时间的时刻3处示出了那些计算节点的后来的型式。
在该示例中,计算节点A(230a)在时刻1与时刻3之间继续其执行,并且在时刻3处已经完成了执行作业J-A的操作A02,使得输出数据240b被存储在节点230a上。例如,如果部分数据245a可选地在时刻1被存储在节点230a上,则可以通过修改该部分数据245a来产生输出数据240b以反映时刻1与时刻3之间发生的操作A02的更多工作。另外,计算节点230a在时刻3现在包括可选的部分输出数据245j,该部分输出数据对应于一旦输出数据240b可用就开始执行的操作A04。此外,对于时刻1处的节点230a的型式,输入数据235a被示为可选的,比如反映出特定输入数据已经***作A01的工作所使用,并且,如果执行作业J-A的任何其它操作不再需要输入数据235a,则现在可以可选地将其从节点230a删除。类似地,对于时刻3处的节点230a的型式,输入数据235a和235b两者现在都被示为可选地根据此时操作A02的进一步完成而从节点230a去除。
在节点A(230a)在时刻1与时刻3之间的时间期间继续执行作业J-A的执行的同时,其它计算节点230b、230c和230d也被示出正在从事于其它行动。例如,对于节点D(230d),DPE服务确定将执行作业J-D的执行从时刻1处的节点230d移动到时刻3处(在该示例中其实质上可以与时刻1很接近,比如仅在几秒或几分钟之后,或者可替代的更靠后,比如几小时或几天)的不同的计算节点Z(230z)。具体地,在该示例中,节点230d以比其它计算节点230更慢的速率(例如由于使用过度所致)来执行执行作业J-D,这促使移动到能够更快执行该执行作业的其它计算节点230z。例如,在如图2A所示的时刻,节点230d还没有完成执行作业J-D的任何操作的工作。然而,在该示例中,当作出终止执行作业J-D的执行的决定之时(例如在时刻1之前不久的时刻),状态信息210g(未示出)是可用的,这表明操作D02的工作接近完成(例如,根据该操作的工作的完成百分比或者一直到完成所预期的时间),而操作D01的工作还未接近完成。因此,DPE服务决定稍微延迟执行作业J-D的终止以允许完成操作D02的工作,使得节点230d在时刻1包括来自节点230d的与操作D02的工作的完成相对应的中间输出数据。
为了终止在时刻1处节点230d上的执行作业J-D的执行,在时刻1处节点230d上本地存储的至少一些数据被持久地存储在远离节点230d和节点230z的位置处,使得该数据可以在时刻3移动到节点230z。具体地,在该示例中,要移动的信息临时存储在存储体250b中,并且存储在存储体250b中的数据包括来自节点230d的中间输出数据240h的拷贝250h。类似地,如果节点230d包括与操作D01的正在进行的工作相对应的可选的部分输出信息245g,则同样在一些实施例中可以将该部分输出信息的拷贝250g可选地存储在存储体250b上,比如,在可以通过使用该部分输出数据并从所停止的点继续操作的工作的方式来在计算节点230z恢复操作D01的情况下。另外,存储体250b可选地可以存储来自节点230h的其它信息(在该示例中未示出),比如在节点230d上的将用于恢复执行的输入数据(例如输入数据235g),以及/或者关于执行作业J-D的软件指令或其它信息(例如要用来执行该作业的一些或全部操作的部分执行作业,比如剩下的操作)。
在来自节点230d的中间输出数据被存储在逻辑存储体250b上之后,其可以被用来在时刻3在计算节点230z上创建该数据的本地型式,以促进执行作业J-D的所恢复的执行。如果逻辑存储体250b没有存储关于执行作业J-D和/或关于输入数据235g的信息,则可以从其它源取回这样的信息并将其本地存储在节点230z上,比如用于在启动了执行作业J-D的执行时将这样的信息供给节点230d的原始源。作为替代,在其它实施例中,如果节点230z与节点230d同时可用,则可以不使用中间逻辑存储体250b而直接将之前所述的信息的一些或全部从节点230d直接复制到节点230z。
以类似于节点230d的方式,DPE服务决定在时刻1暂停来自节点230c的执行作业J-C的执行,比如允许该执行在以后的时刻在节点230c或其它节点上恢复。在该示例中,直到时刻3都没有发生执行作业J-C的执行的恢复。为了暂停该执行,对节点230c作出了如前所述对节点230d相类似的动作,包括将来自节点230c的中间输出数据240e的拷贝250e存储到针对节点230c而创建的逻辑存储体250a上。如同逻辑存储体250一样,逻辑存储体250a可以进一步可选地存储了部分输出数据245f的拷贝250f、关于执行作业J-C信息、和由节点230c所使用的一些或全部输入数据。当后来恢复执行作业J-C的执行时,用于恢复该执行的计算节点将类似地接收在存储体250a中存储的各种信息的本地拷贝,并且可选地也接收来自其它源的信息。
尽管在该示例中没有示出,然而可以将时刻1处在节点230c上的执行作业J-C的暂停作为该时刻处对程序X的所有执行作业的暂停的一部分来执行。如果这样,则会作出类似的动作来持久地存储这样的部分执行状态信息,所述信息针对的是当前正执行程序X的执行作业的每个其它计算节点230。此外,可以类似地持久存储来自主导节点205的状态信息210以在以后对程序X的执行进行恢复时使用。另外,当发生了这样的程序X执行的以后恢复时,可以以各种方式来执行。例如,程序X执行的恢复可以在与之前所使用的相同的节点230的一些或全部上来进行,或者替代地在完全不同的计算节点上进行。另外,用于恢复执行的计算节点的数量和/或能力可以与终止执行之前使用的节点230不同,比如可以包括更多节点或更少节点(例如,作为对用于恢复执行的计算节点重定尺寸的一部分,比如以比之前执行速率更快或更慢的速率来继续所恢复的执行)。此外,尽管在该示例中未示出,但在一些实施例和情形中,在程序的分布式执行的不同部分中可以涉及不同的用户或其它实体,比如使得第一用户启动分布式程序执行,第二用户启动该程序的执行的第一暂停,第三用户启动该程序的第一恢复执行,等等。这样的两个或更多不同用户例如可以代表一个实体,可以不代表相同实体但可以通过一个或更多其它方式而关联(例如基于在一起进行工作),具有已经授予来对其它用户进行指定动作的授权,等等。
节点B(230b)示出了执行作业J-B的执行的一个示例,该执行在没有机会将节点230b上的至少一些信息持久存储到相应存储体的情况下就被过早终止,比如节点B在执行期间故障的情况。在该示例中,在时刻1处操作B01已经完成并产生了输出数据D-B11(240c),该输出数据D-B11在图2A的示例中可选地具有远离节点230b而被存储在主导节点205上的拷贝220b。因此,在图2B中示出了存储有拷贝220b的节点205的表示符,并且存储的信息可以用来在时刻3在其它计算节点Y(230y)上恢复执行作业J-B的执行。然而,如果在时刻1在节点230b上已经存在部分输出数据245c以对应于操作B02的部分工作,则在该示例中这样的信息没有得到保护,因此相应操作B02不要在执行恢复期间从开头重新执行,以重新产生所述部分输出数据,比如在节点230y上的可选的输出数据2451所示出的。类似地,在节点230b上所存储的可能存储在对应存储体250a和259b中的其它信息也可能没有得到保护,比如输入数据235d以及与执行作业J-C的指令或其它部分有关的信息,因此在初始地启动执行作业J-B时,将以类似于节点230b的方式从外部源得到在时刻3处在节点230y上的输入数据235d和执行作业信息(未示出)。
尽管在图2B的示例中没有示出,然而还可以理解的是,主导节点205有时还可以是不可用的,无论是基于其执行的受到管理的终止(例如,响应于来自用户的与程序X相关的请求或者DPE服务的自动决定,比如反映出将程序X的执行暂停一段时间)还是由于该主导节点的故障。当主导节点205变得不可用时,如果没有在别处持久存储,当前执行状态信息210也可能变得不可用。因此,在至少一些实施例中,在这样的执行终止或者主导节点205的其它不可用情况发生之前,状态信息210还可以被存储在远程逻辑存储体或其它持久存储位置中,比如通过类似于前面针对节点230c和230d以及存储体250a和250b所述的方式。另外,当替换主导节点被启动来管理程序X的所恢复的分布式执行时(无论是在与之前主导节点205的相同的计算***上还是替代地在不同的计算节点上),这样存储的状态信息210可以在后来被取回并使用,以有利于程序X的执行从在存储了状态信息210的时刻处的中间部分执行状态处恢复。
将会理解,在图2A和图2B的示例中的信息已经提供来仅用于说明的目的,为便于理解起见,各种细节以概要的方式示出或者未示出。另外,将会理解,尽管仅示出了四个计算节点230和四个执行作业,然而在实际实施例中,实际的数量可以更大,比如包括成千上百或者无数个计算节点和/或执行作业。
另外,如前所讨论的那样,在各个实施例中可以以各种方式来执行对分布式程序执行的管理。例如,可以以多种方式来作出使用哪个计算节点来执行程序的决定,包括基于针对该程序和/或相关用户(例如在登记之时等)在请求中指定的或其它方式指定的任何优选和/或需求。例如,如果确定了用于执行程序的优选和/或需求的资源的标准(例如,内存和/或存储器;CPU类型、周期或其它性能度量;网络容量;平台类型等),则对要使用的适当计算节点的选择可以至少部分地基于该计算节点是否具有满足那些资源标准的足够的可用资源。与在程序执行服务上执行的执行和配置程序有关的更多细节包括在2006年3月31日提交的题为“ManagingExecution of Programs by Multiple Computing Systems”的美国临时专利申请No.11/395,463中,其全部内容通过引用并入本文中。
另外,如前所述,在至少一些实施例中,自动终止的执行作业的执行可以在以后的时刻由DPE服务自动恢复。例如,在一些这种情况下,DPE服务可以持续地尝试执行这样的执行作业直到完成了请求的执行、直到该执行被用户删除或者明确终止、直到出现指定时刻(例如直到出现截止时刻、直到出现累积执行时间)、直到出现指定的执行次数、无限期地执行下去,等等。另外,在至少一些这样的实施例中,自动终止的至少一些执行作业可以在未来的时刻当有充分的程序执行能力可用于继续该执行时以用户的名义而被自动恢复。
在一些实施例中,可以将费用与DPE服务的使用相关联,比如DPE服务可以以用户支付了一项或多项费用为交易条件来以用户的名义执行分布式程序执行。例如,在一些实施例中,可以基于分配来以用户名义执行一个或多个程序的分布式程序执行能力的量和/或类型,来将费用记在该客户账上,比如基于分配来执行该用户的程序的如下一项或多项:处理单元的数量、内存量、存储量、网络资源量等。在一些实施例中,费用可以基于其他要素,比如用来执行程序的计算资源的各个特征,比如,基于CPU能力或性能、平台(例如32位、64位等),等等。在一些实施例中,可以基于各种各样的使用要素来对费用记账,比如每次使用服务的价格、使用计算服务的每单位时间的价格、所用的每次存储的价格、每次传入和/或数据的价格,等等。在至少一些实施例中,提供者或者DPE服务可以针对以多个用户名义的分布式程序执行来提供各种层次、类型和/或级别的服务或功能中的一个或多个,并且在一些这样的实施例中,可以将各种费用与各种层次、类型和/或级别的服务相关联。关于与分布式程序执行服务相关的各种费用的更多细节包括在2007年12月21日提交的题为“ProvidingConfigurable Pricing for Execution of Software Image”的美国临时专利申请No.11/963,331中,其全部内容通过引用并入本文中。
另外,在各个实施例中可以由DPE服务来提供并使用各种其它类型的功能,如别处更详细讨论的那样。
图3是示出适合于执行用以管理分布式程序执行的***的示例实施例的框图。具体地,图3示出了适合于执行分布式程序执行服务***管理器模块的一个实施例的服务器计算***300,以及各种用户计算***350、计算节点360和其它计算***380。在所示实施例中,服务器计算***300具有包括CPU 305、各种I/O部件310、存储器320和内存330在内的部件。所示I/O部件包括显示器311、网络连接装置312、计算机可读介质驱动器313、和其它I/O装置315(例如键盘、鼠标、扬声器等)。另外,所示用户计算机***350具有与服务器计算***300的那些部件类似的部件,包括CPU 351、I/O部件352、存储器354和内存357。其它计算***380和计算节点360每一个还可以包括与针对服务器计算***300所示出部件的一些或全部相类似的部件,但这些部件在该示例中为简明起见而没有示出。
分布式程序执行服务***管理器模块340的一个实施例在内存330中执行,并且通过网络390与计算***350和380以及计算节点360交互(例如,经由互联网和/或万维网、经由专用蜂窝网,等等)。在该示例实施例中,DPESSM模块340包括通过各个用户(未示出)与用户计算***350交互(比如与DPESSM模块340所管理的DPE服务协作)来功能性地涉及对分布式程序执行的管理。其它的计算***350和380以及计算节点360可以执行各种软件来作为与DPESSM模块交互的一部分。例如,用户计算***350可以执行内存357中的网络浏览器358或其它软件来与DPESSM模块340交互,比如以各种方式在一个或多个计算节点360上以那些***的用户的名义来配置和/或请求程序的执行。另外,用户计算***350的一个或多个用户可以与DPESSM模块340交互以执行各种其它类型的动作,如在别处详细讨论的那样。
与DPESSM模块340的操作有关的各种信息可以存储在存储器320中,比如与对执行程序的计算节点的配置有关的信息322、关于分布式程序执行服务的用户的信息328、包括了来自已完成程序执行的最终执行结果的信息324、和对于各种程序的部分执行的中间状态有关的状态信息进行存储的信息326。另外,如在别处详细讨论的那样,可以以各种方式持久地存储各种中间状态信息和其它信息,包括存储在服务器计算***300的存储器320、其它计算***380、或者其它计算节点/***或者存储节点/***(未示出)上。
在DPESSM模块340接收到在一个或多个计算节点360上执行一个或多个程序的请求(或其它指示)之后,DPESSM模块340选择出将会执行所述一个或多个程序的分布式执行的计算节点,并且在那些计算节点360上启动那些程序的执行作业的执行。另外,DPESSM模块340可以进一步与计算节点360交互以终止计算节点上的执行作业的执行和恢复之前被终止的执行。DPESSM模块340还可以对一个或多个计算节点360进行监控或与之交互,以跟踪那些计算节点的使用。在别处包括了关于这些操作的更多细节。
计算节点360在各个实施例中可以具有各种形式。比如包括多个物理计算***和/或在一个或多个物理计算***上执行的多个虚拟机。在一些实施例中,服务器计算***300和计算节点360可以是数据中心或其它组的协同定位的计算***的一部分,或者可以是专用网络的计算节点。另外,在一些实施例中,DPESSM模块340可以与一个或多个其它计算***380交互以在那些计算***上启动或终止一个或多个程序的执行,比如在计算***380由一个或多个第三方共享者提供的情况下)。
将会理解,计算***300、350和380以及计算节点360仅是说明性的,并不意在限制本发明的范围。计算***和/或节点替代地可以每个包括多个交互的计算***或装置,并且计算***/节点可以连接到未示出的其它装置,包括通过诸如互联网、经由网络或者经由专用网络(例如移动通信网络等)之类的一个或多个网络。更一般地,计算节点或其它计算***可以包括可以交互并执行所述类型的功能的硬件或软件的任何组合,包括而不限于台式机或其它计算机、数据库服务器、网络存储装置和其它网络装置、PDA、蜂窝电话、无线电话、寻呼机、电子记事簿、互联网工具、基于电视的***(例如使用机顶盒和/或个人/数字视频记录器)、和包括适当通信能力的各种其它消费产品。另外,在一些实施例中可以将所示DPESSM模块340所提供的功能分布在附加的模块中。类似地,在一些实施例中,可以不提供DPESSM模块340的一些功能以及/或者其它附加功能可以是可用的。
还将理解的是,尽管各个项被示出为在使用时被存储在内存或存储器中,但这些项或它们的一部分可以在内存与其它用于内存管理和数据完整性目的的存储装置之间传输。作为替代,在其它实施例中,软件模块和/或***的一些或全部可以在另外的装置上的内存中执行,并且经由计算机间通信与所示计算***进行通信。另外,在一些实施例中,可以以其它方式来实现或提供***和/或模块的一些或全部,比如至少部分地以固件和/或硬件的方式,包括但不限于专用集成电路(ASIC)、标准集成电路、控制器(例如通过执行适当的指令,并包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等的一个或多个。模块、***和数据结构的一些或全部还可以(例如作为软件指令或结构化数据)存储在计算机可读介质上,比如硬盘、内存、网络或由适当驱动器或经由适当连接而读出的便携式介质产品。***、模块和数据结构还可以作为在各种计算机可读传输介质上产生的数据信号(例如作为载波或者其它模拟或数字传播信号的一部分)而被发送,包括基于无线的和有线/基于线缆的介质,并且可以具有各种形式(例如,作为单个或符合模拟信号的一部分,或者作为多个分立的数字包或帧)。在其它实施例中,这样的计算机程序产品还可以具有其它形式。因此,本发明可以实现为其它计算机***配置。
图4A和图4B是分布式程序执行服务***管理器例程400的一个示例实施例。该例程可以例如分别由图1A和图1B的DPESSM模块110和180的执行来提供,以及/或者由图3的DPESSM模块340来提供,比如管理程序的分布式执行,以及进行一些情形下的其它类型的动作。在所示实施例中,例程400对以多个用户名义执行分布式程序执行的DPE服务的使用的各个方面进行管理。
在所示实施例中,例程在框405开始,其中接收关于分布式程序执行的信息。例程继续到框410以确定接收的信息的类型。如果在框410确定接收到了比如来自用户的启动程序执行的请求,则例程继续到框415以确定要用于该程序执行的计算节点的数量。在框420,例程将该程序执行和任何接收到的输入数据分割成每一个涉及了要执行的一个或多个操作的多个执行作业。在各个实施例中,可以以各种方式来执行框415和420中的动作,如在别处详细讨论的。例如,可以将用于程序执行的计算节点的数量作为在框405中所接收的请求的一部分来进行指定,或者替代地可以根据其它要素来确定(例如,当前可用的来自DPE服务的计算节点的数量、与程序执行分割成的执行作业的数量相对应的计算节点的数量、作出请求的用户所支付的费用量,等等)。类似地,可以以各种方式来进行程序执行分割,比如以接收到该请求的用户所指定的方式,和/或以至少部分地基于程序设计的自动的方式。在框420之后,例程继续到框425以对所确定的用于分布式程序执行的计算节点数量进行选择,并在框430在所选节点上启动至少一些执行作业的执行。如在别处详细讨论的,在一些实施例中,用户可以指定各种其它类型的信息,比如作为请求405的一部分而被接收和作为在框415-430中的动作的一部分而被使用。
在框430之后,例程在框435等待执行作业完成以及可选地提供对应的输出数据,比如可以用作其它执行作业的输入数据和/或可以用作该程序的执行的最终结果的一部分或全部。在一些实施例中,计算节点可以将这样的输出信息返回到例程400,比如用于存储在DPE服务的长期存储位置中,而在其它实施例中,输出结果可以替代地存储在计算节点上,和/或由该计算节点存储在远离该计算节点的一个或多个长期存储位置上。在所示实施例中,框430-445被示出为以同步方式执行,其中例程400在进行其它动作之前等待执行作业完成。将会理解,在其它实施例中,例程400可以以其它方式操作,例如对于执行当前程序和/或执行其它用户的其它程序以异步方式来执行其它动作。
在所示的示例例程400中,在框435中确定完成了一个或多个执行作业之后,例程继续到框440以确定是否存在更多的执行作业要执行和/或完成。如果是,则例程继续到框445以可选地在可用计算节点上启动一个或多个余下执行作业的执行,比如在那些余下执行作业正等待来自一个或多个已完成执行作业的输出数据的情况,或者替代地在执行作业比计算节点多并且完成了其它执行作业的计算节点现在可用来执行余下执行作业的情况。在框445之后,例程返回框435以等待其它执行作业的完成。
相反,如果在框440确定已经完成了所有执行作业,则例程继续到框485以产生该程序的最终执行结果,并可选地存储那些最终结果和/或将它们提供给用户。在各个实施例中,可以以各种方式来产生或生成最终执行结果,比如通过以各种方式对来自多个执行作业的输出结果进行组合,对来自单个执行作业的输出结果进行选用,等等。
如果在框410替代地确定在框405所接收的信息是比如来自用户的登记一个用于以后使用的程序的请求,则例程替代地继续到框450以存储关于该程序的信息以及相关管理信息(例如与提交该程序有关和/或与该程序的执行有关的信息,比如如何将该程序分割成多个执行作业)。在一些实施例中,这样的程序可以由用户在使用它们之前进行登记,比如以便在以后接收到这样的程序执行请求时增加执行该程序的速度。另外,在一些实施例中,登记程序的这种请求可以包括对该程序以后的执行进行实践安排的请求,比如在所指示的时间或者在满足一个或多个指示的标准的时候(例如,DPE服务有足够多的计算能力可用来以低优先级执行该程序的时候)。
如果在框410替代地确定框405中接收的信息是与在计算节点上对程序的执行作业的执行有关的状态信息,比如可能由该计算节点或执行作业所提供(例如,在之前由例程400对于框490而作出请求之后),那么例程继续到框455以更新由例程400所维持的与该执行作业和程序的中间执行状态有关的状态信息。如在别处详细讨论的,该状态信息可以包括与已经启动、完成或正在进行中的特定操作有关的信息、与已经被该执行使用的输入数据有关的信息、与完成了一些或全部操作而已经产生的输出数据有关的信息、与反映了该执行作业正进行的执行的部分中间数据有关的信息,等等。
如果在框410替代地确定框405中接收的信息是与改变一个或多个程序的一个或多个执行作业的执行有关的指示,比如该指示来自启动该执行的用户以及/或者之前由例程400对于框490而指定,那么例程继续到框460以接收关于该执行改变的信息。在框462中,例程随后确定该请求是涉及终止一个或多个当前执行的执行作业,还是替代地涉及对之前被终止的执行作业的执行进行恢复。如果是后者,则例程继续到框475以启动在计算节点上的之前被终止执行作业的执行的恢复,比如通过使用与来自该执行作业之前的部分执行的中间结果有关的之前存储的状态信息,或者替代地如果在框460接收到了该信息中的相关指示则将对该执行作业的恢复安排在以后的时间。
否则,如果要终止一个或多个当前执行的执行作业,则例程从框462继续到框464以从第一个执行作业开始来选择下一个这种执行作业。在框466中,例程随后得到与正针对该执行作业而进行的操作的部分执行的当前中间状态有关的以及与针对该执行作业的当前数据状态有关的信息,并且在框468启动如下存储,即把中间状态信息存储到远离该计算节点的、持久存储该信息以便以后使用的一个或多个存储体中。在其它实施例中,比如,如果计算节点包括用以执行这种中间状态存储动作的管理软件或者如果该执行作业自身被配置来在得到命令时保存其自身的中间状态,则例程400可以替代地在框466和468中向该计算节点和/或执行作业发送消息以启动这样的存储并随后关闭。另外,在框466和468中可以在一些情形下使用之前保存的与执行作业相关的状态信息,比如确定要存储什么中间状态信息,并且在框466中(例如通过与计算节点和/执行作业通信)得到的任何新信息可以用来更新该执行作业的状态信息。随后,例程继续到框470以确定是否存在要终止的更多执行作业,并且如果是则返回框464.如之前讨论的那样,在一些实施例中,终止可以包括对当前正为一个程序执行的所有执行作业进行终止,比如临时暂停该程序的执行。
如果在框470替代地确定没有更多的执行作业要终止,则例程在框472更新与所终止的执行作业的中间状态有关的状态信息,并可选地对一些或全部执行作业的执行从所存储的中间状态开始的以后恢复进行时间安排。例如,在其中一个或多个执行作业正从第一组或者一个或多个计算节点被移动到第二组或者一个或多个其它计算节点的情况中,可以以基本立即的方式发生进行了时间安排的那些执行作业的执行的以后恢复,使得用户可以察觉不到执行的终止和恢复或者计算节点之间的执行作业的移动。另外,对以后恢复的时间安排可以包括在以后恢复的时刻启动要在框405中接收的新请求,这将会促进之前关于框475针对那些执行作业所讨论的恢复行为。
如果在框410替代地确定框405中接收的信息的类型是其它类型的请求,则例程替代地继续到框480以适当地执行所指示的其它请求。这样的其它请求可以包括例如关于用户的管理操作,比如用户登记到DPE服务,用户检查账户信息或DPE服务的其它信息,用户监控他们程序的正在进行的执行(例如,通过接收与该程序的一个或多个执行作业的中间状态或其它状态有关的一些或全部信息),用户对当前或之前请求的程序执行或者其它所提供的功能付费,等等。
在框450、455、460、472、475、480或485之后,例程继续到框490以可选地执行一个或更多其它任务。这样的其它任务可以包括例如一个或多个如下项:监控各种程序的执行,比如通过将用于状态信息的请求发送到计算节点(例如,当满足指示的标准时周期性地发送等);自动决定终止执行作业的执行和/或恢复之前在各种情况下被终止的执行作业的执行(比如在安排好的时间),以对在计算节点之间移动执行作业进行协调,以维持所请求的用于程序执行的QoS水平(例如,通过将执行作业的执行维持在彼此最大的接近度之内和/或维持在对由执行作业正使用的输入数据具有最大接近度,通过维持执行的彼此最小的接近度以增强在单个地理位置中多个计算节点发生故障的事件中的可用性和可靠性,等),以管理计算节点的使用不足和使用过度,等等。在框490之后,例程继续到框495以决定是否继续,比如一直到(例如从DPE服务的操作者)接收到明确的终止指令。如果决定继续,则例程返回框405,而如果不是,则继续到框499并结束。
图5是计算节点管理器例程500的示例的流程图。该例程可以通过例如图1B的模块179的执行来提供,或者由在图1A的计算节点120上执行的其它管理软件、图1B的计算***182、图3的计算节点360等来提供。在所示实施例中,在计算节点上的管理软件对该计算节点上的执行作业的执行的一些方面进行管理,而在其它实施例中,关于图5描述的一些或全部功能可以替代地由图4A和图4B的***管理器例程400执行,或者替代地由正在计算节点上执行的执行作业来执行。
在所示实施例中,例程在框505开始,其中接收到了一个与在该计算节点上的一个或多个执行作业的执行有关的指示。例程继续到框510以确定该指示是否用以启动所指示的执行作业的执行。如果是,则例程确定对该执行作业要执行的多个操作(例如,基于在框505中关于该执行作业接收的信息或者从外部源取回的信息),并继续到框515以从第一个操作开始来选择下一个要执行的操作。框515-540在该示例实施例中被示出为正在以连续(serial)方式执行,使得以同步的方式在下一操作启动之前单独地执行每个操作,尽管将会理解的是在其它实施例中可以以其它方式来执行操作,比如以并行和/或以异步方式来执行一些或全部操作。
在框515之后,例程继续到框520以向例程400发送状态消息,指示所选操作的执行已经开始,并在框525中启动该操作的工作。在框530中,例程等待该操作工作的完成,并可选地对由该操作工作所产生的任何中间结果进行本地存储。在框535中,例程随后向例程400发送另一个状态消息,指示该操作的工作被完成了。在框540中,例程随后确定是否存储更多要执行的操作,如果是,则返回框515。
相反,如果在框510确定在框505接收的指示不是执行一个执行作业,则例程替代地继续到框585以适当地执行所指示的一个或多个其它操作。例如,在框505中接收的信息可以是来自例程400的对状态信息的请求,并且如果是这样,则框585可以获得该状态信息并将其提供给例程400。作为替代,框505中的信息可以是对执行作业的执行进行终止的指示,并且在框585中执行的动作可以包括相应动作(例如,清除临时存储在计算节点上的中间状态信息,比如在已经将该信息持久地存储在别处之后)。另外,关于框585所执行的动作可以包括来自例程400的请求,以启动对从针对当前执行的执行作业的操作的部分执行得到的中间状态进行的持久存储,并且如果是这样,则框585中的动作可以包括执行这样的动作(无论是立即,还是替代地在以便允许完成一个或多个操作的工作的一段短暂时间之后)。另外,在一些实施例和情形中,不同的执行作业可以以各种方式来协调,比如通过交换感兴趣的信息,并且框505中的信息可以是来自该程序的另一执行作业的信息或者来自这样的其它执行作业的对来自当前执行作业的信息的请求。
在框585之后,或者如果在框540替代地确定没有要执行的更多操作,例程继续到框590以可选地执行一个或多个其它任务,比如适当时与程序的其它执行作业相协调,以将管理动作作为执行该执行作业的一部分,等等。在框590之后,例程继续到框595以确定是否继续,比如直到接收到了明确的终止指示(例如,来自例程400或来自DPE服务的操作人员)。如果确定继续,则例程返回框505,并且如果不继续,则到框599以结束。
将会理解,在一些实施例中,可以以替代的方式来提供由前述例程所提供的功能,比如分割成多个例程或者合并成更少的例程。类似地,在一些实施例中,所示例程可以提供比描述的更多或更少的功能,比如在替代地缺少其它所示例程或者分别包括这样的功能的情况下,或者在改变了所提供的功能的数量的情况下)。另外,尽管各种操作可以被示为以特定方式(例如以连续的或以并行的方式)和/或以特定次序来执行,但所属领域技术人员将理解,在其它实施例中,可以以其它次序和其它方式来执行所述操作。所属领域技术人员还将理解,可以以不同的方式来构造上述的数据结构,比如通过将单个数据结构分成多个数据结构或者通过将多个数据结构合并成单个数据结构。类似地,在一些实施例中,所示数据结构可以存储比所描述的更多或更少的信息,比如在替代地缺少其它所示数据结构或者分别包括这样的信息的情况下,或者在改变了所存储的信息的数量或类型的情况下。
条款1.一种用于分布式程序执行的计算***以管理程序的分布式执行的方法,所述方法包括:
在分布式程序执行服务的计算***的控制下,分布式程序执行服务提供了可配置来执行多个用户的程序的大量计算节点,接收多个请求以使用所指示的输入数据来执行所指示的程序,每个请求来自所述多个用户中的一个并且包括该程序的指示和要用于该请求的输入数据,所述分布式程序执行服务通过如下方式来自动响应于每个请求:
针对请求,以分布式并行方式自动地选择大量计算节点中的多个来用于执行所指示的程序的多个执行作业,所述多个执行作业中的每一个具有多个操作,要使用针对所述执行作业而选择的所指示的输入数据的子集来执行所述多个操作;
对于多个计算节点的每一个,使用针对多个执行作业中的一个执行作业而选择的输入数据子集来在所述一个执行作业的计算节点上启动执行,该执行的启动包括在该计算节点上配置分布式文件***的一部分,以用于对由针对所述一个执行作业的多个操作中的一个或多个的完成了的工作所产生的中间输出数据进行本地存储;
在所述多个计算节点的至少一些上完成了多个执行作业的至少一些的执行之前,
自动监控所述至少一些执行作业的每一个的部分执行的状态,对所述至少一些执行作业的每一个的监控包括识别中间输出数据,所述中间输出数据被本地存储在用于执行了所述执行作业的计算节点的分布式文件***中,所述中间输出数据由其工作已完成的那个执行作业的一个或多个操作来产生;以及
确定终止所述至少一些执行作业的一个或多个在第一时刻的执行,并且响应于该确定并针对所述一个或多个执行作业的每一个,自动地启动对执行该执行作业的计算节点的分布式文件***上所存储的中间输出数据进行的远程持久存储;
在所述第一时刻之后的后来的第二时刻,针对所述一个或多个执行作业,通过启动在第一时刻没有完成的执行作业的操作的工作,来在所选的计算节点上启动该执行作业的恢复执行,所述恢复执行包括取回在第一时刻针对该执行作业而持久存储的中间输出数据,和启动对被取回的输出数据在第二时刻在所选计算节点上的分布式文件***的一部分上的存储;以及
在完成了所指示的程序的多个执行作业的执行之后,将来自所述执行的最终结果提供给所述一个用户。
条款2.如条款1所述的方法,对于至少一个请求的每一个,针对请求的所指示的程序是由分布式程序执行服务所提供的、被设计来以限定方式分割成用于并行执行的不同执行作业的一个程序,通过以限定方式将所指示的程序分割成所选择的数量的执行作业来自动确定所指示的程序的多个执行作业,并且对请求的所述响应还包括将针对请求的所指示的输入数据自动分割成所选数量的子集以及针对所确定的执行作业的每一个来选择被分割的输入数据之一。
条款3.如条款2所述的方法,其中所述分布式程序执行服务是基于费用的服务,使得提出被接收的多个请求的用户每一个都要使用所指示的输入数据来为所指示的程序的被请求的执行付费,其中由用户中的一个用户所付的费用对应于用于所述一个用户的所述指示的程序的执行的低优先级,以使得允许所指示的程序的执行被临时暂停来执行更高优先级的其它程序,并且其中对针对一个用户的一个或多个执行作业在第一时刻的执行进行终止的确定是基于:通过将针对所述一个用户的多个执行作业的全部选择来作为确定要终止执行的一个或多个执行作业,来临时暂停针对所述一个用户的所指示的程序的执行。
条款4.一种用于管理分布式程序执行的计算机实现的方法,所述方法包括:
在提供了对用户的分布式程序执行进行管理的分布式程序执行服务的一个或多个计算***的控制下,分布式程序执行服务提供了可配置来执行用户的程序的多个计算节点,
在所指示的程序的多个执行作业的执行在所述多个计算节点中的许多个上被启动之后,以第一用户的名义来执行所指示的程序的执行,并且以如下方式来使用所指示的输入数据:所述多个执行作业每个具有要使用所指示的输入数据的至少一些来执行的一个或多个操作,自动跟踪与在多个计算节点上的多个执行作业的执行状态有关的信息,所述跟踪包括识别中间结果,所述中间结果从完成了工作的多个执行作业的操作的子集而产生,并且被存储在所述多个计算节点上;
在确定终止所述多个执行作业的至少一个执行作业在第一时刻的执行之后,所述至少一个执行作业具有至少一个操作处在其工作已被完成的操作的子集中,并且具有至少一个其它操作不在所述子集中且其工作没有完成,通过使用跟踪的信息来自动识别所述至少一个操作,并且启动对所识别的从所述至少一个操作所产生的中间结果进行的持久存储;
在所述第一时刻之后的后来的第二时刻,在至少一个计算节点上启动所述至少一个执行作业的恢复执行,以便完成没有在所述子集中、其工作没有完成的所述至少一个其它操作的工作,并且以便不重复在所述子集中的所述至少一个操作的已完成的工作,以至少部分地基于持久存储的中间结果的方式来执行所述恢复执行;以及
在完成了所指示的程序的多个执行作业的执行之后,将来自该执行的最终结果提供给所述第一用户。
条款5.如条款4所述的方法,其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于确定将所述至少一个执行作业的执行从正在第一时刻执行所述至少一个执行作业的一个或多个计算节点移动到一个或多个其它计算节点,其中所述一个或多个其它计算节点是在第二时刻发生了所述至少一个执行作业的恢复执行的至少一个计算节点,并且其中所述第二时刻基本在所述第一时刻之后立即发生。
条款6.如条款4所述的方法,其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于将所指示的程序的执行进行临时暂停的请求,并且其中所述至少一个执行作业包括正在第一时刻执行的多个执行作业的全部。
条款7.如条款6所述的方法,其中被启动了至少一个执行作业的恢复执行的所述至少一个计算节点不同于在第一时刻以前执行所述至少一个执行作业的多个计算节点中的一个或多个。
条款8.如条款6所述的方法,其中被启动了至少一个执行作业的恢复执行的所述至少一个计算节点包括其所选数量与所述多个计算节点的数量不同的一个或多个计算节点。
条款9.如条款6所述的方法,其中从第一用户接收请求。
条款10.如条款6所述的方法,其中从不同于第一用户的第二用户接收请求。
条款11.如条款4所述的方法,其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于确定在正在第一时刻执行至少一个执行作业的一个或多个计算节点上执行在第一时刻的管理行为。
条款12.如条款4所述的方法,其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于确定在正在第一时刻执行所述只是奥一个执行作业的一个或多个计算节点上执行在第一时刻的一个或多个其它程序,所述一个或多个其它程序具有比所指示的程序更高的优先级。
条款13.如条款4所述的方法还包括:确定正对多个执行作业中的一个执行作业进行执行的多个计算节点中的一个节点在所述一个执行作业的执行期间发生了故障,并且在后来的时刻在不同的计算节点上自动重启所述一个执行作业的执行,所述重启执行的步骤包括重复所述一个执行作业的至少一个操作的工作,所述一个执行作业的工作之前在所述一个计算节点发生故障前已经完成。
条款14.如条款4所述的方法,其中在所述多个计算节点上的多个执行作业的执行由主导节点上执行的软件来管理,其中对所述多个执行作业的执行状态的自动跟踪包括维持所述主导节点上的与多个执行作业的执行状态有关的信息,并且其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于所述主导节点的故障。
条款15.如条款14所述的方法,其中执行被终止的所述至少一个执行作业包括正在第一时刻执行的多个执行作业的全部,其中启动所述至少一个执行作业的恢复执行包括启动新的第二主导节点的执行和在所述第二主导节点上复原(restore)被维持的来自该主导节点的与所述多个执行作业的执行状态有关的信息,并且其中所述至少一个执行作业在所述至少一个计算节点上的恢复执行由所述第二主导节点来管理。
条款16.如条款4所述的方法,其中启动所识别的中间结果的持久存储包括与持久存储所识别的中间结果的网络可访问远程存储服务进行交互。
条款17.如条款4所述的方法,其中启动所识别的中间结果的持久存储包括将所识别的中间结果存储在远离所述多个计算节点的位置。
条款18.如条款4所述的方法,其中,使用在所述多个计算节点上实现的分布式文件***来对在所述多个计算节点上存储的所识别的中间结果进行存储,并且其中启动所识别的中间结果的持久存储包括创建一个或多个逻辑存储体以代表所述分布式文件***的至少一部分,并将所识别的中间结果持久存储在远离所述多个计算节点的一个或多个存储节点上。
条款19.如条款4所述的方法还包括,在所述一个或多个计算***的控制下:
在完成了所述一个或多个执行作业的执行之后,在所述多个计算节点的一个或多个上启动一个或多个附加执行作业的执行,所述附加执行作业的至少一个使用了包括由所述一个或多个执行作业中的至少一个的完成的执行所产生的输出数据在内的输入数据;以及
在完成了所指示的程序的所述多个执行作业和所述附加执行作业的执行之后,产生最终结果来提供给所述第一用户,产生的最终结果至少部分地基于由所述多个执行作业和所述附加执行作业中的至少一些的完成的执行所产生的输出数据。
条款20.如条款4所述的方法,其中所指示的程序的多个执行作业的执行基于从第一用户接收的用于使用所指示的输入数据来执行所指示的程序的请求,其中从第一用户接收的请求包括对用于执行所指示的程序的附加配置信息的一个或多个指示,所述附加配置信息由所述一个或多个计算***用来作为执行所指示的程序的执行的一部分,所述附加配置信息包括以下信息中的至少一个:关于多个计算节点的数量的信息,关于计算节点被选择来用作所述多个计算节点要满足的一个或多个标准的信息,关于如何确定所指示的程序的多个执行作业的信息,以及关于如何选择要由所述多个执行作业使用的所指示输入数据的子集的信息,其中从一个或多个其它用户接收一个或多个其它请求来执行使用了所指示的其它输入数据的一个或多个所指示的程序,并且其中所述一个或多个计算***还自动地响应于其它请求以使用多个计算节点来执行所述一个或多个所指示的程序的分布式执行。
条款21.如条款20所述的方法,其中所述附加配置信息包括与多个计算节点的数量有关的信息和/或与计算节点被选择来用作所述多个计算节点要满足的一个或多个标准有关的信息,并且其中由所述一个或多个计算***进行的所述指示的程序的执行的工作包括至少部分地基于所述附加配置信息来自动地选择用于执行所指示的程序的分布式执行的多个计算节点。
条款22.如条款4所述的方法,其中所指示的程序被设计来对多个输入数据子集的每一个执行一个或多个映射操作(map function)以及对所述一个或多个映射操作的结果执行一个或多个缩减操作(reduce function),并且其中所述方法还包括产生多个执行作业以便每个执行作业实现了所述映射操作的至少一个和/或所述缩减操作的至少一个。
条款23.如条款4所述的方法,其中所述分布式程序执行服务使用虚拟化技术,使得所述多个计算节点对于多个物理计算***的每一个都包括由所述物理计算***主控的、每个都能执行至少一个执行作业的多个虚拟机,其中由所述第一用户选择的多个计算节点每一个都是受控的虚拟机,并且其中所述多个执行作业每一个都作为虚拟机映像来执行。
条款24.一种计算机可读介质,其内容使得计算***能够通过一种方法来管理程序的分布式执行,所述方法包括:
跟踪与在所个计算节点上的所指示的程序的分布式执行的状态有关的信息,所指示的程序具有在所述多个计算节点上执行的多个执行作业,所述执行作业每一个具有一个或多个要执行的操作,所跟踪的状态信息包括与从完成工作的多个执行作业的操作产生的中间结果有关的信息;
在完成至少一个执行作业的全部操作的工作之前对所述至少一个执行作业的执行进行终止以后,所述至少一个执行作业具有完成了工作的至少一个操作,通过自动地启动所述至少一个执行作业的除所述至少一个操作以外的操作的恢复工作,来继续所指示的程序的分布式执行;和
在完成了所指示的程序的分布式执行以后,提供来自分布式执行的最终结果的指示。
条款25.如条款24所述的计算机可读介质,其中所述计算***是一个分布式程序执行服务的一部分,所述分布式程序执行服务提供了可配置来为所述分布式程序执行服务的用户执行分布式程序执行的大量计算节点,其中以所述分布式程序执行服务的第一用户的名义来启动所指示的程序的分布式执行,并且所述分布式程序执行服务使用用于由第一用户指示的所指示的程序的输入数据,其中所述多个计算节点包括由第一用户指定的数量的计算节点,并且所述多个计算节点的至少一些是从所述大量计算节点中选择的,其中所述方法还包括在第一时刻决定终止所述至少一个执行作业的执行,并自动启动对从所述至少一个操作产生的中间结果的持久存储,并且其中所指示的程序的分布式执行的继续在比第一时刻更晚的第二时刻处被执行,并且包括取回和使用被持久存储的中间结果的至少一些。
条款26.如条款24所述的计算机可读介质,其中,基于正执行所述至少一个执行作业的多个计算节点的一个或多个在第一时刻的故障来终止所述至少一个执行作业的执行,其中所述至少一个执行作业的至少一个操作的工作包括在比第一时刻更早的一个时刻持久地存储从所述工作的完成而产生的中间结果,并且其中所指示的程序的分布式执行的继续在比第一时刻更晚的第二时刻处被执行,并且包括取回和使用被持久存储的中间结果的至少一些。
条款27.如条款24所述的计算机可读介质,其中所述计算机可读介质是存储了上述内容的计算机***的内存器和包括了含有所述内容的被产生的存储数据信号的数据传输介质中的至少一个,并且其中所述内容是在执行时使得所述计算***执行所述方法的指令。
条款28.一种配置来管理分布式程序执行的计算***,包括:
一个或多个内存器;和
***管理器部件,其被配置为通过如下方式针对分布式执行服务的多个用户的每一个来管理用于用户的分布式执行:
从用户接收指示来执行相关的多个执行作业的分布式执行;
在多个计算节点上启动所述多个执行作业的执行;
在执行了所述多个执行作业中的至少一个执行作业的部分执行之后并且在完成所述至少一个执行作业的执行之前,确定终止所述至少一个执行作业的执行,并自动启动对所述至少一个执行作业的部分执行的中间状态的持久存储;
在一个后来的时刻,取回被持久存储的所述至少一个执行作业的部分执行的中间状态,并至少部分地基于取回的持久存储的中间状态来恢复所述至少一个执行作业的执行;以及
在完成了所述多个执行作业的执行之后,将来自执行的最终结果提供给用户。
条款29.如条款28所述的所述的计算***,其中用于多个用户中的一个用户的至少一个执行作业的执行使用了第一组输入数据,并且在完成的时候产生第二组输出数据,其中用于所述一个用户的所述至少一个执行作业的部分执行使用了所述第一组输入数据的至少一些来产生所述第二组输出数据的子集,并且其中用于所述一个用户的所述至少一个执行作业的部分执行的中间结果的持久存储包括对所产生的所述第二组输出数据的子集进行存储以便以后使用。
条款30.如条款29所述的所述的计算***,其中来自所述一个用户的用以执行相关的所述多个执行作业的分布式执行的指示包括通过所述分布式执行服务把要被执行的程序自动地分割成相关的多个执行作业的指示,以及包括要用于所述程序的输入数据包括了所述第一组输入数据的指示,其中所述一个用户的至少一个执行作业包括多个操作,每个操作对所述第一组输入数据的一部分进行操作,并在完成的时候产生所述第二组输出数据的一部分,其中所述一个用户的至少一个执行作业的部分执行包括完成的多个操作的子集,其中所产生的所述第二组输出数据的子集包括所述第二组输出数据的由完成了多个操作的子集所产生的部分,并且其中所述一个用户的至少一个执行作业的部分执行中间状态的持久存储还包括:对没有被完成了多个操作的子集用来产生所述第二组输出数据的子集的、所述第一组输入数据的一个或多个部分进行存储。
条款31.如条款28所述的计算***,其中所述***管理器部件包括用于由所述计算***执行的软件指令。
条款32.如条款28所述的计算***,其中所述***管理器部件由用于对分布式执行服务的用户的分布式执行进行管理的装置构成,所述装置通过如下方式来进行管理:
从用户接收指示来执行相关的多个执行作业的分布式执行;
在多个计算节点上启动所述多个执行作业的执行;
在执行了所述多个执行作业中的至少一个执行作业的部分执行之后并且在完成所述至少一个执行作业的执行之前,确定终止所述至少一个执行作业的执行,并自动启动对所述至少一个执行作业的部分执行的中间状态的持久存储;
在一个后来的时刻,取回被持久存储的所述至少一个执行作业的部分执行的中间状态,并至少部分地基于取回的持久存储的中间状态来恢复所述至少一个执行作业的执行;以及
在完成了所述多个执行作业的执行之后,将来自执行的最终结果提供给用户。
从前文可以理解,尽管本文已经以说明的目的描述了具体的实施例,然而可以在不脱离本发明精神和范围的情况下作出各种修改。因此,本发明仅由所附权利要求以及其中记载的要素来限定。另外,尽管以特定的权利要求形式表现了本发明的某些方面,然而本发明意在涵盖各种可用的权利要求形式的本发明的方面。例如,尽管当前仅仅将本发明的一些方面记载为以计算机可读介质来实现,然而其它方面也可以这么实现。
Claims (14)
1.一种用于管理程序的分布式执行的计算机实现的方法,所述方法包括:
在提供对用于用户的程序的分布式执行进行管理的分布式程序执行服务的一个或多个计算***的控制下,所述分布式程序执行服务提供可配置来执行所述用于用户的程序的大量计算节点,
在指示的程序的多个执行作业的执行在所述大量计算节点中的多个上被启动之后,以第一用户的名义来执行所述指示的程序的执行,并且以如下方式来使用指示的输入数据:所述多个执行作业均具有要使用所述指示的输入数据的至少一些来执行的一个或多个操作,自动跟踪与在所述多个计算节点上的多个执行作业的执行的状态有关的信息,所述跟踪包括识别中间结果,所述中间结果从完成工作的多个执行作业的操作的子集而产生,并且被存储在所述多个计算节点上;
在确定终止所述多个执行作业的至少一个执行作业在第一时刻的执行之后,所述至少一个执行作业具有至少一个操作处在完成了工作的操作的子集中,并且具有至少一个其它操作不在所述子集中且其工作没有完成,通过使用跟踪的信息来自动识别所述至少一个操作,并且启动对所识别的从所述至少一个操作产生的中间结果进行的持久存储;启动所述持久存储包括与网络可访问存储服务进行交互以将所述识别的中间结果持久存储在逻辑存储体中,所述逻辑存储体是使用远离所述多个计算节点的网络可访问存储服务的一个或多个存储节点来提供的;
在所述第一时刻之后的后来的第二时刻,在至少一个计算节点上启动所述至少一个执行作业的恢复执行,以便完成没有在所述工作完成的子集中的至少一个其它操作的工作,并且以便不重复在所述子集中的所述至少一个操作的已完成的工作,以至少部分地基于持久存储的中间结果的方式来执行所述恢复执行;所述恢复执行包括将所述逻辑存储体附加到至少一个计算节点以提供对所述逻辑存储体中持久存储的中间结果的访问;以及
在完成所述指示的程序的多个执行作业的执行之后,将来自该执行的最终结果提供给所述第一用户。
2.如权利要求1所述的方法,其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于确定将所述至少一个执行作业的执行从正在第一时刻执行所述至少一个执行作业的一个或多个计算节点移动到一个或多个其它计算节点,其中所述一个或多个其它计算节点是在第二时刻发生了所述至少一个执行作业的恢复执行的至少一个计算节点,并且其中所述第二时刻基本在所述第一时刻之后立即发生。
3.如权利要求1所述的方法,其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于将所述指示的程序的执行进行临时暂停的请求,并且其中所述至少一个执行作业包括正在所述第一时刻执行的多个执行作业的全部。
4.如权利要求1所述的方法,还包括:确定正对多个执行作业中的一个执行作业进行执行的多个计算节点中的一个节点在所述一个执行作业的执行期间发生了故障,并且在后来的时刻在不同的计算节点上自动重启所述一个执行作业的执行,所述重启执行包括重复所述一个执行作业的至少一个操作的工作,所述一个执行作业的工作之前在所述一个计算节点发生故障前已经完成。
5.如权利要求1所述的方法,其中在所述多个计算节点上的多个执行作业的执行由第一主导节点上执行的软件来管理,其中对所述多个执行作业的执行状态的自动跟踪包括维持所述第一主导节点上的与多个执行作业的执行状态有关的信息,并且其中所述确定终止所述至少一个执行作业在第一时刻的执行至少部分地基于所述第一主导节点的故障。
6.如权利要求5所述的方法,其中执行被终止的所述至少一个执行作业包括正在所述第一时刻执行的多个执行作业的全部,其中启动所述至少一个执行作业的恢复执行包括启动新的第二主导节点的执行和在所述第二主导节点上复原被维持的、来自第一主导节点的、与所述多个执行作业的执行状态有关的信息,并且其中所述至少一个执行作业在所述至少一个计算节点上的恢复执行由所述第二主导节点来管理。
7.如权利要求1所述的方法,其中启动所述识别的中间结果的持久存储包括将所述识别的中间结果存储在远离所述多个计算节点的位置。
8.如权利要求1所述的方法,其中,使用在所述多个计算节点上实现的分布式文件***来对在所述多个计算节点上存储的所述识别的中间结果进行存储,并且其中所述分布式文件***的至少一部分存储在所述逻辑存储体上。
9.如权利要求1所述的方法,还包括在所述一个或多个计算***的控制下:
在完成了所述一个或多个执行作业的执行之后,在所述多个计算节点的一个或多个上启动一个或多个附加执行作业的执行,所述附加执行作业的至少一个使用包括由所述一个或多个执行作业中的至少一个的完成的执行所产生的输出数据在内的输入数据;以及
在完成了所述指示的程序的所述多个执行作业和所述附加执行作业的执行之后,产生最终结果来提供给所述第一用户,所述产生的最终结果至少部分地基于由所述多个执行作业和所述附加执行作业中的至少一些的完成的执行所产生的输出数据。
10.如权利要求1所述的方法,其中所述指示的程序被设计来对多个输入数据子集的每一个执行一个或多个映射操作以及对所述一个或多个映射操作的结果执行一个或多个缩减操作,并且其中所述方法还包括产生多个执行作业以便均实现所述映射操作的至少一个和/或所述缩减操作的至少一个。
11.如权利要求1所述的方法,其中所述分布式程序执行服务使用虚拟化技术,使得所述大量计算节点对于多个物理计算***的每一个都包括由所述物理计算***主控的、每个都能执行至少一个执行作业的多个虚拟机,其中选择用于所述第一用户的多个计算节点均是受控的虚拟机,并且其中所述多个执行作业均作为虚拟机映像的部分来执行。
12.一种用于管理针对分布式执行服务的用户的分布式执行的设备,包括:
用于从所述用户接收指示来执行具有多个执行作业的指示的程序的分布式执行的装置;
用于在多个计算节点上启动所述多个执行作业的执行的装置;
用于在进行了所述多个执行作业中的至少一个执行作业的部分执行之后并且在完成所述至少一个执行作业的执行之前,确定终止所述至少一个执行作业的执行,并自动启动对所述至少一个执行作业的部分执行的中间状态的持久存储的装置;其中,启动所述持久存储包括与网络可访问存储服务进行交互以将所述部分执行的中间状态持久存储在逻辑存储体中,所述逻辑存储体是使用远离所述多个计算节点的网络可访问存储服务的一个或多个存储节点来提供的;
用于在后来的时刻,取回被持久存储的所述至少一个执行作业的部分执行的中间状态,并至少部分地基于取回的持久存储的中间状态来恢复所述至少一个执行作业的执行的装置;其中,取回被持久存储的所述部分执行的中间状态包括:将所述逻辑存储体附加到用于恢复执行的至少一个计算节点以提供对所述逻辑存储体中持久存储的中间状态的访问;以及
用于在完成了所述多个执行作业的执行之后,将来自执行的最终结果提供给用户的装置。
13.如权利要求12所述的设备,其中至少一个执行作业的执行使用第一组输入数据,并且在完成的时候产生第二组输出数据,其中所述至少一个执行作业的部分执行使用所述第一组输入数据的至少一些来产生所述第二组输出数据的子集,并且其中所述至少一个执行作业的部分执行的中间状态的持久存储包括对所产生的所述第二组输出数据的子集进行存储以便以后使用。
14.如权利要求12所述的设备,其中来自所述用户的用以执行分布式执行的指示指示所述程序并且还指示要用于所指示的程序的第一组输入数据,其中所指示的程序通过所述分布式执行服务被自动地分割成所述多个执行作业,其中所述至少一个执行作业包括多个操作,每个操作对所述第一组输入数据的一部分进行操作,并在完成的时候产生第二组输出数据的一部分,其中所述至少一个执行作业的部分执行包括完成的多个操作的子集,其中所述产生的所述第二组输出数据的一部分是由完成的多个操作的子集所产生的,并且其中所述至少一个执行作业的部分执行的中间状态的持久存储还包括:对没有被完成的多个操作的子集用来产生所述第二组输出数据的子集的、所述第一组输入数据的一个或多个部分进行存储。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/334,004 | 2008-12-12 | ||
US12/334,004 US8370493B2 (en) | 2008-12-12 | 2008-12-12 | Saving program execution state |
PCT/US2009/067003 WO2010068592A1 (en) | 2008-12-12 | 2009-12-07 | Saving program execution state |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102246152A CN102246152A (zh) | 2011-11-16 |
CN102246152B true CN102246152B (zh) | 2015-05-27 |
Family
ID=42242144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980149598.8A Active CN102246152B (zh) | 2008-12-12 | 2009-12-07 | 保存程序执行状态 |
Country Status (5)
Country | Link |
---|---|
US (4) | US8370493B2 (zh) |
EP (1) | EP2359256A4 (zh) |
JP (2) | JP5357266B2 (zh) |
CN (1) | CN102246152B (zh) |
WO (1) | WO2010068592A1 (zh) |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405348B2 (en) * | 2008-04-21 | 2016-08-02 | Adaptive Computing Enterprises, Inc | System and method for managing energy consumption in a compute environment |
US20140298349A1 (en) * | 2008-04-21 | 2014-10-02 | Adaptive Computing Enterprises, Inc. | System and Method for Managing Energy Consumption in a Compute Environment |
CA2719005A1 (en) | 2008-04-21 | 2009-10-29 | Adaptive Computing Enterprises, Inc. | System and method for managing energy consumption in a compute environment |
US8296419B1 (en) | 2009-03-31 | 2012-10-23 | Amazon Technologies, Inc. | Dynamically modifying a cluster of computing nodes used for distributed execution of a program |
WO2011013120A1 (en) * | 2009-07-30 | 2011-02-03 | Rascalim Software Security Ltd. | System and method for limiting execution of software to authorized users |
US8769543B2 (en) * | 2010-09-27 | 2014-07-01 | Throughputer, Inc. | System and method for maximizing data processing throughput via application load adaptive scheduling and context switching |
WO2011153155A2 (en) | 2010-05-30 | 2011-12-08 | Sonian, Inc. | Method and system for arbitraging computing resources in a cloud computing environment |
US8260840B1 (en) * | 2010-06-28 | 2012-09-04 | Amazon Technologies, Inc. | Dynamic scaling of a cluster of computing nodes used for distributed execution of a program |
US8719415B1 (en) | 2010-06-28 | 2014-05-06 | Amazon Technologies, Inc. | Use of temporarily available computing nodes for dynamic scaling of a cluster |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US8443367B1 (en) * | 2010-07-16 | 2013-05-14 | Vmware, Inc. | Federated management in a distributed environment |
US8812677B2 (en) * | 2010-12-21 | 2014-08-19 | Hitachi, Ltd. | Data processing method and apparatus for remote storage system |
US9223611B2 (en) | 2010-12-28 | 2015-12-29 | Microsoft Technology Licensing, Llc | Storing and resuming application runtime state |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US8843932B2 (en) * | 2011-01-12 | 2014-09-23 | Wisconsin Alumni Research Foundation | System and method for controlling excessive parallelism in multiprocessor systems |
WO2012105056A1 (ja) * | 2011-02-04 | 2012-08-09 | 株式会社日立製作所 | 並列分散処理システムのデータ転送制御方法、並列分散処理システム及び記憶媒体 |
US9778915B2 (en) | 2011-02-28 | 2017-10-03 | Microsoft Technology Licensing, Llc | Distributed application definition |
US9990184B2 (en) | 2011-03-25 | 2018-06-05 | Microsoft Technology Licensing, Llc | Distributed component model |
CN103403696B (zh) * | 2011-03-29 | 2015-11-25 | 英派尔科技开发有限公司 | 针对漫游应用的“回家”特征 |
US9465589B2 (en) | 2011-04-05 | 2016-10-11 | Microsoft Technology Licensing, Llc | Stateful component authoring and execution |
US20120284360A1 (en) * | 2011-04-11 | 2012-11-08 | Ebay Inc. | Job planner and execution engine for automated, self-service data movement |
US8612580B2 (en) * | 2011-05-31 | 2013-12-17 | Microsoft Corporation | Distributed computing framework |
US8726081B2 (en) * | 2011-06-14 | 2014-05-13 | International Business Machines Corporation | Event based model for managing application health and failure recovery for asynchronous processing systems |
US9148846B2 (en) * | 2011-06-30 | 2015-09-29 | Motorola Solutions, Inc. | Methods for intelligent network selection |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
RU2494453C2 (ru) * | 2011-11-24 | 2013-09-27 | Закрытое акционерное общество "Лаборатория Касперского" | Способ распределенного выполнения задач компьютерной безопасности |
CN102609451B (zh) * | 2012-01-11 | 2014-12-17 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
US9098328B2 (en) * | 2012-06-26 | 2015-08-04 | Wal-Mart Stores, Inc. | Systems and methods for event stream processing |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9373074B2 (en) * | 2012-10-09 | 2016-06-21 | Qualcomm Incorporated | Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes |
US9148350B1 (en) | 2013-03-11 | 2015-09-29 | Amazon Technologies, Inc. | Automated data synchronization |
US10313345B2 (en) * | 2013-03-11 | 2019-06-04 | Amazon Technologies, Inc. | Application marketplace for virtual desktops |
US9002982B2 (en) | 2013-03-11 | 2015-04-07 | Amazon Technologies, Inc. | Automated desktop placement |
US10142406B2 (en) | 2013-03-11 | 2018-11-27 | Amazon Technologies, Inc. | Automated data center selection |
US9477523B1 (en) * | 2013-06-25 | 2016-10-25 | Amazon Technologies, Inc. | Scheduling data access jobs based on job priority and predicted execution time using historical execution data |
US10623243B2 (en) | 2013-06-26 | 2020-04-14 | Amazon Technologies, Inc. | Management of computing sessions |
US10686646B1 (en) | 2013-06-26 | 2020-06-16 | Amazon Technologies, Inc. | Management of computing sessions |
CN103414577B (zh) * | 2013-08-19 | 2017-04-26 | 北京高森明晨信息科技有限公司 | 用于Hadoop平台的计费***及方法 |
US11132173B1 (en) * | 2014-02-20 | 2021-09-28 | Amazon Technologies, Inc. | Network scheduling of stimulus-based actions |
JP2015158773A (ja) * | 2014-02-24 | 2015-09-03 | 富士通株式会社 | 仮想装置の動作検証装置,仮想装置の動作検証システム及びプログラム |
KR20150106233A (ko) * | 2014-03-11 | 2015-09-21 | 삼성전자주식회사 | 복수의 전자 장치에서 기능을 수행하는 방법 및 전자 장치 |
CN103995745B (zh) * | 2014-05-22 | 2017-09-05 | 华为技术有限公司 | 一种ip硬盘任务执行方法以及ip硬盘 |
US9641580B2 (en) * | 2014-07-01 | 2017-05-02 | Microsoft Technology Licensing, Llc | Distributed stream processing in the cloud |
US9678773B1 (en) * | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US10489203B2 (en) * | 2015-04-03 | 2019-11-26 | Oracle International Corporation | System and method for using an in-memory data grid to improve performance of a process defined by a process execution language in a SOA middleware environment |
CN106202092B (zh) * | 2015-05-04 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 数据处理的方法及*** |
US20160344671A1 (en) * | 2015-05-19 | 2016-11-24 | Amazon Technologies, Inc. | Executing commands on virtual machine instances in a distributed computing environment |
US10397232B2 (en) * | 2015-06-25 | 2019-08-27 | Amazon Technologies, Inc. | Controlling user access to command execution |
WO2018004367A1 (en) * | 2016-06-27 | 2018-01-04 | Emc Corporation | Techniques for accurately apprising a user of progress in booting a virtual appliance |
JP6542172B2 (ja) * | 2016-09-20 | 2019-07-10 | 株式会社東芝 | ジョブ実行制御装置およびプログラム |
CN113535382A (zh) * | 2016-12-23 | 2021-10-22 | 创新先进技术有限公司 | 资源处理方法及装置 |
US10521312B1 (en) * | 2017-03-17 | 2019-12-31 | Amazon Technologies, Inc. | Downtime management during database instance patching |
US10498817B1 (en) * | 2017-03-21 | 2019-12-03 | Amazon Technologies, Inc. | Performance tuning in distributed computing systems |
JP6874706B2 (ja) * | 2018-02-07 | 2021-05-19 | オムロン株式会社 | アプリケーションプログラムを生成する方法、装置、プログラム |
US11099917B2 (en) * | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
TWI674780B (zh) * | 2018-11-23 | 2019-10-11 | 財團法人工業技術研究院 | 網路服務系統及網路服務方法 |
US11099891B2 (en) | 2019-04-22 | 2021-08-24 | International Business Machines Corporation | Scheduling requests based on resource information |
US11347564B2 (en) * | 2019-04-24 | 2022-05-31 | Red Hat, Inc. | Synchronizing batch job status across nodes on a clustered system |
US11994964B2 (en) * | 2021-05-28 | 2024-05-28 | Paypal, Inc. | Dynamic node insertion of secondary services for high-availability during main decision failure at runtime |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
US12015603B2 (en) | 2021-12-10 | 2024-06-18 | Amazon Technologies, Inc. | Multi-tenant mode for serverless code execution |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1368809A (zh) * | 2001-02-02 | 2002-09-11 | 中国航天科技集团公司第七○七研究所 | 一种网络工作流管理方法 |
CN101038564A (zh) * | 2006-11-21 | 2007-09-19 | 西安交通大学 | 应用服务器分级再生方法 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0616279B2 (ja) * | 1986-09-30 | 1994-03-02 | 工業技術院長 | 仮想情報処理システム |
JPH08123768A (ja) * | 1994-10-21 | 1996-05-17 | Mitsubishi Electric Corp | 分散システム管理方式及び分散システム管理方法 |
US6832380B1 (en) | 1996-06-28 | 2004-12-14 | Tarantella, Inc. | Client-server application partitioning with metering technique for distributed computing |
US6128642A (en) | 1997-07-22 | 2000-10-03 | At&T Corporation | Load balancing based on queue length, in a network of processor stations |
US6802053B1 (en) | 1997-08-18 | 2004-10-05 | National Instruments Corporation | Graphical programming system with distributed block diagram execution and front panel display |
US6490693B1 (en) | 1999-08-31 | 2002-12-03 | International Business Machines Corporation | Dynamic reconfiguration of a quorum group of processors in a distributed computing system |
JP2001306341A (ja) * | 2000-04-26 | 2001-11-02 | Mitsubishi Electric Corp | コンピュータシステムおよびコンピュータ読み取り可能な記録媒体 |
US6799208B1 (en) * | 2000-05-02 | 2004-09-28 | Microsoft Corporation | Resource manager architecture |
US6934755B1 (en) * | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US20030149735A1 (en) * | 2001-06-22 | 2003-08-07 | Sun Microsystems, Inc. | Network and method for coordinating high availability system services |
US7305492B2 (en) | 2001-07-06 | 2007-12-04 | Juniper Networks, Inc. | Content service aggregation system |
US7367028B2 (en) | 2001-08-14 | 2008-04-29 | National Instruments Corporation | Graphically deploying programs on devices in a system |
US7043393B2 (en) | 2001-08-15 | 2006-05-09 | National Instruments Corporation | System and method for online specification of measurement hardware |
GB0213073D0 (en) | 2002-06-07 | 2002-07-17 | Hewlett Packard Co | Method of maintaining availability of requested network resources |
US7559060B2 (en) | 2003-06-10 | 2009-07-07 | National Instruments Corporation | Time-bounded program execution |
JP2008502953A (ja) * | 2003-11-17 | 2008-01-31 | ヴァージニア テック インテレクチュアル プロパティーズ,インコーポレイテッド | 分散システムにおけるトランスペアレントなチェックポインティング及びプロセス移行 |
US7415704B2 (en) * | 2004-05-20 | 2008-08-19 | Sap Ag | Sharing objects in runtime systems |
US7953843B2 (en) | 2004-06-14 | 2011-05-31 | Hewlett-Packard Development Company, L.P. | System and method for evaluating a heterogeneous cluster for supporting expected workload in compliance with at least one service parameter |
US7756919B1 (en) | 2004-06-18 | 2010-07-13 | Google Inc. | Large-scale data processing in a distributed and parallel processing enviornment |
US7155558B1 (en) * | 2004-07-21 | 2006-12-26 | Vmware, Inc. | Providing access to a raw data storage unit in a computer system |
WO2007074408A2 (en) * | 2005-07-14 | 2007-07-05 | Yotta Yotta, Inc. | Maintaining write order fidelity on a multi-writer system |
US7681075B2 (en) | 2006-05-02 | 2010-03-16 | Open Invention Network Llc | Method and system for providing high availability to distributed computer applications |
US7873422B2 (en) * | 2005-09-02 | 2011-01-18 | Sap Ag | Event-based coordination of process-oriented composite applications |
US8122427B2 (en) | 2006-01-04 | 2012-02-21 | Microsoft Corporation | Decentralized system services |
US8555288B2 (en) | 2006-05-17 | 2013-10-08 | Teradata Us, Inc. | Managing database utilities to improve throughput and concurrency |
US20070277154A1 (en) * | 2006-05-23 | 2007-11-29 | Microsoft Corporation | Testing distributed components |
US8365182B2 (en) | 2006-10-02 | 2013-01-29 | International Business Machines Corporation | Method and system for provisioning of resources |
US8086710B2 (en) * | 2006-10-30 | 2011-12-27 | Quest Software, Inc. | Identity migration apparatus and method |
JP4308241B2 (ja) * | 2006-11-10 | 2009-08-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム |
JP2008123357A (ja) * | 2006-11-14 | 2008-05-29 | Honda Motor Co Ltd | 並列計算機システム、並列計算方法および並列計算機用プログラム |
US7523123B2 (en) | 2006-11-16 | 2009-04-21 | Yahoo! Inc. | Map-reduce with merge to process multiple relational datasets |
US7694188B2 (en) * | 2007-02-05 | 2010-04-06 | Microsoft Corporation | Disk failure prevention and error correction |
US7823023B2 (en) * | 2007-02-26 | 2010-10-26 | Red Hat, Inc. | Test framework for testing an application |
US20080250227A1 (en) | 2007-04-04 | 2008-10-09 | Linderman Michael D | General Purpose Multiprocessor Programming Apparatus And Method |
JP5251002B2 (ja) * | 2007-05-25 | 2013-07-31 | 富士通株式会社 | 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム |
US7769864B2 (en) | 2007-08-02 | 2010-08-03 | Sap Ag | Adaptation of clusters to virtualization technologies |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US8086726B2 (en) * | 2007-12-21 | 2011-12-27 | Sap Ag | XI monitoring in high load scenarios (monitoring cockpit) |
US7994790B2 (en) | 2008-03-19 | 2011-08-09 | Baker Hughes Incorporated | Electromagnetic and magnetostatic shield to perform measurements ahead of the drill bit |
US20090254621A1 (en) * | 2008-04-08 | 2009-10-08 | Venali, Inc. | Peer-to-peer messaging of facsimile messages |
US8392312B2 (en) | 2008-09-24 | 2013-03-05 | Netapp, Inc. | Adaptive scheduling of storage operations based on utilization of a multiple client and server resources in a distributed network storage system |
US8627123B2 (en) * | 2010-03-25 | 2014-01-07 | Microsoft Corporation | Managing power provisioning in distributed computing |
-
2008
- 2008-12-12 US US12/334,004 patent/US8370493B2/en active Active
-
2009
- 2009-12-07 JP JP2011540808A patent/JP5357266B2/ja active Active
- 2009-12-07 CN CN200980149598.8A patent/CN102246152B/zh active Active
- 2009-12-07 WO PCT/US2009/067003 patent/WO2010068592A1/en active Application Filing
- 2009-12-07 EP EP09832425A patent/EP2359256A4/en not_active Ceased
-
2013
- 2013-01-09 US US13/737,815 patent/US8935404B2/en active Active
- 2013-08-29 JP JP2013178559A patent/JP5843823B2/ja active Active
-
2014
- 2014-12-15 US US14/571,093 patent/US20150169412A1/en not_active Abandoned
-
2018
- 2018-01-10 US US15/867,516 patent/US11263084B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1368809A (zh) * | 2001-02-02 | 2002-09-11 | 中国航天科技集团公司第七○七研究所 | 一种网络工作流管理方法 |
CN101038564A (zh) * | 2006-11-21 | 2007-09-19 | 西安交通大学 | 应用服务器分级再生方法 |
Non-Patent Citations (1)
Title |
---|
蓝鲸分布式文件***的分布式分层资源管理模型;黄华等;《计算机研究与发展》;20050616;第1034-1035页 * |
Also Published As
Publication number | Publication date |
---|---|
JP5843823B2 (ja) | 2016-01-13 |
US11263084B2 (en) | 2022-03-01 |
US20100153955A1 (en) | 2010-06-17 |
US8370493B2 (en) | 2013-02-05 |
CN102246152A (zh) | 2011-11-16 |
US8935404B2 (en) | 2015-01-13 |
US20180129570A1 (en) | 2018-05-10 |
WO2010068592A1 (en) | 2010-06-17 |
EP2359256A1 (en) | 2011-08-24 |
EP2359256A4 (en) | 2012-11-07 |
US20130191847A1 (en) | 2013-07-25 |
US20150169412A1 (en) | 2015-06-18 |
JP2012511784A (ja) | 2012-05-24 |
JP5357266B2 (ja) | 2013-12-04 |
JP2013257903A (ja) | 2013-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102246152B (zh) | 保存程序执行状态 | |
US11425194B1 (en) | Dynamically modifying a cluster of computing nodes used for distributed execution of a program | |
US8260840B1 (en) | Dynamic scaling of a cluster of computing nodes used for distributed execution of a program | |
Rao et al. | Performance issues of heterogeneous hadoop clusters in cloud computing | |
US8321558B1 (en) | Dynamically monitoring and modifying distributed execution of programs | |
US9280390B2 (en) | Dynamic scaling of a cluster of computing nodes | |
US8418181B1 (en) | Managing program execution based on data storage location | |
CN103226539B (zh) | 针对云托管应用的服务水平目标 | |
CN102917025B (zh) | 一种云计算平台的业务迁移方法 | |
CN102103518A (zh) | 一种在虚拟化环境中管理资源的***及其实现方法 | |
CN102999369A (zh) | 虚拟机升级的方法及装置 | |
CN112099917B (zh) | 调控***容器化应用运行管理方法、***、设备及介质 | |
CN103414712A (zh) | 一种分布式虚拟桌面管理***和方法 | |
US9798483B2 (en) | Object storage power consumption optimization | |
CN107528871A (zh) | 存储***中的数据分析 | |
US11017417B1 (en) | Using incentives to manage computing resources | |
CN104754040A (zh) | 用于端到端云服务虚拟化的*** | |
Pan et al. | RETRACTED ARTICLE: Research on process customization technology for intelligent transportation cloud service platform | |
CN202662000U (zh) | 一种渲染农场节点虚拟化部署装置 | |
Weissman et al. | Azure Arc-Enabled Data Services | |
CN116360912A (zh) | 一种虚拟机调度方法、装置、核心网网元和网络设备 | |
CN117492922A (zh) | 一种虚拟机故障恢复方法、装置、设备及介质 | |
CN117931379A (zh) | 用于边缘计算的集群部署方法、装置、***、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |