计算集群内的资源实例群组的自动扩展的制作方法

文档序号:13426487阅读:247来源:国知局
计算集群内的资源实例群组的自动扩展的制作方法



背景技术:

许多公司和其它组织运营将许多计算系统互连以支持计算机网络的操作的计算机网络,诸如在计算系统共同定位(例如,作为本地网络的一部分)或替代地位于多个不同地理位置(例如,经由一个或多个专用或公共中间网络而连接的)的情况下。例如,安置有大量互连计算系统的数据中心已经是常见的,所述数据中心诸如由单个组织且代表单个组织来运营的专用数据中心、以及由实体作为业务运营以向客户或客户端提供计算资源的公共数据中心。一些公共数据中心运营商为各种客户端所拥有的硬件提供网络访问、电源和安全安装设施,而其它公共数据中心运营商则提供“全面服务”设施,所述“全面服务”设施还包括可供它们的客户端使用的硬件资源。这种大规模系统的示例包括在线商家、互联网服务提供商、在线业务(诸如照片处理服务)、公司网络、云计算服务(包括用于执行大型和/或复杂计算的高性能计算服务)、基于网络的托管服务等等。这些实体可以大量计算装置(例如,数千台主机)形式维持计算资源,这些计算装置安置在地理上分开的位置上,并且被配置为每天甚至每小时处理大量(例如,数百万个)事务。

用于商用硬件的虚拟化技术的出现为管理具有各种服务需求的许多客户的大规模计算资源提供了益处,从而允许各种计算资源和服务被多个客户有效且安全地共享。例如,虚拟化技术可以允许通过为每个用户提供由单个物理计算机器托管的一个或多个虚拟机来在多个用户间共享单个物理计算机器,其中每个这种虚拟机是充当不同逻辑计算系统的软件模拟,这为用户带来了它们是给定硬件计算资源的唯一运营商和管理员、同时还在各种虚拟机间提供应用隔离和安全的错觉。此外,一些虚拟化技术能够提供跨两个或更多个物理资源的虚拟资源,诸如具有跨多个不同物理计算系统的多个虚拟处理器的单个虚拟机。作为另一示例,虚拟化技术可以允许通过向每个用户提供可分布在多个数据存储装置间的虚拟数据存储来在多个用户间共享数据存储硬件,其中每个这种虚拟数据存储充当不同逻辑数据存储,这为用户带来了他们是数据存储资源的唯一运营商和管理员的错觉。

一种用于利用这些资源来处理数据的常规方法是用于分布式并行计算的mapreduce模型。在mapreduce系统中,大数据集可以被分割成更小块组,并且较小块组可以被分布到集群中的多个计算节点用于初始“映射”处理阶段。多个节点还可基于映射阶段结果执行第二“化简”处理阶段。在各种基于集群的分布式计算系统(包括实现mapreduce集群的一些基于集群的分布式计算系统)中,要由集群中的计算节点访问的数据可以存储在集群的虚拟资源实例内和/或存储在与集群的虚拟资源实例分开的数据存储系统中。在实现mapreduce集群的现有系统中,容量通常仅可通过调用系统的api(通常通过命令行接口)来手动添加或移除(例如,作为单独独立操作)。因此,mapreduce集群通常是供应不足或供应过度的,从而导致延迟(归因于供应不足)或浪费(归因于供应过度)。

附图说明

图1是示出实现mapreduce集群的自动扩展的服务提供商系统的一个实施方案的方框图。

图2是示出用于执行节点集群的自动扩展的方法的一个实施方案的流程图。

图3示出了根据一个实施方案的用于执行mapreduce作业的示例系统环境。

图4示出用于在分布式计算系统中执行mapreduce类型数据处理应用的方法的一个实施方案的流程图。

图5示出了根据一个实施方案的被配置为用于执行mapreduce作业的工作节点。

图6是示出用于定义虚拟计算资源实例集群的自动扩展策略的方法的一个实施方案的流程图。

图7是示出用于在mapreduce集群中执行自动扩展的方法的一个实施方案的流程图。

图8是示出用于在mapreduce集群中执行智能缩小操作的方法的一个实施方案的流程图。

图9是示出用于在实现计算资源实例集群自动扩展中采用监视服务的方法的一个实施方案的流程图。

图10示出了用于向客户端提供虚拟存储资源作为服务的对象存储模型的示例实施方案。

图11示出了示例服务提供商网络环境,其中可以实现用于在分布式计算系统中提供数据存储的方法和设备的实施方案。

图12是根据一些实施方案的示出实现包括基于块的存储服务的多个基于网络的服务的提供商网络的方框图。

图13示出了根据至少一些实施方案的示例提供商网络环境。

图14示出了根据一些实施方案的使用ip隧穿技术在网络底层上实现覆盖网络的示例数据中心。

图15是根据至少一个实施方案的向客户端提供存储虚拟化服务和硬件虚拟化服务的示例提供商网络的方框图。

图16是根据至少一个实施方案的示出向至少一些客户端提供虚拟专用网络的示例提供商网络的方框图。

图17是根据至少一些实施方案的示出被配置为实现本文所述技术的示例计算机系统的方框图。

虽然在本文中以若干实施方案和说明性附图为例来描述实施方案,但是本领域的技术人员将认识到,实施方案不限制于所述的实施方案和附图。应当理解,附图和其详细描述并不意图将实施方案限制于所公开的特定形式,相反,意图是,涵盖落在如随附权利要求限定的本公开的精神和范围内的所有修改、等效内容和替代型式。本文中使用的标题仅是出于组织目的,而不意在用于限制本说明书或权利要求的范围。如本申请的全文使用的,词语“可以”用于许可意义(即,表示具有可能),而非强制意义(即,表示必须)。类似地,词语“包括”表示“包括但不限于”。

具体实施方式

在本文描述了用于在基于集群的分布式计算系统(例如,apachetm框架)中实现计算资源实例自动扩展的方法和设备的各种实施方案。在一些实施方案中,这些技术可响应于来自客户端的请求(例如,客户端应用,作为服务的客户的最终用户、服务订户或第三方服务可通过客户端应用与服务交互)而由分布式计算服务自动应用(例如,以编程的方式),以便使得集群能够自动扩展。如本文更详细地描述的,客户端可以定义在应用在集群上执行期间要监视的度量,并且可定义或选择自动扩展策略,所述自动扩展策略包括自动扩展触发条件(例如,取决于所监视的度量的条件)。在一些实施方案中,策略可以定义当条件满足时要采取的扩展动作,可以指定集群(或其子集)中的容量应当被增加或减少的量,并且可以识别策略所适用的集群的部分。

hadoop框架中的工作负载在本质上非常棘手,通常是批量定向的,并且可能在某时间段内消耗大量资源,然后缩小它们资源需要。另外,分布式计算系统(例如,基于云的系统)中的资源在某种程度上是可替的,因为进程可以在需要资源时得到资源并且然后将它们丢弃掉。本文所述的系统和方法可以用于管理采用这两个模型的系统中的计算资源实例。例如,它们可以用于基于工作负载以编程的方式来向上或向下扩展集群。在一些实施方案中,不知道他们将需要多少容量的服务提供商客户可以创建小的集群(例如,一个仅有一个节点或两个节点),并且通过实现如本文描述的自动扩展,就可允许系统确定何时以及是否基于实际需求放大(而非基于盲目估计在创建时尝试对其大小进行正确调整)。

现有自动扩展解决方案通常设计用于具有均一节点(例如,节点全部运行相同软件)的系统中的无状态的工作负载。例如,它们可以用于扩展web前端,在web前端中,数据丢失不会造成问题。然而,mapreduce集群可能是部分无状态和部分有状态的,其中一些节点群组包含数据而其它节点群组不包含数据。因此,现有自动扩展方法在此上下文中可能并不合适,其中丢失数据(状态)影响可能较高。在一些实施方案中,本文所述自动扩展技术可以被配置为考虑在扩展时(例如,当减少集群容量时)数据丢失和/或作业失败的可能性。这些技术可以用于使工作重新调度最小化并且降低数据丢失的可能性。在一些实施方案中,不同类型计算引擎可以在计算资源实例集群上的容器服务内运行,计算资源实例中每一者具有其自己的行为和特性,在集群扩展期间应当考虑到这样的行为和特性。例如,一些集群可以实现mapreduce或hadoop框架,mapreduce或hadoop框架是一种类型的引擎。其它集群可以基于来自apache的sparktm框架或来自facebook,inc.的prestosql查询引擎运行引擎。由于这些示例引擎并不使用mapreduce方法,因此它们相较在mapreduce集群中的那些而具有用于处置集群内的状态的不同概念、用于定义有状态或无状态的不同方式、以及对丢失状态的不同惩罚。因此,相较在mapreduce集群中使用的那些,这些不同引擎的自动扩展策略可能具有用于管理状态信息的不同方式、不同度量指示、不同作业进度指示和/或用于决定何时以及是否扩展下层集群的关键指标。

在本文所述系统的一些实施方案中,可以将不同自动扩展策略应用于不同集群和/或这些集群中的不同节点(或应用于这些集群中的不同节点群组),并且如果节点存储重要状态信息(例如,如果节点存储数据并且节点无法正常停用)或如果节点本来不与将在集群上执行的分布式应用或引擎的行为一致,系统就可避免在减少容量的操作期间移除节点。换句话说,不像现有自动扩展解决方案那样,本文所述系统由于节点中的至少一些的独特行为而可能在扩展操作中应用智能,而非出于扩展目的以相同的方式处置集群中的所有节点。

相较就像现有解决方案那样在做出扩展决策时主要是依赖于机器中的标准性能指标(例如,依赖于cpu和存储器和i/o性能指标并且在其中一个处于峰值时放大),本文所述系统可以采用启发法,启发法是由应用提供商选择和/或在做出扩展决策时更深入地了解该应用的特定活动(例如,待处理的容器数量、作业完成的百分比、在不放大的情况下是否可以在当前集群中完成作业等等)。在一些实施方案中,本文所述系统可以采用更多可配置的(和/或由客户促成的)自动扩展策略,并且还可实现一些构建安全特征,以便避免执行由客户定义的起到反作用的自动扩展策略。

如先前描述的,在mapreduce框架中实现的分布式应用可能要求与其它分布式应用不同的自动扩展方法。例如,对于这些应用中的大多数的应用,存在主节点的概念,并且在集群中存在工作节点群组。主节点的行为与工作节点(例如,数据节点)是非常不同的。在此类应用下,例如,对集群的自动扩展策略应当避免主节点的移除。

在一些实施方案中,mapreduce集群(例如,hadoop集群)可以包括分布式文件系统(例如,hadoop分布式文件系统或hdfs)。如果文件系统的利用率超过预定阈值,那么集群的运营商就可能希望向集群添加存储容量。本文所述系统可以允许运营商创建自动扩展策略,使得如果利用率超过了80%,那么系统就将代表运营商自动(例如,以编程的方式)添加容量。相反,将集群启动的客户常常遇到集群(或其特定节点)未做任何事情并且被遗忘的问题。本文所述系统可以允许客户基于某些规则定义将减少容量(或将集群完全停止运行)的自动扩展策略。例如,如果监视进程已观察到在某时间段内没有cpu利用率或在某时间段内作业数量为零,那么可配置(通过由客户定义的自动扩展策略)为触发扩展操作,这将减少集群容量或使集群停止运行,而集群操作不必记得将集群缩小或将集群终止。换句话说,在一些实施方案中,除了(或代替)其它默认或定制集群级、节点级或应用级度量之外,自动扩展规则可以包括时间分量。例如,当hdfs利用率大于90%超过2个小时时,客户可能能够指定集群应当放大,并且如果集群空闲超过1个小时,那么集群应当缩小。在一些实施方案中,自动集群扩展可以允许服务提供商客户降低它们成本(例如,通过移除多余容量)并有助于它们满足它们自己的性能目标或服务级协议(例如,当存在显着需求时,通过自动添加容量实现)。在一些实施方案中,客户可能能够定义指定集群应当在一周中的某天(或日期)和/或在一天中的某时、当超过默认或定制度量的特定阈值达到给定的时间段时、当将所有待处理的作业完成的估计时间超过指定服务级协议时、或者根据其它自动扩展规则自动放大或缩小的自动扩展策略。

在一些实施方案中,客户可能没有指定它们自己规则,但是系统可以应用由分布式计算系统或服务提供商设置的默认规则。例如,一些系统可以包括默认自动扩展规则,指定在hdfs利用率超过默认最大的利用率阈值超过默认数量小时,系统将会将hdfs容量自动添加到集群。在一些实施方案中,本文所述自动扩展技术可有助于客户确保它们在它们集群中始终具有适当量的容量。在一些实施方案中,自动扩展规则可以包括成本度量。例如,客户可以定义指定客户将想要将容量放大的时间段和客户愿意为所增加的容量支付的最大成本的自动扩展策略,并且系统可以被配置为在此时间段期间使集群容量增加,这仅在不超过指定最大成本的情况下才能进行(例如,通过利用低于预定成本阈值的对附加资源实例的按需或竞价市场定价)。在另一示例中,客户可以定义指定容量应当被维持于特定的利用率水平或容量应当尽可能地增加、同时保持每小时成本低于预定最大成本的自动扩展策略。在一些此类实施方案中,可以每小时估计一次实例定价,并且在每次估计后可添加或移除容量,其中价格变化影响在不超过这个成本阈值的情况下可获得的容量。在一些实施方案中,自动扩展策略可以包括其它类型的基于目的或基于目标的规则。在一些实施方案中,响应于集群故障而可以引入新的集群来替换它,并且新的集群可以随着时间而自动放大以适应不断增长的工作负载。

如稍后更详细地描述的,本文所述系统可以支持使用由客户定义的自动扩展策略,其目标为分布式计算集群(诸如mapreduce集群)内的特定实例群组,并且这些策略可以包括依据默认和/或定制(由用户定义的)度量的任何组合的自动扩展规则,所述默认和/或定制(由用户定义的)度量被发出或以其它方式提供给自动扩展规则引擎以及其它类型的触发器(例如,时间、日子、日期或成本触发器)。例如,可以在定义自动扩展触发条件的自动扩展策略内的表达式中(与附加定制度量一起或不与附加定制度量一起)使用由hadoop框架、由hadoopyarn(发出度量以深入了解每一作业的待处理的工作量或每一容器的待处理的作业的数量的hadoop框架的作业调度和集群资源管理部件)或由hdfs(其发出了诸如可用容量和剩余容量的度量)发出的默认度量中任一者。如下文更详细地描述的,在一些实施方案中,自动扩展技术可基于它们类型、作用、行为和/或它们被配置用于适应的工作负载来确定在降低集群中的容量时哪些节点符合移除条件。例如,在一些实施方案中,一个或多个实例群组可以包括核心节点(例如,被设计用于具有存储装置和执行作业的节点)并且一个或多个其它实例群组可以包括任务节点(例如,节点仅被设计用于管理作业)。在一些实施方案中,mapreduce集群中的各种节点可以运行不同守护进程集合,并且每个节点上运行的守护进程集合可基于节点所属实例群组来确定。在一些实施方案中,系统可以在不同实施方案中基于它们当前是否存储数据、基于它们是否当前正在代表分布式应用执行任务、或者基于代表分布式应用在不同节点上执行的任务的相关进度确定在缩小时将节点终止的顺序。

如先前描述的,本文所述技术可以可由用户定制以适应于它们特定应用和集群架构的方式提供自动扩展。例如,hdfs利用率(存储装置利用率度量)可能是在hadoop集群中做出自动扩展决策的有用度量(例如,触发用于添加或移除存储节点的操作,这些存储节点有时在本文中称为核心节点),所述hadoop集群包括被配置用于执行日志的批处理(在客户不想耗尽容量的情况下)的hadoop集群。然而,在采用prestosql应用进行分析的系统(其很大程度上是存储器受限的)中,用于做出自动扩展决策(即,管理集群范围的存储器容量)的更相关的度量可能是存储器利用率(例如,“可用总存储器”)。在这种系统中,用户可能想要对触发集群大小调整的规则进行精细控制。

图1是示出实现mapreduce集群的自动扩展的服务提供商系统的一个实施方案的方框图,如本文描述的。在这个示例中,提供商网络100在可用性区140中(例如,在特定的区域或设施中)包括mapreduce集群120、以及在资源池130内的附加资源。在其它实施方案中,服务提供商网络(以及在某些情况下,在服务提供商网络内实现的mapreduce集群)可以跨多个此类可用性区(未示出)而分布。在这个示例中,mapreduce集群120包括多个虚拟资源实例群组,包括实例群组121a(其至少包含了实例125a和125c)、实例群组121b(其至少包含了实例125d和125f)和实例群组121c(其至少包含了实例125g和125i)。mapreduce集群120还包括一个或多个监视部件124和自动扩展策略信息126。在这个示例中,资源池130包括保留实例池131a(其至少包括实例135a和135b)、按需实例池131b(其至少包括实例135d和135e)和竞价实例池131c(其至少包括实例135g和135h)。在一些实施方案中,当增加在mapreduce集群(诸如mapreduce集群120)内的实例群组中的一者的容量时,来自各种资源池(诸如资源池130)的一个或多个可用实例可以被添加到实例群组。相反,当减少在mapreduce集群(诸如mapreduce集群120)内的实例群组中的一者的容量时,根据适用资源管理策略和/或服务协议,mapreduce集群内的一个或多个实例可返回到各种资源池(诸如资源池130)。

如图1所示和本文更详细地描述的,在一些实施方案中,提供商网络100可以包括监视服务和度量聚合器160(其可从监视部件124收集或接收度量信息,并且然后聚合这些度量中的至少一些)、自动扩展规则引擎165(其可估计表达式,表达式是取决于所收集的、所接收的和/或所聚合的度量并且表示自动扩展触发条件)、资源管理器150和资源管理数据库170。在一些实施方案中,自动扩展规则引擎165可响应于确定自动扩展触发条件估计为真(true)而响应于哪个资源管理器150可以发起受影响的实例群组的资源容量的添加或移除向资源管理器150发送指示应当执行自动扩展的通知。

在一些实施方案中,资源管理器150可以包括客户端接口,一个或多个客户端110可通过客户端接口与提供商网络100交互,以便接收分布式计算服务(其可包括自动扩展服务)。例如,在一些实施方案中,客户端110可以(通过客户端接口155)定义要应用于mapreduce集群120内的实例群组中的一个或多个特定实例群组的自动扩展策略。每个策略可以定义当在mapreduce集群120上执行分布式应用时要估计的表达式(例如,自动扩展触发条件),可以指定在表达式估计为真时要采取的扩展操作(例如,添加或移除容量),可以指定容量要增加或减少的量或百分比,和/或可以识别策略所适用的集群(和/或其实例群组)。在一些实施方案中,表示由用户定义的策略(和/或由服务支持的任何默认自动扩展策略)的信息以及策略与mapreduce集群120(或其特定实例群组)之间的关联可以存储在资源管理数据库170中。

在一些实施方案中,资源管理数据库170还可存储其它类型资源管理信息。例如,资源管理数据库170可以存储资源使用数据,其可包括客户端110的过去任务执行历史、资源利用历史、计费历史、以及可用于客户端的任务的给定资源实例集合的总体资源使用趋势。在一些情况下,资源管理器150可以使用给定资源实例集合的过去资源使用数据和过去资源使用趋势来开发对未来资源使用的推测,并且可以在开发执行计划中或在确定如何和/或何时执行各种自动扩展动作(例如,基于由客户端110或代表客户端而选择和/或定义的自动扩展策略由自动扩展规则引擎165触发的动作)中使用这些推测。

用于执行节点集群的自动扩展的方法的一个实施方案由图2中的流程图示出。如210处所示,在这个示例中,方法可以包括服务提供商或服务从客户端接收将一个或多个自动扩展策略与节点集群相关联的输入。如在这个示例中示出的,策略中每一者可取决于一个或多个触发条件,并且可以指定只有在触发条件被满足时要采取的特定自动扩展动作(例如,增加或减少集群中或集群内的实例群组内的节点数量)。注意,如本文更详细地描述的,节点集群可以在相应实例群组中包括两个或更多个类型节点,并且不同自动扩展策略可应用于不同实例群组中的节点。在各种实施方案中,自动扩展策略中的至少一些可以是专用的和/或可以是尤其非常适合被应用于特定类型工作负载的。

如在这个示例中示出的,方法还可包括在节点集群上开始分布式应用的执行,如220中。如图2所示,方法可以包括在应用的执行期间收集和/或聚合与触发条件相关的度量,如230中。在本文描述了此类度量示例(它们中的一些可以是专用的、特定于工作负载的和/或特定于特定实例群组的)。

如在这个示例中示出的,直到或除非基于所获得的和/或所聚合的度量(或分布式应用的执行完成)而检测到自动扩展触发条件,方法可以包括继续在节点集群上分布式应用的执行,而集群中的节点数量无任何变化。这在图2中由从240离开的否定结果、以及来自从260至230离开的肯定结果的反馈示出。然而,如果基于所获得的和/或所聚合的度量而检测到自动扩展触发条件并且当基于所获得的和/或所聚合的度量而检测到自动扩展触发条件时,作为从240离开的肯定结果示出的是,方法可以包括发起采取对应自动扩展动作,如250中。例如,在不同实施方案中,可响应于满足对应扩展触发条件来增加或减少集群中的(或其实例群组内的)节点数量。

如在这个示例中示出的,方法可以包括在适当时重复元素230-250所示操作中任一者或全部,直到分布式应用的执行完成(被示出为从260离开的否定结果、以及元素270)。

通常,在本文所述分布式计算系统中,一个或多个计算节点可以访问来自数据存储装置的数据集的部分,处理数据,并且将处理过的数据输出到数据存储装置(可以是但未必是访问的数据集所来自的相同数据存储装置)。分布式计算系统可以根据分布式计算框架实现。作为用于实现此类分布式计算系统的框架的非限制性示例,apachetm开源软件库提供允许使用简单编程模型跨计算节点集群对大数据集进行分布式处理的框架。这个库提供了称为mapreduce的分布式处理架构的实现方式,其包括用于在集群上利用并行、分布式算法来处理大数据集的编程模型。

在各种实施方案中,mapreduce程序可以包括执行过滤和分类的map()过程(在本文中有时称为“映射器进程”或“映射器”)、以及执行概括操作的reduce()过程(在本文中有时称为“化简器进程”或“化简器”)。例如,在这种方法下,并行应用(或应用的并行计算或任务)可以被映射到计算节点集合(例如,主机或服务器)进行处理。然后,可以将那些计算节点执行的计算的结果化简到单个输出数据集。被指定为主节点的一个节点可以通过其它计算节点(例如,也可称为“工作节点”的从节点)控制任务分发。在一些实施方案中,服务提供商可以将虚拟资源实例集合作为mapreduce集群中的计算节点而供应,并且mapreduce集群的计算节点可以经由对象存储服务从虚拟存储资源获得和/或向虚拟存储资源写入数据。注意,可以利用任意数量计算节点创建mapreduce集群,并且不需要将mapreduce集群的所有计算节点分配(或配置)为映射器或化简器。还要注意,在映射器进程(或化简器进程)与计算节点之间可并不(一定)存在一对一的映射。例如,多个映射器进程可以在单个计算节点上运行。

mapreduce是可用于在分布式计算环境中执行高性能计算(hpc)应用或其大型和/或复杂计算(例如,航空航天或机械工程的计算流体力模拟、或者分子流体动力模拟)的并行编程技术。在一些实施方案中,本文所述系统可以提供可代表客户端(例如,作为服务的客户的客户端应用、最终用户、服务订户或第三方服务)在mapreduce集群上执行程序的框架。

在本文描述了用于在分布式系统(例如,mapreduce集群)中实现集群的自动扩展的方法和系统的各种实施方案。图3示出了根据各种实施方案的其中可实现本文所述自动扩展技术的示例系统环境。示例系统环境可以实现分布式计算系统300。分布式计算系统300可以包括一个或多个主节点310和多个工作节点320(诸如工作节点320a-320n)。主节点310可以表示协调由工作节点320执行的计算的一个或多个协调器进程。工作节点在本文中也可称为“工作主机”、“工作程序”或“主机”。分布式计算系统300可使用一个或多个网络或互连来耦接各种部件。分布式计算系统300的元素可相对于彼此位于任何合适位置,从托管在相同计算硬件上的虚拟计算实例到托管在相同数据中心中的地理上遥远的不同物理计算实例。在一些实施方案中,主节点310和工作节点320可以实现mapreduce架构,其中工作节点在主节点指导下同时执行类似任务。然而,预计,分布式计算系统300可以实现替代mapreduce或除了mapreduce之外的其它类型分布式计算架构。

使用分布式计算系统300,输入数据集360可以由工作节点320处理以产生输出数据集370。输入数据360可以被分割成多个分区,诸如输入分区360a和360b至360n。可以将输入数据360的分区中的一个或多个分配给工作节点320中每一者。输入数据360可以在任何合适基础上被分割成分区。例如,分区边界可以基于在单独记录之间的边界、单独的数据行等等。单独分区可以包括输入数据元素,诸如意图将一起由单个工作节点处理的相关的项或项的系列。虽然出于示例目的而示出了三个分区360a、360b和360n,但是预计,可以使用分布式计算系统300处理任何合适数量输入数据分区。将各单独分区分配给单独工作节点(如图3所示)出于示例和说明的目的呈现;预计,单独分区向单独工作节点的任何合适分配可与分布式计算系统300一起使用。

在一些实施方案中,主节点310可以将输入数据360的单独分区提供给单独工作节点,例如,通过执行输入数据的划分的方面和/或将单独分区分配给单独工作节点的方面。在一个实施方案中,主节点310可以将指示分区分配的数据发送到单独工作节点,并且每个工作节点可以使用任何合适技术获取其输入数据的一个或多个分区。例如,工作节点可从工作节点可访问的一个或多个存储装置中的一个或多个文件或存储位置读出输入数据的一部分(例如,通过网络)。或者,主节点310可以使用网络将相关分区直接发送到单独工作节点。在各种实施方案中,使用特定工作节点而处理的输入数据分区可以在发起分区处理前部分或完全地加载到特定工作节点处的存储器中。

工作节点320中每一者可以执行任何合适处理任务以基于输入数据360的一个或多个分区而生成输出数据370的一个或多个分区。在一个实施方案中,使用工作节点320而实现的处理任务可由主节点310提供,例如,通过将程序代码发送到工作节点或指示工作节点从一个或多个存储位置加载程序代码。由工作节点320执行的处理任务的至少一部分可以同时执行,即,可相对于彼此并行执行。在一些实施方案中,工作节点320中每一者可以执行类似任务和/或实现类似算法来处理其输入数据分区。作为输入数据360的处理的结果,工作节点320中每一者可以产生输出数据370的一个或多个分区。虽然出于示例目的而示出了两个输出分区370a和370n,但是预计,可以使用分布式计算系统300生成任何合适数量输出分区。由于它们是由工作节点320产生,因此输出分区370a-370n可以存储在工作节点可访问的一个或多个存储装置上的一个或多个存储位置中。输出分区370a-370n也可称为最终输出数据。在一个实施方案中,输出分区370a-370n可由主节点进一步地处理,例如,通过将单独分区聚合或级联成单个输出文件。

由工作节点320中每一者执行的计算可以包括多个计算阶段,诸如第一阶段和第二阶段。第一阶段可以是诸如由工作节点320a执行的映射阶段330a和由工作节点320n执行的映射阶段330n的映射阶段(其中执行映射器进程)。第二阶段可以是诸如由工作节点320a执行的化简阶段340a和由工作节点320n执行的化简阶段340n的映射阶段(其中执行化简器进程)。在一个实施方案中,映射阶段可以包括基于输入数据360而生成中间输出的任何计算。在一个实施方案中,中间输出可以被划分但未必被分类。如本文使用的,术语“被划分的”指示相关数据元素被分组在一起成为分区。通常,特定分区中的数据元素旨在使用相同主机进行处理。在一个实施方案中,化简阶段可以包括基于中间输出而生成最终输出370的任何计算。例如,化简阶段可以聚合由映射阶段产生的数据元素。

如图3所示,在一些实施方案中,分布式计算系统300可以包括用于实现节点集群(例如,用于mapreduce集群)的自动扩展的监视服务。例如,在各种实施方案中,主节点310和/或工作节点320中每一者可以包括监视部件,或者可与相同系统中的单独监视部件(诸如监视部件350)交互。在其它实施方案中,监视部件可以实现在服务提供商网络上的不同系统中(例如,在收集和/或分析表征分布式计算系统300的计算节点和/或存储节点的行为的相关度量的服务中),并且可以被配置为确定是否以及何时添加或减去容量。在一些实施方案中,监视部件350可收集并分析此类度量,或者可以收集度量并且将它们传递到单独自动扩展规则引擎以供分析,之后,自动扩展规则引擎可以确定是否以及何时需要执行自动扩展操作(未示出)。在一些实施方案中,自动扩展规则引擎可以在分布式计算系统300的控制平面中或在另一服务(例如,系统中的存储服务和/或硬件虚拟化服务)的控制平面中实现。在其它实施方案中,自动扩展规则引擎可由服务提供商实现在单独自动扩展服务内,并且本文所述存储服务和/或硬件虚拟化服务可以是自动扩展服务的客户端。

预计,分布式计算系统300可以包括未示出的附加部件、比所示更少的部件,或者不同组合、配置或数量的所示部件。虽然出于示例目的而示出了两个工作节点320a和320n,但是预计,可以结合分布式计算系统300使用任何合适数量工作节点。虽然出于示例目的而示出了一个主节点310,但是预计,可以结合分布式计算系统300使用任何合适数量主节点310。在各种实施方案中,工作节点320和/或主节点310中任一者可以被实现为虚拟计算实例或物理计算实例。分布式计算系统300可以包括一个或多个计算装置,所述一个或多个计算装置中任一者可由类似于图17中示出的示例计算机系统的计算装置实现。在各种实施方案中,分布式计算系统300的不同部件的功能可由相同计算装置或由不同计算装置提供。如果使用不同计算装置实现各种部件中任一者,那么相应计算装置可例如经由一个或多个网络而通信耦接。分布式计算系统300中的每个部件可以表示可用于执行它们相应功能的软件和硬件的任何组合,如下讨论。

在一些实施方案中,分布式计算系统300可以管理对网络可访问的资源的指派。由实体(诸如公司或公共部门组织)建立以将可经由互联网和/或其它网络访问的一个或多个服务(诸如各种类型的基于云的计算或存储)提供给分布式客户端集合的网络可被称为提供商网络。提供商网络可以包括许多用于实现和分发由提供商提供的基础结构和服务的托管各种资源池的数据中心,诸如物理和/或虚拟计算机服务器、存储装置、联网装置等等集合。在一些实施方案中,资源可以称为“实例”的单元(诸如虚拟或物理计算实例或存储实例)而提供给客户端。虚拟计算实例可以例如包括具有指定计算容量(其可通过指示cpu的类型和数量、主存储器大小等等指定)的一个或多个服务器、以及指定软件堆栈(例如,特定版本操作系统,其可继而在监管程序的顶上运行)。在不同实施方案,可单独或组合地使用多个不同类型计算设备以实现虚拟提供商网络的资源,包括专用或通用计算机服务器、存储装置、网络装置等等。

在一些实施方案中,提供商网络的运营商可以为它们的客户端实现一组灵活资源预留、控制和访问接口。例如,提供商网络可以实现允许客户端了解资源实例、选择资源实例、购买资源实例的访问权和/或保留资源实例的编程资源保留接口(例如,经由网站或一组网页)。在一个实施方案中,可以使用实现分布式计算系统300的客户端可访问服务代表客户端保留资源。根据这样一个实施方案,在这种环境中的分布式计算系统300可以接收要为客户端执行的一个或多个任务的规范、以及输入数据集或要由任务使用的输入数据的源的指示。作为响应,分布式计算系统300可使用提供商网络的选定资源池的一个或多个资源来确定用于实现任务的执行计划。在一个实施方案中,可基于对各种任务的预期计算需要来自动选择资源池。在一个实施方案中,可基于由客户端提交的特定资源请求或保留来选择资源池。分布式计算系统300可以使用选定资源调度对任务的执行。

在一些实施方案中,客户端可以使用一个或多个合适接口(诸如一个或多个网页、应用程序编程接口(api)或命令行接口)指定要实现的任务、输入数据集、要使用的计算资源和/或应当发起任务时的时间。在一个实施方案中,客户端可能能够使用接口对任务的当前执行状态进行查看。在一个实施方案中,关于执行的任务的附加信息可以经由接口(诸如程序输出、错误日志、异常日志等等)提供。

用于在分布式计算系统(mapreduce集群)中执行mapreduce类型数据处理应用的方法的一个实施方案由图4中的流程图示出。注意,在一些实施方案中,可以在mapreduce类型数据处理应用的执行(未示出)期间应用本文所述自动扩展技术。如400处所示,在这个示例中,方法可以包括客户端开发mapreduce类型数据处理应用。注意,在不同实施方案中,这种应用可以使用各种编程语言中任一种开发。方法可以包括客户端将mapreduce类型应用和这个应用的目标数据上传到在服务提供商处的对象存储系统,如410中。例如,在不同实施方案中,数据可以通过建立与服务提供商的专用网络连接或通过将数据直接写入已运行的集群中使用服务的导入特征或其它输入接口而上传到服务提供商的一个或多个物理存储装置。

如在这个示例中示出的,方法可以包括客户端经由分布式计算服务配置(或请求配置)分布式计算系统(dcs),诸如mapreduce集群,如420中。例如,客户端可以配置(或请求配置)计算节点(主机)集群以代表服务客户端而共同执行mapreduce类型应用,其中每个节点(主机)均包括一个或多个cpu核心。在一些实施方案中,客户端可能能够通过gui、命令行接口、脚本、api或另一接口机制指定要在集群上执行的集群和/或作业的各种参数(例如,在集群中供应的虚拟资源实例的数量、要使用的实例类型、要安装的应用和/或应用和其目标数据位置)。

如图4中的430处所示,方法可以包括客户端采用一个或多个引导动作来安装附加软件和/或改变dcs(例如,mapreduce集群)的一个或多个默认配置设置。引导动作是在集群启动时(例如,在mapreduce应用启动前和节点开始处理数据前)在集群节点中每一者上运行的脚本。在各种实施方案中,客户端可以调用定制引导动作,或者可以调用由服务提供商提供的预定义的引导动作。方法还可包括客户端启动dcs(例如,mapreduce集群)以发起mapreduce应用的执行,如440中,并且(在应用执行时或一旦完成执行),客户端从对象存储系统检索mapreduce应用的输出,如450中。

注意,在一些实施方案中,当mapreduce应用的处理完成时(未示出),服务提供商可以自动终止dcs(例如,mapreduce集群)。在其它实施方案中,dcs(例如,mapreduce集群)可以在mapreduce应用的处理完成后保持运行,并且客户端可能能够将更多工作向提交到dcs/集群。还要注意,在一些实施方案中,客户端可能能够使用由服务提供商展示的各种监视工具或实用程序(例如,通过gui、命令行接口、脚本、api或另一接口机制)监视dcs(例如,mapreduce集群)的健康状况和/或mapreduce应用的进度。在一些实施方案中,客户端可能能够在任何时间上向dcs/集群添加容量或从dcs/集群移除容量,以便处置更多或更少的数据。在一些实施方案中,服务提供商还可展示一个或多个调试实用程序(例如,通过gui、命令行接口、脚本、api或另一接口机制)。

被配置用于执行mapreduce作业的工作节点的一个实施方案由图5中的方框图示出。再次注意,在一些实施方案中,本文所述自动扩展技术可以在mapreduce类型数据处理应用由多个工作节点执行(未示出)期间应用。如在这个示例中示出的,工作节点(诸如工作节点520)可以使用一个或多个输入分区560作为输入并且产生输出分区(即,最终输出数据)570。工作节点520可以与上文关于图3所示工作节点320a-320n而讨论的相同的方式实现。对输入分区560的处理可以包括使用工作节点520执行的映射阶段530和化简阶段540。

如在这个示例中示出的,映射阶段530可以包括映射计算531。映射计算531可以包括使用输入分区560的元素作为输入而执行程序指令。映射计算531中使用的程序代码可由主节点(诸如图1所示主节点110中的一者)指定。映射计算531可以生成中间输出数据532。中间输出数据532可以被划分以使相关数据元素在相同工作节点520上被分组在一起。对中间输出数据532的划分可以指示中间输出数据532包含相关数据元素(例如,项和/或系列的项的数据)。对中间输出数据532的划分可以指示中间输出数据532中的数据元素可以一起在化简阶段540中进行处理,即,使用单个工作节点在化简阶段中进行处理而不需要重新划分和分发到多个工作节点。

在一些实施方案中,可以在映射阶段530和化简阶段540之间执行分类操作535。分类操作535可以对中间输出数据532中的数据元素进行分类以产生已分类的中间输出数据536。中间输出数据532可以基于数据的任何合适的关键字或字段(诸如化简阶段540所要求的数据的关键字或字段)进行分类。

如在这个示例中示出的,化简阶段540可以包括化简计算541。化简计算541可以包括使用中间输出数据532或已分类的中间输出数据536的元素作为输入执行程序指令。化简计算541中使用的程序代码可由主节点(诸如图3所示主节点310中的一者)指定。化简计算541可以生成最终输出数据570。在一些实施方案中,化简计算541可以执行对中间输出数据532或已分类的中间输出数据536的聚合。注意,在其它实施方案中,分类操作可作为化简阶段540的一部分由工作节点520执行。在一些实施方案中,可使用在相同工作节点520上执行的计算来执行映射阶段530和化简阶段540,并且中间数据532或536可以不提供给另一工作节点。

如本文更详细地描述的,服务客户或订户可能能够基于来自各种触发来源的各种触发类型(度量)来定义取决于表达式的自动扩展策略。例如,作为自动扩展策略的一部分将估计(例如,通过自动扩展规则引擎估计)的表达式中使用的一些度量可由服务提供商网络上的单独监视服务(例如,收集从集群、资源实例或应用发出的从内部访问的度量的单独监视服务)收集。其它触发来源可以包括定制应用(例如,被仪表化地发出一个或多个定制度量的客户应用)或服务提供商网络内的另一服务。如本文描述的,触发数据可以包括性能或行为度量、存储度量(例如,存储消耗、剩余容量)、类似cron的表达式(例如,时间信息、触发信息的时钟/日历类型)、指示待处理或正在执行的作业的状态或数量的度量、定价信息、成本信息、或者可或可不是mapreduce集群特定的其它度量。

在一些实施方案中,可以默认提供默认度量集合,并且客户可以(或可以不)对可用于通过定义一个或多个其它度量做出自动扩展决策的度量集合进行添加。在一些实施方案中,服务提供商可响应于确定客户似乎感兴趣的度量类型和/或响应于确定其它度量与某些类型自动扩展决策相关对默认度量集合进行添加。例如,可能确定,默认和/或定制度量的某些组合可能比仅那些默认或定制度量形成用于做出自动扩展决策的更好的触发器。在一些实施方案中,本文所述系统可以提供框架以允许客户应用能够定义并且报告它们自己度量和定义并且应用他们自己的用于进行自动扩展的策略。可由客户定义(或选择)用于做出自动扩展决策的一些示例度量可以包括集群中可用的总存储器(例如,如果运行高存储器密集应用)或本地hdfs磁盘容量(例如,在长时间地运行并且由于它们磁盘填满而造成故障的集群中)。一般来说,客户可定义或选择可深入了解它们应用和/或工作负载大量使用的资源的利用和/或行为的度量用于做出自动扩展决策。在一些实施方案中,客户可能(在它们应用内)能够设置自己的计数器(例如,反映专用度量),并且可能能偶在做出自动扩展决定时使用那些计数器值。

在一些实施方案中,本文所述系统可以采用现有监视服务来创建和强制执行集群自动扩展策略。例如,分布式计算系统(例如,实现hadoop框架或mapreduce集群的分布式计算系统)可与这种现有系统集成,以便利用其用于收集度量信息的现有进程和/或其客户端接口(客户端接口可以被修改为用于定义自动扩展规则和/或策略,如本文描述的)。在一些此类实施方案中,在分布式计算环境中创建的集群可以将度量默认发出到现有监视服务,并且服务提供商可以控制哪些度量被发出到监视系统。例如,在一个实施方案中,实现mapreduce集群的分布式计算系统可以将23个集群级度量提供(默认)给现有监视服务,并且将另外30-40个专用度量提供给若干常用的应用或引擎中每一者。在一个示例中,为了处置在实现prestosql应用的系统中的自动扩展,一个或多个度量可以被发出到与存储器利用率相关的监视系统。在各种实施方案中,客户可能能够定义使用由监视系统收集的任一个和所有度量和/或定制度量或从其它触发来源获得的那些的策略。通常,本文所述的系统和技术可以使用户具有定制其集群的自动扩展的能力,并且可以促进许多不同应用的集群自动扩展。

如本文所描述的,在各种实施方案中,mapreduce集群可以被配置为当由以下各项中的一个或多个触发时自动放大或缩小:

●由监视服务在指定的时间段内捕获的超过指定阈值的度量-例如,如果在至少60分钟内集群中的映射器的数量小于2,那么就会触发自动扩展动作(例如,用于减少容量的动作)。

●在指定的时间段内超过指定阈值的集群度量(例如,由集群发布但在监视服务中不可用的集群度量)。-例如,如果在至少120分钟内存储到虚拟计算服务吞吐量大于或等于100,那么就会触发自动扩展动作(例如,用于添加容量的动作)。

●完成在集群上的所有进行中和待处理的作业的估计时间。-例如,如果完成所有作业的估计时间大于或等于120分钟,那么就会触发自动扩展动作(例如,用于添加容量的动作)。

●日子(或日期)和/或时间-例如,自动扩展动作(例如,用于添加或减少容量的动作)可能在每一个星期六的17:00触发。

如本文描述的,自动集群扩展可由一个或多个自动扩展策略管控。在一些实施方案中,为了利用本文所述自动扩展技术,客户可依赖于默认自动扩展策略(诸如本文所述那些中任一种),或者可以编写它们自己自动扩展策略并且将它们上传到服务提供商网络(例如,上传到其存储服务)。在一些实施方案中,自动扩展策略可以包含一个或多个规则,并且每个规则可以包含以下元素的一些或全部:

●要估计的一个或多个表达式-客户可以定义表示自动扩展触发条件的一个表达式,或者可使用逻辑运算符and或or组合两个或更多个表达式以创建自动扩展触发条件。例如,以下可以是自动扩展策略中定义的有效表达式:

○“numberofmappers<2foratleast60minutes”

○or(“numberofmappers<2foratleast60minutes”,“numberofmappers<5foratleast120minutes”)

●在表达式为真时要采取的动作-例如,动作可能是以下各项中的一者:

○“add”(即,向集群或其特定实例群组添加容量)

○“remove”(即,从集群或其特定实例群组移除容量)

○“terminate-cluster”(即,终止整个集群)-注意,如果动作是要终止集群,那么可能无需指定下列剩余参数中任一者。

●向集群(或其特定实例群组)添加或从集群移除的容量的量或百分比(例如,资源实例数量或百分比)-例如,策略可以将资源容量变化指定为以下各项中的一者:

○“5”(例如,应当添加或移除5个资源实例)

○“20%”(例如,变化应当占当前资源实例的20%)

●动作应当被执行的实例群组-在各种实施方案中,策略可以指示应当仅相对于一个指定实例群组、在多个指定实例群组中或在所有特定类型实例群组中(例如,在所有core实例群组或所有task实例群组中)而采取的动作。例如,策略可以将实例群组指定为以下各项中的一者:

○“abc-123”(即,一个实例群组的识别符)

○“abc-123”,“xyz-978”(即,两个实例群组的识别符)

○“core”(例如,指示包含存储节点的所有实例群组)

○“task”(例如,指示包含计算节点的所有实例群组)

在一些实施方案中,由分布式计算系统提供的默认策略中的至少一些可能是给定用例特定的。例如,可以存在用于提取、转换和加载(etl)的一个默认自动扩展策略(或默认自动扩展策略集合)、以及更适用于低时延查询的另一默认自动扩展策略(或默认自动扩展策略集合),因为度量和规则会因用例而有所变化。

在一些实施方案中,除了上述元素之外,一些(如果不是全部)自动扩展策略可以包括一组集群级限制。在各种实施方案中,这些集群级限制可以包括以下各项中的任一者或全部、以及其它集群级限制:

●对集群的可选最小实例计数,其约束了可通过自动扩展操作移除的实例数量。例如,为了约束操作,使得在用于移除容量的自动扩展操作后,在受影响的集群或其实例群组中保留不少于5个的实例,策略可以将这个限制设置为值“5”。

●可选最大实例计数,其约束了可通过自动扩展操作添加的实例数量。例如,为了约束操作,使得在用于添加容量的自动扩展操作后,在受影响的集群或其实例群组中保留不超过25个的实例,策略可以将这个限制设置为值“25”。

●在下一可能自动扩展事件之前的等待时间(例如,以分钟为单位)。例如,为了防止将另一自动扩展操作应用于集群或其实例群组,直到在自动扩展操作完成之后的至少三十分钟才应用于集群或其实例群组,策略可以将这个限制设置为值“30”。

在一些实施方案中,客户可以具有通过使用用于编写由服务提供商预定义的表达式的文档结构和语法来创建自动扩展策略文档(例如,使用javascript对象符号(即,json文档)而编写的文档)而编写它们自己策略的能力。在一些实施方案中,客户可以将所得自动扩展策略文档上传到服务提供商网络上的存储服务,并且然后在启用自动扩展时提供文档路径。在其它实施方案中,自动扩展策略文档可以存储在分布式计算系统或集群的控制平面中,并且可在做出自动扩展决策时由自动扩展规则引擎访问。

如本文更详细地描述的,在一些实施方案中,用户(例如,服务客户或订户)可以组合自动扩展策略(例如,用户可以在单个策略内包括多个自动扩展规则或者可以将多个自动扩展策略(每个定义一个或多个自动扩展规则)与相同集群或实例群组关联。在一些实施方案中,可能无法以编程的方式验证在自动扩展规则之间或在自动扩展策略之间的冲突(因为例如客户可以定义专用度量并且在定制自动扩展策略中的表达式内使用那些度量)。因此,在一些实施方案中,任何潜在冲突可基于排序而使用冲突解决机制解决,如下:每个规则或策略的优先级可由每一策略的规则或每一实例群组的策略的列表中的规则或策略给出。在一些实施方案中,可以估计所有策略,但是仅触发自动扩展动作的第一策略(或策略内的规则)造成将要采取那个动作。如果另一规则或策略触发冲突动作,那么就不采取那个动作。在一些实施方案中,客户可能能够明确将优先级排序或估计顺序与每个自动扩展策略或其规则关联。

在其中采用现有监视服务来创建自动扩展策略的一些实施方案中,监视服务可以提供面向公众的api,客户可通过面向公众的api来定义它们定制度量并且将这些定制度量直接推送到监视服务。在其它实施方案中,创建定制度量可脱离于现有监视服务。然而,在一些此类实施方案中,系统可能需要确保每个度量具有唯一识别符或名称,无论它由监视服务收集还是通过另一触发来源获得。在一些实施方案中,客户然后可以在它们定制策略中使那些唯一识别符或名称,不管触发来源如何。

在其中采用现有监视服务来创建自动扩展策略的一个示例实施方案中,当写入表示取决于由监视服务监视和/或收集的度量中的一个或多个的自动扩展触发条件的表达式时,就可使用监视服务的api。例如,在一个此类实施方案中,使用由监视服务收集的度量的适当形式的表达式可以包括包含在引号中的四个空格分隔元素,如下:

语法:“[metricname][>,>=,<,<=,==][threshold][timeperiodinminutes]”

使用此语法创建的一些示例表达式如下所示。在第一表达式中,将度量“mappersremaining”与阈值2进行比较,并且如果这个度量的值在至少60分钟内小于2,表达式估计为真。在第二表达式中,将度量“mastercpu”与阈值0.01进行比较,并且如果这个度量的值在至少60分钟内小于0.01,表达式估计为真。

“mappersremaining<260”

“mastercpu<.0160”

在其中采用现有监视服务来创建自动扩展策略的一些实施方案中,使用估计时间来完成所有进行中和待处理的作业的正确形式的表达式可以包括包含在引号中的三个空格分隔元素,如下:

语法:“[estimatedtime][>,>=,<,<=,==][timeperiodinminutes]”

使用此语法创建的示例表达式是“estimatedtime>=120”。如果完成所有作业的估计时间大于或等于120分钟,那么这个表达式估计为真。

在其中采用现有监视服务来创建自动扩展策略的一些实施方案中,使用日期/时间的正确形式的表达式可以使用调用包含在引号中的软件实用程序“cron”的日期/时间表达式,如下:

语法:“[crondate/timeexpression]”

使用此语法创建的示例表达式是“000?*sat*”。这个表达式可以表示在每一个星期六午夜估计为真的自动扩展触发条件。例如,这个表达式可以包括在指定每一个星期六午夜应当执行的自动扩展动作(例如,将20个节点添加到集群)的自动扩展策略中。在这个示例中,补充自动扩展策略可以指定每一个星期一早上04:00应当减少集群。

在一些实施方案中,自动扩展策略可以包括多个自动扩展规则。在此类实施方案中,可以按顺序地并独立于彼此估计自动扩展策略中定义的规则。在一些实施方案中,估计为真的第一规则就将触发对应自动扩展动作,并且一旦这些规则中的单个规则估计为真,那么将不估计其它规则。因此,对单个自动扩展策略内的多个规则进行排序时,应当谨慎小心。在一个特定示例中,单个自动扩展策略可以包括在hdfs利用率超过90%超过2小时的情况下导致集群(或其实例群组)被放大的第一规则,以及在集群空闲超过1个小时的情况下导致集群(或其实例群组)被缩小的第二规则。当规则估计器(例如,自动扩展规则引擎)被调用来相对于当前度量集合而估计自动扩展策略时,如果第一规则估计为真,那么集群可被放大,并且第二规则可完全不进行估计。

在一些实施方案中,集群自动扩展可以是可选的,并且可以在创建集群时实现,例如通过在命令行接口中包括交换机并且指定自动扩展策略或通过指定应当被应用的默认策略。例如,在一个实施方案中,可以使用以下命令中的一者启用集群自动扩展:

$create-cluster-enable-auto-scale“default-policy”

$create-cluster–enable-auto-scale“storage-system/path/to/my/policy”

类似地,在一些实施方案中,可以为运行集群(例如,在其创建之后,而无集群自动扩展)而启用集群自动扩展。例如,在一个实施方案中,可以使用以下命令中的一者在运行集群上启用集群自动扩展:

$cluster-idj-12345678—enable-auto-scale“default-policy”

$cluster-idj-98642—enable-auto-scale“storage-system/path/to/my/policy”

注意,在其中采用现有监视服务来创建自动扩展策略的其它实施方案中(并且在不采用现有监视服务的至少一些实施方案中)的实施方案中,可以在集群创建时、或者在集群运行时通过分布式计算系统(或其任何部件)的图形用户界面(gui)或通过实现策略/规则构建应用的用户界面“向导”而启用集群自动扩展。

用于定义虚拟计算资源实例集群的自动扩展策略的方法的一个实施方案由图6中的流程图示出。如610处所示,在这个示例中,方法可以包括服务接收请求以创建虚拟计算资源实例集群来代表服务客户或订户在虚拟计算资源实例集群上执行给定应用(或其计算)。方法可以包括服务创建集群,这可包括供应一个或多个实例群组中的资源实例,如620中。在一些实施方案中,资源实例可以是根据类型分组,例如,一个实例群组可以包括多个存储节点,而另一实例群组则可以包括计算节点。在其它实施方案中,资源实例可以根据它们在执行给定应用或计算中的作用而分组(例如,映射阶段中涉及的节点与化简阶段中涉及的节点在不同实例群组中)。

如图6所示,方法可以包括服务接收定义作为自动扩展策略的一部分而估计的表达式的输入,并且表达式可以包括由服务提供商系统、由集群或由给定应用发出的一个或多个默认度量,或者由应用发出或通过聚合其它默认或定制度量中另一者而创建的一个或多个定制度量,如630中。方法还可包括服务接收(例如,针对自动扩展策略)定义如果表达式为真并且当表达式为真时要采取的动作(例如,添加或移除容量)、要添加或移除的资源实例的量或百分比和/或策略所适用的实例群组的输入,如640中。例如,适用于不同实例群组中的资源实例的自动扩展策略中的至少一些可以是不同的。如在这个示例中示出的,方法还可包括服务(可选地)接收指定对可添加/移除的实例数量的集群级限制和/或在连续自动扩展事件之间的最小时间的输入,如650中。

如在这个示例中示出的,如果存在与这个集群相关联的更多策略(被示出为从660离开的肯定结果),那么方法可以包括在适当时重复630-650中示出的操作以创建附加策略并且将它们与集群相关联。如果(或一旦)附加策略不与这个集群相关联(被示出为从660离开的否定结果),那么方法可以包括服务针对给定应用分发目标数据并且在集群上发起执行给定应用,如670中。如在这个示例中示出的,执行给定应用可以包括根据需要应用所定义的自动扩展策略。注意,在一些实施方案中,可以在给定应用的执行期间修改与集群(或其一个或多个实例群组)相关联的自动扩展策略中的一个或多个(例如,响应于由服务从客户端接收的输入)。在一些实施方案中,一个或多个附加自动扩展策略可以在给定应用的执行期间定义和/或与集群(或其一个或多个实例群组)相关联,或者在自动扩展策略与集群(或其一个或多个实例群组)之间的关联可以在给定应用的执行期间撤销。图6中未示出此类修改、添加和撤销。还要注意,在一些实施方案中,自动扩展策略可以指定为了增加集群容量,服务可以被配置为向集群添加一个或多个实例群组(而非向集群中的任何现有实例群组添加容量)。类似地,自动扩展策略可以指定为了减少集群容量,服务可以被配置为从集群移除一个或多个实例群组(而非从集群中的任何现有实例群组移除容量)。

在各种实施方案中,可以存在支持在服务提供商网络的基础结构内的本文所述集群自动扩展技术的不同方式。例如,图1示出了实现mapreduce集群的自动扩展的服务提供商系统的一个实施方案。在那个示例中,提供商网络包括mapreduce集群内的监视部件(例如,度量收集器或度量收集代理)、集中式监视服务和度量聚合器、估计自动扩展触发条件的集中式自动扩展规则引擎,以及实行从那些估计产生的任何自动扩展动作的集中式资源管理器。在一些实施方案中,在客户端(例如,服务提供商客户或订户)定义他们所关注的度量和他们希望应用于集群中的各种实例群组的自动扩展策略后,就可以将这些定义加载到资源管理数据库(诸如图1中的资源管理数据库170)或存储在用于集群(或其一个或多个实例群组)的逻辑数据模型中,例如,作为自动扩展策略信息126。随后,例如,按照预定周期,监视服务可以获取策略和其依赖的度量,并且将它们提供给自动扩展规则引擎,之后,规则引擎可以估计由策略定义的自动扩展触发条件,并且通过策略发起要调用的任何操作。在一些实施方案中,规则引擎可以在服务提供商系统(或其分布式计算服务)的控制平面内实现,并且这个规则引擎可以查看由客户定义的策略并且将由客户定义的策略应用于当前度量集合以便做出自动扩展决策。

用于在mapreduce集群中执行自动扩展的方法的一个实施方案由图7中的流程图示出。如710处所示,在这个示例中,方法可以包括向客户提供虚拟资源实例的服务供应mapreduce集群的虚拟计算和/或存储资源实例以供执行给定mapreduce类型数据处理应用。方法可以包括服务确定一个或多个自动扩展策略与mapreduce集群和/或给定的mapreduce类型数据处理应用相关联,如720中。例如,服务可以确定(例如,基于所存储的策略信息或响应于接收到定义或选择一个或多个自动扩展策略的输入)一个或多个默认或客户端指定的策略与集群(或其一个或多个实例群组)或应用相关联,包括例如取决于集群(或其资源实例)或应用发出的度量的一个或多个系统范围、特定于集群的、专用和/或特定实例群组的策略,或者一个或多个默认或客户端指定的策略通过聚合其它度量(例如、由集群、其实例或应用发出或从备选来源接收或获得的度量)创建。

如在这个示例中示出的,方法可以包括服务配置一个或多个监视部件(例如,度量收集代理)、度量聚合部件和/或自动扩展规则引擎用于强制执行相关联的自动扩展策略,如730中。注意,在各种实施方案中,监视部件、度量聚合部件和/或自动扩展规则引擎中的任一者或全部的可以是集群本身的部件(或者可以是特定资源实例或实例群组的部件),或者可以在集群外。例如,在一些实施方案中,度量收集代理可以实现在集群(或其资源实例)内,并且可以将度量信息传递到集群外的一个或多个度量聚合部件和/或自动扩展规则引擎。

如图7所示,方法可以包括服务针对给定mapreduce类型数据处理应用分发目标数据并且在mapreduce集群上发起执行给定mapreduce类型数据处理应用,如740中。另外,服务可以调用将用于实现集群自动扩展的监视、聚合和估计进程。如果在给定应用的执行期间未检测到自动扩展触发条件(例如,由自动扩展策略内的表达式定义的那些)(被示出为从750离开的否定结果),那么它们可能不对在执行期间mapreduce集群中的实例数量做出任何改变,如770中。然而,如果在执行期间检测到一个或多个自动扩展触发条件(被示出为从750离开的肯定结果),那么方法可以包括根据适用自动扩展策略服务,向一个或多个受影响的实例群组添加实例或从一个或多个受影响的实例群组移除实例,如760中。在一些实施方案中,在给定应用的执行期间在相同时间和/或不同时间上可检测到多个自动扩展触发条件(例如,在不同实例群组中的节点上检测到的和/或影响到不同实例群组的触发条件),并且在适当时,可以在每种情况下应用不同策略。

如先前指出的,本文所述系统可以实现包括两个或更多个实例群组的计算资源实例集群,每个计算资源实例集群包含实例(例如,可被设计用于特定类型的工作负载的实例)子集(例如,重叠或非重叠子集)。在一些实施方案中,一些实例群组可以运行特定服务,而其它实例群组不可以运行特定服务。例如,一个实例群组可能正在使用竞价实例,而另一实例群组则可能正在使用按需实例。如本文描述的,特定自动扩展策略和对应自动扩展动作可以集群内的特定实例群组中的一些实例群组为目标。例如,如果应用用尽hdfs容量并且需要添加更多hdfs容量,那么使用目标自动扩展策略可以允许节点仅添加到实例群组或运行hdfs的群组。同样,如果集群中的一个实例群组正在运行文件系统,并且另一实例群组不在运行文件系统(这可能是非常常见的),那么当集群缩小时(例如,由于cpu空闲),使用目标自动扩展策略可以允许缩减操作以未运行文件系统的实例群组为目标,使得数据不会丢失。

在一些实施方案中,目标自动扩展策略可以允许分布式计算系统将一定智能引入容量减少操作中。例如,系统可以实现“智能缩减”技术,其中系统可响应于确定在集群中应当减少容量将不存储状态(例如,数据)或不需要为它们存储的数据维持预定复制或法定(quorum)要求的节点的移除的优先级进行排序。在另一示例中,在一些实施方案中,系统可响应于确定在集群中应当减少容量而根据它们是否当前正在代表分布式应用执行任务、它们是否目前已经执行(或将要执行)任务、它们是否当前正在执行任务和/或它们是否几乎已经完成它们任务对节点的移除的优先级进行排序。

在一个示例实施方案中,集群是由两个实例群组组成,其中一个包括可存储数据的节点,而另一个包括不存储数据的节点。包括携载数据的节点的实例群组可以与指定在磁盘使用率大于75%时应当增加容量的策略相关联,而另一实例群组(包括不携载数据的节点)则可以与指定当cpu未被使用时应当移除节点的策略相关联。注意,在一些实施方案中,在移除可存储数据的节点前,可能需要将数据移动到不同节点,或者系统可能需要确定移除节点将不导致数据丢失或违反复制要求或维持足够数据副本达法定数量的要求。在一些实施方案中,相较移除存储数据而无法正常停用(例如由于其它要求)的节点,可替代地选择移除另一节点(例如,存储数据但能够正常停用的不同节点,或者不存储数据的节点)。在一些实施方案中,系统可依赖于hdfs停用(构建在hadoop中)确定当减少集群容量时哪些存储节点(若有的话)符合移除条件和/或准备移除存储节点时。例如,在一些实施方案中,当缩减集群时,系统可依赖于构建于hdfs中的机制防止数据丢失(例如,通过复制)。在一些此类实施方案中,当强制终止节点时,这个机制可以被配置为重新分配存储在节点上的数据以匹配目标复制因子(给定的数据块必须跨集群复制的次数)。更具体地,在依赖于hdfs停用的实施方案中,这个机制可以首先估计可用存储装置是否足以适应复制需要。如果这样的话,那么它可开始停用节点,进行等待直到已经完成在每个节点终止前来自每个已停用的节点的数据的重新平衡。

在一些实施方案中,当确定在自动扩展策略指示应当减小容量时哪些(若有的话)实例应当移除时,可以考虑各种因素。例如,一些自动扩展策略可能会在每个节点上放置某值(例如,相对于其移除的符合性或适合性),并且策略在做出关于要移除哪些实例的决策时可依赖于节点的值(例如,避免在携载数据的节点上的数据丢失)。在一些实施方案中,这个取决于不同节点的相应值而非不区别地应用缩小操作的能力对于希望安全调谐其集群容量的客户可以是重要的(例如,而不担心数据丢失或显着性能损失)。

在一些实施方案中,本文所述系统还可比在移除计算节点(例如,代表分布式应用执行任务的那些节点)时实现现有自动扩展解决方案的那些系统更有区别性。例如,自动扩展策略可以被配置为避免移除正实际上执行作业的节点(这可能会影响性能,因为那个作业可能需要重新调度才能在另一节点上执行)。在此类实施方案中,系统可以被配置为对不做工作(或比其它节点工作的少)或刚刚开始跨当前执行作业接近完成的节点(例如,当前执行业务已经完成80%的那些节点)执行作业的节点的移除的优先级进行排序。例如,在一些实施方案中,优先级顺序可以针对节点移除或节点移除的符合性建立,并且可以在分布式应用的执行进行时周期性地(或偶尔地)更新。在一些实施方案中,这可允许安全移除多个节点(例如,按照优先级顺序一次一个,同时确认它们仍然是符合移除条件的)。注意,在各种实施方案中,特定资源实例的实际启动和终止可以使用构建在下层虚拟化服务中的api(例如,用于供应和/或取消供应各种类型虚拟资源实例的api)执行。在一些实施方案中,自动扩展进程代理可以被配置为跟踪当前执行任务进行中的节点,使得在任何给定时间上,都有可能确定用于适当终止目标。在影响那些节点的缩减的情况下,代理可以开始对它们进行标记以进行终止,并且然后可以在对应任务执行完成时终止它们。

用于在mapreduce集群中执行智能缩小操作(例如,“智能缩减”)的方法的一个实施方案由图8中的流程图示出。如810处所示,在这个示例中,方法可以包括向在客户提供虚拟资源实例的服务连同适当监视、聚合和估计进程发起在与一个或多个自动扩展策略相关联的mapreduce集群上执行给定mapreduce类型数据处理应用。如果在应用的执行期间检测到将不导致集群容量减少的自动扩展触发条件(被示出为从820离开的否定结果),那么在执行期间在mapreduce集群中的节点数量可不减少,如825处所示。

然而,如在这个示例中示出的,如果在执行期间检测到一个或多个自动扩展触发条件(被示出为从820离开的肯定结果),并且如果策略指定移除mapreduce集群中的一个或多个实例群组中的一个或多个存储节点(被示出为从830离开的肯定结果),那么方法可以包括确定是否可提供足够存储节点以用于进行移除(根据适用自动扩展策略)使得数据将不因移除节点而丢失,如860中。例如,方法可以包括确定是否存在已经被停用的足够存储节点或因复制而以其它方式符合从集群(或其一个或多个受影响的实例群组)移除的条件。如果这样的话(被示出为从860离开的肯定结果),方法可以包括服务移除由适用自动扩展策略定义的存储节点数量,如880中。然而,如果没有符合从集群或其适用实例群组移除的条件的足够存储节点(根据适用自动扩展策略)(被示出为从860离开的否定结果),那么方法可以包括等待一个或多个存储节点停用或符合移除条件,否则服务移除比由适用自动扩展策略定义的存储节点数量更少的服务,如870中。注意,在一些实施方案中,如果没有符合从集群或其适用实例群组移除的条件的足够存储节点,那么服务可以被配置为发起集群或实例群组中的一个或多个存储节点的停用,并且然后可以等待节点停用(未示出)。

如在这个示例中示出的,如果在执行期间检测到一个或多个自动扩展触发条件(被示出为从820离开的肯定结果),并且如果策略没有指定移除mapreduce集群内的一个或多个存储节点(即,如果策略指定移除mapreduce集群内的一个或多个实例群组中的一个或多个计算节点,被示出为从830离开的肯定结果),那么方法可以包括服务基于任务进度确定集群或受影响的实例群组内的哪些计算节点符合移除条件(如840中),之后,服务可以移除由自动扩展策略定义的符合条件的计算节点的数量,如850中。例如,在一些实施方案中,当前没有执行任务或刚刚开始执行任务的计算节点可以跨当前正在执行任务和/或几乎完成它们任务的计算节点对移除的优先级进行排序。

虽然被包括在此的示例中的许多在它们对hadoop/mapreduce集群的应用的方面描述集群自动扩展技术,但是在其它实施方案中,这些技术可更广泛地应用于其它类型面向集群的分布式计算系统内的自动扩展。例如,它们可适用于除hadoop之外的spark和/或presto应用,但是它们是客户可能基于某些规则而希望自动放大或缩小的分布式应用。如先前指出的,客户在执行这些(或其它)应用时做出自动扩展决策所关注的度量可与客户在针对hadoop/mapreduce集群做出自动扩展决策时所关注的度量不同。因此,在此类实施方案中,分布式计算系统可以被配置为发出和/或收集不同默认度量集合和/或提供不同于提供用于hadoop/mapreduce集群中的那些的默认自动扩展策略。在一些实施方案中,此类系统可以采用现有监视服务来选择、定义和/或收集适合于这些应用的度量。这些系统还可允许客户将不同自动扩展策略应用于不同实例群组,这可能对当在自动扩展操作中以实例或实例群组为目标时(例如,当移除节点时)客户想要区分非常宝贵的节点或实例类型与其它不宝贵的节点或实例类型的那些应用中是有用的。

用于在实现计算资源实例集群自动扩展中采用监视服务的方法的一个实施方案由图9中的流程图示出。如910处所示,在这个示例中,方法可以包括配置监视服务以监视一个或多个计算资源实例集群的行为。方法可以包括监视服务从计算资源实例集群接收度量,分布式应用在计算资源实例集群上执行,如920中。例如,监视服务可以从集群内的一个或多个计算资源实例(一些计算资源实例可能属于不同实例群组)接收度量。方法还可包括监视服务聚合所接收的度量中的至少一些并且使它们可用于自动扩展规则引擎(例如,通过将它们传递到自动扩展规则引擎或通过将它们存储在自动扩展规则引擎可访问的存储器中),如930中。如由来自930到920的反馈在图9中示出的,监视服务可以继续从集群接收度量、将它们聚合和/或使它们可用于自动扩展规则引擎,只要它们被配置为将这样做即可。

如图9所示,方法可以包括自动扩展规则引擎估计在与集群和/或集群内的一个或多个实例群组相关联的一个或多个自动扩展策略内定义的表达式(例如,基于所接收的和/或所聚合的度量且表示自动扩展触发条件的表达式),如940中。如果表达式中的至少一者估计为真(被示出为从950离开的肯定结果),那么方法可以包括自动扩展规则引擎将已经针对集群或其一个或多个实例群组触发特定自动扩展动作的指示发送到集群的资源管理器,如960中。方法还可包括集群的资源管理器根据对应自动扩展策略和任何其它适用资源管理策略发起自动扩展动作,如970中。如由来自960的反馈和从950至940离开的否定结果在图9中示出的,自动扩展规则引擎可以继续估计与集群相关联的自动扩展策略中的各种表达式(在被配置为将这样做时),无论它们中任一者是否估计为真,并且960和970中示出的操作可以只有在它们中任一者估计为真时重复。

用于向客户端提供虚拟存储资源作为服务(诸如web服务)的非结构化对象存储模型的一个示例实施方案由图10中的方框图示出。在所示模型中,存储服务接口1010被提供为对象存储服务1000的面向客户端的接口。存储服务接口1010可以例如被实现为或替代地可以包括应用程序编程接口(api)。根据由接口1010呈现给客户端1040的模型,存储服务可以被组织为可经由接口1010访问的任意数量的存储桶1020a-1020n。一般来说,存储桶是其中对象可以代表用户存储在存储系统中的逻辑容器,其中对象是存储在存储系统中的基本实体。在一些实施方案中,所存储的对象可以包括对象数据和/或元数据。例如,每个对象可以包括数据对象部分和元数据部分。在一些实施方案中,每一对象可以包含在存储桶中,并且每一对象可以使用存储桶识别符与对象本身的一个或多个识别符(例如,用户密钥或用户密钥与版本识别符的组合)寻址。

在图10所示示例中,每个存储桶1020可以被配置为存储任意数量对象1030a-1030n,这些对象中每一者可以存储由存储服务1000的客户端1040指定的数据(被示出为数据1033a-1033n)和/或元数据(被示出为1031a-1031n)。在各种实施方案中,元数据1031a-1031n可由客户端1040指定,或者可由对象存储服务1000生成。一个或多个客户端1040可以向存储服务接口提交请求以在数据对象1030上存储、检索和如下文更详细地描述地执行一个或多个操作。例如,存储服务接口可以提供对请求的响应1048,其可包括确认和/或所检索的数据。通常,除了数据对象的存储和检索之外,可由存储服务1000执行的请求或命令可以包括修改在存储服务1000内的数据的命令。以此方式,客户端1040不负责从存储服务1000移除数据、执行操作,并且然后将修改过的数据返回到存储服务。例如,这个配置可以为客户端1040节省网络带宽和处理资源。

在一些实施方案中,存储服务接口1010可以被配置为根据web服务模型来支持存储服务1000与其客户端1040之间的交互。例如,在一个实施方案中,接口1010可作为具有统一资源定位符(url)的web服务端点由客户端访问,由服务客户端生成的web服务调用可以被引导到其进行处理。一般来说,web服务可指经由包括一个或多个基于互联网的应用层数据传输协议(诸如超文本传输协议(http)或另一合适协议的版本)的请求接口可提供给请求客户端的任何类型计算服务。

在至少一些实施方案中,对象存储服务1000可以被配置为出于数据冗余和弹性目的内部复制数据对象。然而,对象存储服务1000并不保证对存储在存储服务1000中的数据对象的访问将总是返回最新版本或最近版本数据对象。存储服务(诸如对象存储服务1000)的这种性质在本文中可被称为“最终的一致性”,因为数据对象通常被保证为在所有实例间最终都将是一致的。在其它实施方案中,对象存储服务1000可以支持强一致性模型,这可保证对存储在存储服务中的数据对象的访问将返回最新版本或最近版本的数据对象。

在一些实施方案中,对象存储服务(诸如对象存储服务1000)可以提供对将由在分布式计算系统(诸如mapreduce集群)和/或上执行的mapreduce应用(或其计算)下载和处理的数据集和/或由此类应用产生输出数据的存储。在一些实施方案中,对象存储服务(诸如对象存储服务1000)可以提供对其它类型数据或元数据的存储,包括但不限于密钥对、主文件、分级文件或用于mapreduce作业的配置或操作参数,或者在执行此类应用时可用的任何其它信息。在其它实施方案中,这些元素中的任一者或全部可以存储在具有与图10所示不同的模型和/或配置的一个或多个对象数据存储中。

在一些实施方案中,对象存储服务可以包括用于实现集群的自动扩展的监视部件或与监视部件交互,如本文描述的。例如,监视服务1050可以与对象存储服务1000(例如,通过存储服务接口1010)交互以收集并分析在表示自动扩展触发条件的表达式中使用的度量,或者可以收集此类度量并且将它们传递给单独自动扩展规则引擎以供分析,之后,自动扩展规则引擎可以确定是否并且何时需要执行自动扩展动作(未示出)。在一些实施方案中,自动扩展规则引擎可由服务提供商实现在单独自动扩展服务内,并且对象存储服务1000可以是自动扩展服务的客户端。

注意,在一些实施方案中,对象的数据对象部分可能对存储系统是不透明的,即,它可以被存储系统视为“黑盒”条目。在各种实施方案中,对象的默认元数据可以包括例如名称-值对、对象最后被修改的日期和/或内容类型的指示符(即,对象的数据对象部分的内容的数据类型)。在一些实施方案中,与对象相关联的元数据可以包括系统插入的键-值对(包含例如创建日期和/或最后修改日期,或者其它版本控制相关的元数据),以及由用户提供的键-值对。在一些实施方案中,与对象相关联和/或存储在对象中的元数据可以包括访问控制列表(acl)。在一些实施方案中,开发人员可能能够在存储对象时指定定制元数据。在各种实施方案中,可与给定对象相关联的元数据量可受限于使用的接口的限制和/或系统针对请求或响应消息而允许或支持的数据的量。

在各种实施方案中,本文所述存储系统可以包括对以下存储相关任务的支持:创建存储桶、在桶存储中存储和检索数据(例如,使用可由数据开发人员或存储桶的所有者分配的唯一密钥)、删除数据和/或列出所存储的对象。在一些实施方案中,用户可能需要具有特殊权限(例如,特定访问角色)才能在存储系统中执行某些操作。例如,为了检查版本控制状态、修改版本控制状态、删除对象和/或密钥、检索逻辑上删除的数据、设置对存储桶或其对象的权限,用户可能需要被指定为在系统中的(和/或针对系统中的特定存储桶的)特权用户。在另一示例中,用户可能需要具有特定访问角色才能列出所存储的对象和/或检索所存储的对象。在一些实施方案中,此类权限可以被自动授予给存储桶的所有者和/或由其控制。在其它实施方案中,可通过其它手段和/或基于除存储桶的所有权以外的因素来指定和/或授予用户权限。在各种实施方案中,可基于存储桶来授予和/或控制这些权限的一些或全部。在其它实施方案中,可基于单独对象或基于对象类型或内容类型来授予和/或控制这些权限中的一个或多个。

分布式计算系统的实施方案在本文中通常在服务提供商的上下文中进行描述,服务提供商经由中间网络(诸如互联网)向客户端提供在服务提供商的提供商网络上实现的虚拟资源(例如,虚拟计算和存储资源)供应商。图11示出了示例服务提供商网络环境,其中可以实现用于在分布式计算系统中提供数据存储的方法和设备的实施方案。在其它附图中示出并且在下文描述了可实现在mapreduce集群上执行mapreduce作业的分布式计算系统的实施方案的其它示例环境。因此,这些示例不意图是限制性的。

在图11所示示例中,服务提供商可向客户端(例如,客户端网络1180上的客户端1182或其它客户端1162)提供一个或多个服务(称为分布式计算服务1102),客户端可经由一个或多个服务来至少部分在提供商网络1100上供应、管理和操作分布式计算系统。在至少一些实施方案中,经由分布式计算服务1102供应分布式计算系统可以包括:将一个或多个虚拟计算资源(被示出为客户端资源实例1110)供应为分布式计算系统的计算节点,并且将虚拟存储(被示出为数据存储1120)供应为用于分布式式计算系统中的数据集的数据存储和/或代表各种客户端执行的计算结果的数据存储。注意,在各种实施方案中,客户端资源实例1110和/或数据存储1120可以其它方式供应。例如,作为替代,在至少一些实施方案中,客户端(例如,由客户端网络1180表示的)可以在外部客户端网络上将一个或多个客户端设备1182供应为分布式计算服务的计算节点,同时经由分布式计算服务1102供应数据存储1120上的将用于分布式计算系统的数据集的存储装置。注意,在各种实施方案中,如本文描述的,数据存储1120可以实现对象存储装置、基于块的存储装置和/或基于卷的存储装置。

注意,在至少一些实施方案中,客户端可经由一个或多个应用程序编程接口(api)1104与分布式计算服务1102进行交互以请求为特定分布式计算系统(例如,mapreduce集群)供应在提供商网络1100上的计算和存储资源,并且分布式计算服务1102可继而经由api1108与虚拟化服务1106进行交互以实际上供应在提供商网络1100上的计算和存储资源。然而,在一些实施方案中,分布式计算服务1102可与在提供商网络上的计算和存储资源直接交互以供应或以其它方式为特定分布式计算系统配置资源。

在至少一些实施方案中,服务提供商可以根据分布式计算框架(例如,apachetm框架)代表客户端实现此类分布式计算系统(例如,mapreduce集群)。然而,注意,在一些实施方案中可以使用其它框架。

在至少一些实施方案中,经由提供商网络1100提供给服务提供商的客户端的资源中的至少一些可以是在与其它客户端共享的多租户硬件上和/或在专用于特定客户端的硬件上实现的虚拟计算资源。每个虚拟计算资源可被称为资源实例或客户端资源实例(例如,客户端资源实例1110)。资源实例1110可以例如租赁或租用给服务提供商的客户端。例如,服务提供商的客户端可访问经由通向到服务1106的api1108访问提供商网络的一个或多个服务1106以获得和配置资源实例1110并且建立和管理包括资源实例1110的虚拟网络配置,例如,如图16所示的虚拟专用网络。资源实例1110可例如根据硬件虚拟化技术来实现,硬件虚拟化技术使得多个操作系统能够在主计算机上同时运行,即,作为主机上的虚拟机(vm)。主机上的监管程序或虚拟机监视器(vmm)向主机上的vm呈现了虚拟平台并且监视vm的执行。每个vm可以被提供有一个或多个专用ip地址;主机上的vmm可了解到主机上的vm的专用ip地址。图13中进一步示出并且在下文描述了硬件虚拟化技术的实现和使用的示例。

在至少一些实施方案中,经由提供商网络1100、虚拟化服务1106和api1108提供给服务提供商的客户端的资源中的至少一些可以是实现在提供商网络1100上的存储硬件上的可与其它客户端共享的虚拟存储资源。可以在各种实施方案中使用虚拟数据存储技术为客户端提供了不同类型的数据存储和存储服务。例如,对象存储服务可向客户端提供通用、非结构化基于数据对象的存储装置(在图11中可由数据存储1120表示),客户端可以经由通用、非结构化基于数据对象的存储装置来存储和检索任意类型数据对象(一些数据对象可能包括数据文件)。如图11所示,由对象存储服务提供的非结构化对象存储(被示出为数据存储1120)可以例如用于存储通过分布式计算服务1102供应的分布式计算系统的数据集。作为另一示例,图11中未示出的是,数据存储服务(例如,由服务提供商或由一些其它实体提供的数据库服务)可向客户端提供结构化数据模型(例如,数据库模型)以存储和检索结构化数据。

如图11所示,在一些实施方案中,提供商网络1100可以包括监视服务1130和/或自动扩展部件1135。例如,在一些实施方案中,监视服务1130可以被配置为收集并分析在表示自动扩展触发条件的表达式中使用的度量,或者可以收集此类度量并且将它们传递给单独自动扩展规则引擎以供分析,之后,自动扩展规则引擎可以确定是否并且何时需要执行自动扩展动作(未示出)。在一些实施方案中,分布式计算服务1102和/或虚拟化服务1106可以是监视服务1130的客户端。在一些实施方案中,自动扩展部件1135可以执行使用本文所述自动扩展技术中任一者而确定的任何自动扩展动作。在一些实施方案中,自动扩展规则引擎可以在自动扩展部件1135内而非在监视服务1130内实现。

在图11所示示例提供商网络中,分布式计算系统可以包括一个或多个计算节点。计算节点可以被供应为客户端资源实例1110,如图11所示,或替代地,可以被供应为客户端网络1180上的客户端装置1182或客户端1162,如图11所示。分布式计算系统的数据集可以在数据存储1120上被实例化。在一些实施方案中,为了处理来自数据集的数据,计算节点可经由对象存储服务(未示出)来访问数据存储1120。在至少一些实施方案中,这种对象存储服务可以提供一个或多个api中的一个或多个,计算节点或其它实体可经由一个或多个api来访问数据存储1120。在一些实施方案中,处理过的数据(例如,输出数据)可以但未必被写回到数据存储1120。在一些情况下,被写回数据存储1120的处理过的数据中的至少一些可由一个或多个计算节点访问。例如,作业(例如,mapreduce作业)可以从数据存储1120读取数据并且向数据存储1120写入输出数据。然后,后续作业(例如,另一mapreduce作业)可以尝试访问来自数据存储1120的输出数据中的至少一些。

经由对象存储服务而提供的非结构化对象存储可以具有优点,包括但不限于存储非常大的数据集的能力,高吞吐量、因特征(诸如数据复制)而造成的可靠性和高可用性、以及灵活性。客户端可以根据需要利用这种对象存储服务来容易地且相对便宜地提供附加存储装置,而未必在客户端的网络上安装和配置附加存储装置。在一些实施方案中,由于特征(诸如数据复制),对象存储服务可以具有最终的一致性的属性。在其它实施方案中,它可实现强一致性模型。在至少一些实施方案中,被供应作为客户端资源1110的计算节点中每一者可以包括一个或多个处理模块,一个或多个处理模块可以实现分布式计算系统的处理部分(例如,mapreduce过程)。计算节点还可包括一个或多个数据访问模块,一个或多个数据访问模块代表其处理模块而访问数据存储服务以获得元数据或访问由对象存储服务维持在数据存储1120中的数据对象(或数据文件)。在至少一些实施方案中,对象存储服务可以提供一个或多个api,被供应作为客户端资源1110的各种计算节点上的数据访问模块可经由一个或多个api来访问相应服务。

图12是根据一些实施方案的示出实现包括基于块的存储服务的多个基于网络的服务的提供商网络的方框图。提供商网络1200可由实体(诸如公司或公共部门组织)建立,以便将可经由互联网和/或其它网络访问的一个或多个服务(诸如各种类型的基于云的计算或存储)提供给客户端1210。提供商网络1200可包括托管各种资源池的许多数据中心,诸如实现和分发由提供商网络1200提供的基础结构和服务所需要的物理和/或虚拟计算机服务器、存储装置、联网设备等的集合(例如,下文关于图17而描述的计算机系统1700)。在一些实施方案中,提供商网络1200可以提供计算资源,诸如虚拟计算服务1230、诸如基于块的存储服务1220和其它存储服务1240的存储服务(其可包括各种存储类型,诸如基于对象/键值的数据存储或各种类型的数据库系统)和/或任何其它类型的基于网络的服务1250。客户端1210可经由网络1260来访问由提供商网络1200提供的这些各种服务。同样,基于网络的服务本身可彼此通信和/或利用彼此来提供不同服务。例如,以称为“实例”的单元(诸如虚拟或物理计算实例或存储实例)提供给客户端1210的计算资源可利用特定的数据卷1226为计算实例提供虚拟块存储。

如上指出,虚拟计算服务1230可向客户机1210提供各种计算实例。虚拟计算实例可以例如包括具有指定计算容量(其可通过指示cpu的类型和数量、主存储器大小等等指定)的一个或多个服务器、以及指定软件堆栈(例如,特定版本操作系统,其可继而在监管程序的顶上运行)。在不同实施方案,可单独或组合地使用多个不同类型的计算装置以实现虚拟计算服务1230的计算实例,包括通用或专用计算机服务器、存储装置、网络装置等等。在一些实施方案中,实例客户端1210或任何其它用户可以被配置(和/或授权)以将网络通信量指引到计算实例。在各种实施方案中,可以将计算实例附加或映射到由基于块的存储服务1220提供的一个或多个数据卷1226,以便获得用于执行各种操作的持久基于块的存储。

计算实例可操作或实现适于执行客户端应用程序而例如不要求客户端1210访问实例的各种不同平台,诸如应用服务器实例、javatm虚拟机(jvm)、通用或专用操作系统、支持各种解释或编译的编程语言(诸如ruby、perl、python、c、c++等等)的平台或高性能计算平台。计算实例配置还可包括具有通用或专用计算实例,诸如用于计算密集应用程序的计算工作负载(例如,高通信量web应用程序、广告服务、批量处理、视频编码、分布式分析、高能量物理学、基因组分析和计算流体动力)、图形密集型工作负载(例如,游戏流送、3d应用程序流送、服务器侧图形工作负载、渲染、财务建模和工程设计)、内存密集工作负载(例如,高性能数据库、分布式存储器高速缓存、内存分析、基因组组配和分析)和存储优化工作负载(例如,数据仓库和集群文件系统)。计算实例大小诸如特定数量的虚拟cpu核心、存储器、高速缓存、存储装置以及任何其它性能特性可以变化。计算实例配置还可包括它们在特定数据中心的位置、可用性区、地理位置等等,以及(在保留计算实例的情况下)保留项长度。

在各种实施方案中,提供商网络1200还可实现用于执行存储操作的基于块的存储服务1220。如在这个示例中示出的,基于块的存储服务1220是由多个独立存储节点1224a、1224b、1224c至1224n的池组成的存储系统(例如,服务器块数据存储系统),提供用于存储一组或多组数据卷1226a、1226b、1226c至1226n的块级存储。数据卷1226可以被映射到特定的客户端,从而提供虚拟基于块的存储装置(例如,硬盘存储装置或其它持久存储装置)作为连续的逻辑块集合。在一些实施方案中,数据卷1226可以被分割为用于执行其它块存储操作(诸如快照操作或复制操作)的多个数据块组(包括一个或多个数据块)。数据卷1226的卷快照可以是数据卷1226的状态的固定时刻表示。在一些实施方案中,卷快照1242可以从维护数据卷的存储节点624远程存储,诸如存储在另一存储服务1240中。快照操作可执行以发送、复制和/或以其它方式保留另一存储位置中的给定的数据卷的快照(诸如存储在其它存储服务1240中的远程快照数据)。

基于块的存储服务1220可实现基于块的存储服务控制平面1222以辅助基于块的存储服务1220的操作。在各种实施方案中,基于块的存储服务控制平面1222辅助管理向客户端的块数据存储的可用性,诸如在由虚拟计算服务1230和/或位于提供商网络1200内的其它基于网络的服务提供的计算实例和/或任选地位于一个或多个其它数据中心内的计算系统(未示出)、或是通过网络1260可用的在提供商网络1200外的其它计算系统上执行的程序。可响应于块数据事务指令通过提供商网络1200内的内部网络或经由网络1260在外部提供对数据卷1226的访问。

基于块的存储服务控制平面1222可以提供与提供块级存储功能相关的各种服务,包括用户账户管理(例如,创建、删除、计费、支付托收等)。基于块的存储服务控制平面1222还可响应于配置请求来提供与数据卷1226的创建、使用和删除相关的服务。基于块的存储服务控制平面1222还可提供与其它存储服务1240上的卷快照1242的创建、使用和删除相关的服务。基于块的存储服务控制平面1222还可提供与有关数据卷1226和那些卷的快照1242的使用的性能和审计数据的收集和处理相关的服务。

如上指出,提供商网络1200还可实现另一存储服务1240。其它存储服务1240可以提供由基于块的存储服务1220提供的相同或不同类型的存储。例如,在一些实施方案中,其它存储服务1240可以提供基于对象的存储服务,基于对象的存储服务可将数据作为数据对象而存储和管理。例如,各种数据卷1226的卷快照1242可以被存储为特定的数据卷1226的快照对象。除了其它存储服务1240之外,提供商网络1200可以实现其它基于网络的服务1250,这可包括允许客户端1210、以及提供商网络1200的其它服务(例如,基于块的存储服务1220、虚拟计算服务1230和/或其它存储服务1240)执行或请求各种任务的各种不同类型的分析、计算、存储或其它基于网络的系统。

客户端1210可以涵盖可配置为向网络提供商1200提交请求的任何类型的客户端。例如,给定的客户端1210可以包括合适版本的web浏览器,或者可以包括插件模块或被配置为作为由web浏览器提供的执行环境的扩展或在这个环境内执行的其它类型的代码模块。或者,客户端1210可以涵盖应用程序,诸如数据库应用程序(或其用户界面)、媒体应用程序、办公应用程序或可利用计算实例、数据卷1226或提供商网络1200中的其它基于网络的服务以执行各种操作的任何其它应用程序。在一些实施方案中,这种应用程序可以包括用于生成和处理基于网络的服务请求的足够协议支持(例如,针对合适版本的超文本传输协议(http)),而不必对所有类型的基于网络的数据实现完整浏览器支持。在一些实施方案中,客户端1210可以被配置为根据基于表述性状态传输(rest)型基于网络的服务架构、基于文档或消息的基于网络的服务架构或另一合适基于网络的服务架构来生成基于网络的服务请求。在一些实施方案中,客户端1210(例如,计算客户端)可以被配置为以对利用由计算实例提供的计算资源或由数据卷1226提供的块存储在客户端1210上实现的应用程序透明的方式提供对计算实例或数据卷1226的访问。

客户端1210可经由外部网络1260将基于网络的服务请求传递到提供商网络1200。在各种实施方案中,外部网络1260可涵盖在客户端1210和提供商网络1200之间建立基于网络的通信必要的联网硬件和协议的任何合适组合。例如,网络1260通常可以涵盖共同实现互联网的各种电信网络和服务提供商。网络1260还可包括专用网络(诸如局域网(lan)或广域网(wan))、以及公共或专用无线网络。例如,给定的客户端1210和提供商网络1200两者可以分别提供在具有它们自己的内部网络的企业内。在这种实施方案中,网络1260可包括在给定的客户端1210和互联网之间以及在互联网和提供商网络1200之间建立联网链路必要的硬件(例如,调制解调器、路由器、交换机、负载平衡器、代理服务器等)和软件(例如,协议堆栈、计费软件、防火墙/安全软件等)。应当注意,在一些实施方案中,客户端1210可使用专用网络而非公共互联网与提供商网络1200进行通信。

一些实施方案中,基于块的存储服务诸如图12所示那种(和其下层基于块的存储系统)可以允许客户创建存储卷并且将存储卷附加到虚拟计算资源实例,包括在分布式计算系统中实现计算节点集群中的计算节点的那些。在一旦附加存储卷,客户可以在这些卷的顶上创建文件系统,将应用或数据加载到文件系统上,在它们上执行数据库,或者通常以客户可能使用块装置的任何方式使用它们。在一些实施方案中,存储卷可以被放置在特定数据中心、可用性区域或区域中,并且它们可被自动复制以便保护客户数据免受任何单个部件故障影响。

在这个示例中,基于块的存储服务控制平面1222或虚拟计算服务1230、存储服务1240或其它服务1250的控制平面中的一个或多个可以包括监视部件和/或用于实现集群自动扩展的规则引擎,或者集群自动扩展(如本文描述的)可以被实现为在提供商网络1200(未示出)上的单独服务。在一些实施方案中,基于块的存储服务1220、虚拟计算服务1230、存储服务1240和/或其它服务1250可以是这种外部自动扩展服务的客户端。

在一些实施方案中,服务提供商可以提供多种类型的存储卷,每种类型具有不同特征和/或性能特性。在一些实施方案中,基于块的存储服务可以允许客户创建时刻快照并且使用它们来实例化新存储卷。此类快照可以例如用于地理扩展、数据中心迁移和/或灾难恢复。基于块的存储服务还可提供对存储卷的性能度量(诸如带宽、吞吐量、时延和队列深度)的访问。这些和其它度量可通过监视工具的api或通过基于块的存储服务的gui、命令行或其它接口来访问。

在本文所述系统的一些实施方案中,向客户提供存储和计算服务的分布式计算系统可暴露明确允许客户定义要收集的定制度量、定义取决于那些度量的定制自动扩展策略和/或指示那些策略应当被应用到的集群内的实例群组的特定子集的api。

在至少一些实施方案中,本文所述数据存储可以是构建在非结构化对象存储服务上的filesystemapi的实现方式。还要注意,虽然许多用于在分布式计算系统中自动扩展集群的技术的实施方案是根据在apachetm框架上构建的mapreduce系统和服务的特定实现方式描述的,但是也可应用这些技术以便执行在mapreduce的其它实现方式上或在其它类型基于集群的分布式计算框架中执行对集群的自动扩展,其中一些(但非全部)可以包括主计算节点和工作(即,从)计算节点。

在一些实施方案中,本文所述元数据、数据项和/或对象中的至少一些可以存储在固态驱动器(ssd)上。在一些实施方案中,元数据、数据项和/或对象中的至少一些可以例如跨三个位置被复制,以便实现高可用性和耐久性。

示例提供商网络环境

本部分描述了可实现本文所述的方法和设备的实施方案(例如,在mapreduce集群上执行应用的过程中使用的那些)的示例提供商网络环境。然而,这些示例提供商网络环境不旨在是限制性的。

图13示出了根据至少一些实施方案的示例提供商网络环境。提供商网络1300可经由一个或多个虚拟化服务1310向客户端提供资源虚拟化,这允许了客户端购买、租赁或以其它方式获得在一个或多个数据中心中的一个提供商网络或多个提供商网络内的装置上实现的虚拟资源的实例1312,包括但不限于计算和存储资源。专用ip地址1316可以与资源实例1312相关联;专用ip地址是提供商网络1300上的资源实例1312的内部网络地址。在一些实施方案中,提供商网络1300还可提供客户端可从提供商1300获得的公共ip地址1314和/或公共ip地址范围(例如,互联网协议版本4(ipv4)或互联网协议版本6(ipv6)地址)。

常规地,经由虚拟化服务1310,提供商网络1300可以允许服务提供商的客户端(例如,操作客户端网络1350a的客户端)将分配或指派给客户端的至少一些公共ip地址1314与分配给客户端的特定资源实例1312动态地相关联。提供商网络1300还可允许客户端将先前映射到指派给客户端的一个虚拟计算资源实例1312的公共ip地址1314重新映射到也被指派给客户端的另一虚拟计算资源实例1312。使用由服务提供商提供的虚拟计算资源实例1312和公共ip地址1314,服务提供商(诸如客户端网络1350a的运营商)的客户端可以例如实现客户端特定的应用并且在中间网络1340(诸如互联网)上呈现客户端的应用。然后,在中间网络1340上的其它网络实体1320可以生成通向至由客户端网络1350a发布的目的地公共ip地址1314的通信量;通信量被路由到服务提供商数据中心,并且在数据中心处经由网络底层而路由到当前映射到目的地公共ip地址1314的虚拟计算资源实例1312的专用ip地址1316。类似地,来自虚拟计算资源实例1312的响应通信量可以经由网络底层而路由回到中间网络1340上、到达来源实体1320。

注意,虽然图13中未示出监视部件或自动扩展规则引擎,但是在一些实施方案中,此类部件可以在虚拟化服务1310的控制平面内实现。在其它实施方案中,此类部件可以被实现为在提供商网络1300上的单独自动扩展服务的部分,并且虚拟化服务1310可以是这种服务的客户端。

如本文使用的专用ip地址是指在提供商网络中的资源实例的内部网络地址。专用ip地址仅可在提供商网络内进行路由。源自提供商网络外的网络通信量不直接路由到专用ip地址;相反,通信使用映射到资源实例的公共ip地址。提供商网络可以包括提供网络地址转换(nat)或类似功能以执行从公共ip地址到专用ip地址的映射(且反之亦然)的网络装置或设施。

如本文使用的公共ip地址是由服务提供商或由客户端分配给资源实例的互联网可路由网络地址。路由到公共ip地址的通信量例如经由1:1网络地址转换(nat)进行转换并转发到资源实例的相应专用ip地址。

一些公共ip地址可以由提供商网络基础结构分配给特定资源实例;这些公共ip地址可被称为标准公共ip地址,或简称为标准ip地址。在至少一些实施方案中,资源实例的标准ip地址至专用ip地址的映射是所有资源实例类型的默认启动配置。

至少一些公共ip地址可以被指派给提供商网络1300的客户端或由其获得(例如,客户端应用,作为服务的客户的最终用户、服务订户或第三方服务可通过客户端应用与服务交互);然后,客户端可以将它们被指派的公共ip地址分配给指派给客户端的特定资源实例。这些公共ip地址可被称为客户端公共ip地址,或简称为客户端ip地址。替代如标准ip地址的情况那样由提供商网络1300分配给资源实例,客户端ip地址可以例如经由由服务提供商提供的api通过客户端来分配给资源实例。不像标准ip地址那样,客户端ip地址被指派给客户端账户(例如,客户账户)并且可以根据需要或期望由相应的客户端来重新映射到其它资源实例。客户端ip地址与客户端的账户相关联,而非特定资源实例,客户端控制那个ip地址,直到客户端选择将其释放。不像常规静态ip地址那样,客户端ip地址允许客户端通过将客户端的公共ip地址重新映射到与客户端的账户相关联的任何资源实例来掩蔽资源实例或可用性区故障。例如,客户端ip地址使得客户端能够通过将客户端ip地址重新映射到替换资源实例来围绕关于客户端的资源实例或软件的问题进行工程设计。

图14示出了根据至少一些实施方案的使用ip隧穿技术在网络底层上实现覆盖网络的示例数据中心。提供商数据中心1400可以包括网络底层,网络底层包括网络装置1412,诸如路由器、交换机、网络地址转换器(nat)等等。至少一些实施方案可采用互联网协议(ip)隧穿技术来提供覆盖网络,囊封包可经由覆盖网络而使用隧道穿过网络底层1410。ip隧穿技术可以提供用于在网络(例如,图14的数据中心1400中的本地网络)上创建覆盖网络的映射和囊封系统,并且可以为覆盖层(公共ip地址)和网络底层1410层(专用ip地址)提供单独命名空间。可针对映射目录(例如,由映射服务1430提供的)来检查覆盖层中的包以确定它们隧道底层目标(专用ip地址)应当是什么。ip隧穿技术提供虚拟网络拓扑(覆盖网络);呈现给客户端的接口(例如,服务api)被附接到覆盖网络,使得当客户端提供客户端想要将包发送到的ip地址时,ip地址通过与知道ip覆盖地址所在位置的服务映射服务(例如,映射服务1430)进行通信在虚拟空间中运行。

在至少一些实施方案中,ip隧穿技术可以将ip覆盖地址(公共ip地址)映射到底层ip地址(专用ip地址),将包囊封在两个命名空间之间的隧道中,并且经由隧道将包递送到正确端点,在此位置,囊封从包上剥除。在图14中,示出从主机1420a上的虚拟机(vm)1424a到中间网络1440上的装置(通过边缘路由器1414)的示例覆盖网络隧道1434a和在主机1420b上的vm1424b与主机1420c上的vm1424c之间的示例覆盖网络隧道1434b。在一些实施方案中,包可以在发送前以覆盖网络包格式被囊封,并且覆盖网络包可以在接收后被剥除。在其它实施方案中,代替使得包囊封在覆盖网络包中,覆盖网络地址(公共ip地址)可以在发送前嵌入在包的底层地址(专用ip地址)中,并且在接收时从包地址剥除。作为示例,覆盖网络可以使用32位ipv4(互联网协议版本4)地址作为公共ip地址实现,并且ipv4地址可以作为在底层网络上用作专用ip地址的128位ipv6(互联网协议版本6)地址的部分嵌入。在一些实施方案中,当在mapreduce集群上执行可实现集群自动扩展的应用时,可以采用ip隧穿技术(诸如图14所示ip隧穿技术),如图所述。

参考图14,可实现实施方案的至少一些网络可以包括使得多个操作系统能够在主计算机(例如,图14的主机1420a和1420b)上同时运行的硬件虚拟化技术,即,作为主机1420上的虚拟机(vm)1424。例如,vm1424可以租赁或租用给网络提供商的客户端。主机1420上的监管程序或虚拟机监视器(vmm)1422向主机上的vm1424呈现了虚拟平台并且监视vm1424的执行。每个vm1424可以被提供有一个或多个专用ip地址;主机1420上的vmm1422可了解到主机上的vm1424的专用ip地址。映射服务1430可了解到所有网络ip前缀和在本地网络上服务ip地址的路由器或其它装置的ip地址。这包括服务多个vm1424的vmm1422的ip地址。映射服务1430可以例如集中在服务器系统上,或替代地可以分布在网络上的两个或更多个服务器系统或其它装置间。网络可以例如使用映射服务技术和ip隧穿技术例如在数据中心1400网络内的不同主机1420上的vm1424之间路由数据包;注意,内部网关协议(igp)可以用于在这种本地网络内交换路由信息。

另外,诸如提供商数据中心1400网络(有时称为自主系统(as))的网络可以使用映射服务技术、ip隧穿技术和路由服务技术将包从vm1424路由到互联网目的地和从互联网源路由到vm1424。注意,外部网关协议(egp)或边界网关协议(bgp)通常用于互联网上的源和目的地之间的互联网路由。图14示出了根据至少一些实施方案的实现提供资源虚拟化技术和经由连接到互联网转接提供商的边缘路由器1414提供完整互联网访问的网络的示例提供商数据中心1400。提供商数据中心1400例如可以向客户端提供了经由硬件虚拟化服务来实现虚拟计算系统(vm1424)的能力和经由存储虚拟化服务来在存储资源1418上实现虚拟数据存储1416的能力。注意,在各种实施方案中,如本文描述的,虚拟数据存储1416的存储装置1418可以包括对象存储装置、基于块的存储装置和/或基于卷的存储装置。

数据中心1400网络可实现ip隧穿技术、映射服务技术和路由服务技术以向虚拟资源和从虚拟资源路由通信量,例如将包从数据中心1400中的主机1420上的vm1424路由到互联网目的地和从互联网源路由到vm1424。互联网源和目的地可以例如包括连接到中间网络1440的计算系统1470和连接到本地网络1450的计算系统1452,本地网络被连接到中间网络1440(例如,经由将网络1450连接到互联网转接提供商的边缘路由器1414)。提供商数据中心1400网络还可以在数据中心1400中的资源之间路由包,例如从数据中心1400中的主机1420上的vm1424到数据中心1400中的相同主机上或其它主机1420上的其它vm1424。

提供数据中心1400的服务提供商还可提供附加数据中心1460,附加数据中心包括类似于数据中心1400的硬件虚拟化技术并且也可以连接到中间网络1440。包可以从数据中心1400转发到其它数据中心1460,例如从数据中心1400中的主机1420上的vm1424到另一类似的数据中心1460中的另一主机上的另一vm,且反之亦然。

虽然在上文描述了使得多个操作系统能够在主计算机上作为主机上的虚拟机(vm)而同时运行的硬件虚拟化技术,其中vm可以租赁或租用给网络提供商的客户端,但是硬件虚拟化技术也可用于以类似的方式将其它计算资源(例如存储资源1418)作为虚拟资源提供给网络提供商的客户端。

如图14所示,在一些实施方案中,提供商数据中心1400可以包括监视服务1480和/或集群自动扩展引擎1485。例如,在一些实施方案中,监视服务1480可以被配置为收集并分析在表示自动扩展触发条件的表达式中使用的度量,或者可以收集此类度量并且将它们传递给单独自动扩展规则引擎以供分析,之后,自动扩展规则引擎可以确定是否并且何时需要执行自动扩展动作(未示出)。在一些实施方案中,由提供商数据中心1400提供的分布式计算服务可以是监视服务1480的客户端。在一些实施方案中,集群自动扩展引擎1485可以被配置为执行使用本文所述自动扩展技术中任一者而确定的任何自动扩展动作。在一些实施方案中,自动扩展规则引擎可以在集群自动扩展引擎1485内而非在监视服务1480内实现。

图15是根据至少一个实施方案的向客户端提供存储虚拟化服务和硬件虚拟化服务的示例提供商网络的方框图。硬件虚拟化服务1520向客户端提供了多个计算资源1524(例如,vm)。计算资源1524可以例如租赁或租用给提供商网络1500的客户端(例如,租赁或租用给实现客户端网络1550的客户端)。每个计算资源1524可以被提供有一个或多个专用ip地址。提供商网络1500可以被配置为将包从计算资源1524的专用ip地址路由到公共互联网目的地和从公共互联网源路由到计算资源1524。

提供商网络1500可以向例如经由本地网络1556耦接到中间网络1540的客户端网络1550提供了经由耦接到中间网络1540和提供商网络1500的硬件虚拟化服务1520来实现虚拟计算系统1592的能力。在一些实施方案中,硬件虚拟化服务1520可以提供一个或多个api1502,例如web服务接口,客户端网络1550可经由一个或多个api来访问由硬件虚拟化服务1520提供的功能(例如,经由控制台1594)。在至少一些实施方案中,在提供商网络1500处,在客户端网络1550处的每个虚拟计算系统1592可对应于租用、租赁或以其它方式提供给客户端网络1550的计算资源1524。

从虚拟计算系统1592和/或另一客户端装置1590或控制台1594的实例,客户端可以例如经由一个或多个api1502访问存储虚拟化服务1510的功能以从由提供商网络1500提供的虚拟数据存储1516访问数据和向虚拟数据存储存储数据。在一些实施方案中,可以在客户端网络1550处提供虚拟数据存储网关(未示出),客户端网络可以本地高速缓存至少一些数据(例如,频繁访问或关键的数据),并且可经由一个或多个通信信道与虚拟数据存储服务1510进行通信以从本地高速缓存上传新或修改过的数据,使得维持主要数据存储(虚拟数据存储1516)。在至少一些实施方案中,经由虚拟计算系统1592和/或在另一客户端装置1590上,用户可安装和访问作为本地虚拟存储装置1598呈现给用户的虚拟数据存储1516卷。注意,在各种实施方案中,如本文描述的,虚拟数据存储1518的存储装置1516可以包括对象存储装置、基于块的存储装置和/或基于卷的存储装置。

虽然图15中未示出,但是也可经由api1502从提供商网络1500内的资源实例访问虚拟化服务。例如,客户端、设施服务提供商或其它实体可以经由api1502从提供商网络1500上的相应专用网络内访问虚拟化服务,以便请求对专用网络内或另一专用网络内的一个或多个资源实例的分配。

注意,虽然图15中未示出监视部件或自动扩展规则引擎,但是在一些实施方案中,此类部件可以在存储虚拟化服务1510和/或硬件虚拟化服务1520的控制平面内实现。在其它实施方案中,此类部件可以被实现为在提供商网络1500上的单独自动扩展服务的部分,并且虚拟化服务1510和/或1520可以是这种服务的客户端。

图16示出了根据至少一些实施方案的在提供商网络上向至少一些客户端提供专用网络的示例提供商网络。在提供商网络1600上的客户端的虚拟专用网络1660例如使得客户端能够将它们在客户端网络1650上的现有基础结构(例如,装置1652)连接到一组逻辑上隔离的资源实例(例如,vm1624a和1624b以及存储装置1618a和1618b),并且将管理能力(诸如安全服务、防火墙和入侵检测系统)扩展为包括它们资源实例。

客户端的虚拟专用网络1660可以经由专用通信信道1642而连接到客户端网络1650。专用通信信道1642可以例如是根据网络隧穿技术实现的隧道或者跨中间网络1640的一些其它对等连接。中间网络可以例如是共享网络或公共网络(诸如互联网)。或者,专用通信信道1642可以跨虚拟专用网络1660与客户端网络1650之间的直接专用连接而实现。

公共网络可以广泛地定义为在多个实体间提供开放访问和互连的网络。互联网或万维网(www)是公共网络的示例。相较其访问通常不受限制的公共网络,共享网络可以广泛地定义为其访问被限制到两个或更多个实体的网络。共享网络可以例如包括一个或多个局域网(lan)和/或数据中心网络或互连以形成广域网(wan)的两个或更多个lan或数据中心网络。共享网络示例可以包括但不限于公司网络和其它企业网络。共享网络可以在从覆盖局域的网络到全域网络的范围中的任何地方。注意,共享网络可与公共网络共享至少一些网络基础结构,并且共享网络可耦接到一个或多个其它网络(这可包括公共网络),其中其它网络与共享网络之间的访问是受控的。相较公共网络(诸如互联网),共享网络也可以被视为专用网络。在实施方案中,共享网络或公共网络可以用作提供商网络与客户端网络之间的中间网络。

为了为提供商网络1600上的客户端而建立虚拟专用网络1660,可以将一个或多个资源实例(例如,vm1624a和1624b以及存储装置1618a和1618b)指派给虚拟专用网络1660。注意,其它资源实例(例如,存储装置1618c和vm1624c)在提供商网络1600上仍可用于其它客户端。也可将公共ip地址范围指派给虚拟专用网络1660。另外,提供商网络1600的一个或多个联网装置(路由器、交换机等等)可以被指派给虚拟专用网络1660。专用通信信道1642可以建立在虚拟专用网络1660处的专用网关1662与客户端网络1650处的网关1656之间。

在至少一些实施方案中,除了专用网关1662之外或替代专用网关1662,虚拟专用网络1660可以包括公共网关1664,替代经由专用通信信道1642或除了专用通信信道1642之外,公共网关使得虚拟专用网络1660内的资源能够经由中间网络1640而与实体(例如,网络实体1644)直接通信,且反之亦然。

虚拟专用网络1660可以但未必被细分为两个或更多个子网1670。例如,在包括专用网关1662和公共网关1664两者的实现方式中,专用网络可以被细分为包括通过专用网关1662可触及的资源(vm1624a和存储装置1618a,在这个示例中)的子网1670b和包括通过公共网关1664可触及的资源(在这个示例中,vm1624b和存储装置1618b)的子网1670b。

客户端可以将特定客户端公共ip地址分配给虚拟专用网络1660中的特定资源实例。然后,中间网络1640上的网络实体1644可以将通信量发送给由客户端发布的公共ip地址;通信由提供商网络1600路由到相关联的资源实例。来自资源实例的返回通信量由提供商网络1600跨中间网络1640而路由回到网络实体1644。注意,在资源实例与网络实体1644之间路由通信量可能要求网络地址转换以在资源实例的公共ip地址和专用ip地址之间转换。

至少一些实施方案可以允许客户端将客户端的虚拟专用网络1660(如图16所示)中的公共ip地址重新映射到客户端的外部网络1650上的装置。当(例如,从网络实体1644)接收到包时,网络1600可以确定由包指示的目的地ip地址已经被重新映射到外部网络1650上的端点并且处理包通向到相应端点的路由(经由专用通信信道1642或经由中间网络1640)。响应通信量可以通过提供商网络1600从端点路由到网络实体1644,或替代地可通过客户端网络1650直接路由到网络实体1644。从网络实体1644的角度,网络实体1644似乎在与提供商网络1600上的客户端的公共ip地址进行通信。然而,网络实体1644已实际上与客户端网络1650上的端点进行通信。

虽然图16示出了在中间网络1640上和在提供商网络1600外的网络实体1644,但是网络实体可以是在提供商网络1600上的实体。例如,由提供商网络1600提供的资源实例中的一者可以是将通信量发送到由客户端发布的公共ip地址的网络实体。

注意,虽然图16中未示出监视部件或自动扩展规则引擎,但是在一些实施方案中,此类部件可以在存储虚拟化服务1630和/或硬件虚拟化服务1635的控制平面内实现。在其它实施方案中,此类部件可以被实现为提供商网络1600上的单独自动扩展服务的部分,并且虚拟化服务1630和/或1635可以是这种服务的客户端。

说明性系统

在至少一些实施方案中,实现本文所述的方法和设备的部分或全部的计算环境可以包括通用计算机系统,通用计算机系统包括一个或多个计算机可访问介质(诸如图17所示计算机系统1700)或被配置为访问一个或多个计算机可访问介质。例如,在各种实施方案中,计算机系统1700可以表示:分布式计算系统(例如,mapreduce集群)的主节点或工作节点;对象存储服务、基于块的存储服务或基于卷的存储服务的节点;实现集群自动扩展的服务提供商系统、客户端计算系统或可用于实现本文所述的方法和设备的任何其它类型的计算机系统上的计算节点。在所示实施方案中,计算机系统1700包括经由输入/输出(i/o)接口1730耦接到系统存储器1720的一个或多个处理器1710。计算机系统1700还包括耦接到i/o接口1740的网络接口1730。

在各种实施方案中,计算机系统1700可以是包括一个处理器1710的单处理器系统或包括多个处理器1710(例如,两个、四个、八个或另一适合数量)的多处理器系统。处理器1710可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器1710可以是实现各种指令集架构(isa)(诸如x86、powerpc、sparc或mipsisa或任何其它合适的isa)中任一者的通用或嵌入式处理器。在多处理器系统中,处理器1710中每一者可以共同但未必实现相同isa。

系统存储器1720可以被配置为存储可由处理器1710访问的指令和数据。在各种实施方案中,可使用任何合适的存储器技术(诸如静态随机存取存储器(sram)、同步动态ram(sdram)、非易失性/闪存型存储器、或者任何其它类型的存储器)来实现系统存储器1720。在所示实施方案中,实现一个或多个期望功能的程序指令和数据(诸如上文针对本文所述的方法和设备而描述的那些方法、技术和数据)被示出为作为代码1725和数据1726存储在系统存储器1720中。例如,在各种时间上,系统存储器1720中的数据1726可以包括以下各项中的一个或多个:要由hpc应用或计算(例如,mapreduce应用)处理的数据集(或其部分);由这个应用产生的输出数据、密钥对、主文件、分级文件或mapreduce作业的配置或操作参数;或者当执行此类应用时可使用的任何其它信息。在另一示例中,在各种时间上,系统存储器1720中的代码1725可以包括可执行以实现mapreduce应用(或其任何部分)的程序指令、操作系统或虚拟机监视器、库或实用程序功能、api或服务接口、或者可执行以执行本文所述方法的任何其它程序指令。

在一个实施方案中,i/o接口1730可以被配置为协调处理器1710、系统存储器1720和装置中的任何外围装置之间的i/o通信量,包括网络接口1740或其它外围接口。在一些实施方案中,i/o接口1730可以执行任何必要协议、定时、或者将来自一个部件(例如,系统存储器1720)的数据信号转换成适于另一部件(例如,处理器1710)使用的格式的其它数据转换。例如,在一些实施方案中,i/o接口1730可以包括对通过各种类型外围总线而附接的装置的支持,诸如外围部件互连(pci)总线标准或通用串行总线(usb)标准的变型。在一些实施方案中,i/o接口1730的功能可以分成两个或更多个单独部件,诸如像北桥和南桥。另外,在一些实施方案中,i/o接口1730(诸如与系统存储器1720的接口)的一些或全部的功能性可以直接结合到处理器1710中。

网络接口1740可以被配置为允许在计算机系统1700与附接到一个网络或多个网络1750的其它装置1760之间交换数据,例如,所述其它装置诸如其它计算机系统(例如,类似于计算机系统1700的计算机系统或包括比计算机系统1700更多、更少或与之不同的部件的计算机系统)或如图1至16所示和所述所示的装置。例如,在一些实施方案中,计算机系统1700可以表示如本文所述的实现自动扩展的基于集群的dcs(例如,mapreduce集群)的节点,并且网络接口1740可以被配置为允许数据在计算机系统1700与实现对象数据存储服务、基于块的存储服务或基于卷的存储服务的装置之间交换。例如,在各种实施方案中,网络接口1740可经由任何合适的有线或无线通用数据网络(诸如以太网络类型)来支持通信。另外,网络接口1740可经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储区域网络(诸如光纤通道san)、或者经由任何其它合适类型网络和/或协议来支持通信。

在一些实施方案中,系统存储器1720可以是被配置为存储如上文针对图1至16所述的用于实现本文所述的方法和设备的实施方案的程序指令和数据的计算机可访问介质的一个实施方案。然而,在其它实施方案中,可以在不同类型计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可以包括非暂时性存储介质或存储器介质,诸如磁性介质或光学介质,例如,经由i/o接口1730耦接到计算机系统1700的磁盘或dvd/cd。非暂时性计算机可访问存储介质还可包括可包括于计算机系统1700的一些实施方案中作为系统存储器1720或另一类型的存储器的任何易失性或非易失性介质,诸如ram(例如,sdram、ddrsdram、rdram、sram等等)、rom等等。另外,计算机可访问介质可以包括经由通信介质(诸如网络和/或无线链路)而传递的传输介质或信号(诸如电气、电磁或数字信号),这种传递诸如可经由网络接口1740来实现。

各种实施方案可进一步包括在计算机可访问介质上接收、发送或存储根据前述描述而实现的指令和/或数据。一般来说,计算机可访问介质可以包括存储介质或存储器介质,诸如磁性介质或光学介质,例如磁盘或dvd/cd-rom、易失性或非易失性介质(诸如ram(例如,sdram、ddr、rdram、sram等等)、rom等等),以及经由通信介质(诸如网络和/或无线链路)而传递的传输介质或信号(诸如电气、电磁或数字信号)。

本公开的实施方案可以根据以下条款进行描述:

1.一种分布式计算系统,所述分布式计算系统包括:

多个计算节点,每个计算节点包括至少一个处理器和存储器;以及

接口;

其中所述分布式计算系统实现分布式计算服务;

其中所述多个计算节点根据mapreduce分布式计算框架而配置为计算节点集群,其中所述集群被配置为执行分布式应用;

其中所述分布式计算服务被配置为:

通过所述接口从所述分布式计算服务的客户端接收定义当估计为真时表示用于在所述集群上执行自动扩展操作的触发条件的表达式的输入和指定响应于所述表达式估计为真而采取的扩展动作的输入,其中所述表达式是取决于在所述分布式应用的执行期间生成的一个或多个度量的值;

在所述分布式应用的执行期间收集所述一个或多个度量;

在所述分布式应用的执行期间并依据所述收集的度量,确定所述表达式估计为真;以及

响应于所述确定而发起所述自动扩展操作在所述集群上执行,其中所述自动扩展操作包括用于向所述集群添加一个或多个计算节点的操作或用于从所述集群移除一个或多个计算节点的操作。

2.如条款1所述的系统,

其中所述多个计算节点包括两个或更多个计算节点群组,每个计算节点群组包括所述多个计算节点的非重叠子集;

其中通过所述接口而接收的所述输入定义自动扩展策略;

其中通过所述接口而接收的所述输入进一步包括将所述两个或更多个计算节点群组中的一个或多个识别为所述自动扩展策略所适用的计算节点群组的输入;并且

其中为了发起所述自动扩展操作在所述集群上执行,所述分布式计算服务被配置为发起执行用于向所述识别的计算节点群组中的一者添加一个或多个计算节点的操作或用于从所述识别的计算节点群组中的一者移除一个或多个计算节点的操作。

3.如任一前述条款所述的系统,

其中所述多个计算节点包括两个或更多个计算节点群组,每个计算节点群组包括所述多个计算节点的非重叠子集;

其中通过所述接口而接收的所述输入定义自动扩展策略;并且

其中所述自动扩展策略指定:响应于所述表达式估计为真而采取的所述扩展动作包括用于向所述多个计算节点添加新的计算节点群组的操作或用于从所述多个计算节点移除所述两个或更多个计算节点群组中的一者的操作。

4.如任一前述条款所述的系统,

其中所述分布式应用被配置为发出由所述分布式计算服务的所述客户端定义的一个或多个专用度量;并且

其中所述表达式是取决于所述一个或多个专用度量中的至少一者。

5.如任一前述条款所述的系统,

其中所述表达式是取决于当在所述分布式计算系统中操作时由所述集群或由所述计算节点中的一个或多个默认发出的一个或多个度量。

6.如任一前述条款所述的系统,

其中为了在所述分布式应用的执行期间收集所述一个或多个度量,所述分布式计算服务被配置为:

从所述多个计算节点中的两个或更多个中每一者上的相应监视部件接收一个或多个度量;以及

聚合从所述相应监视部件接收的所述度量以生成所述两个或更多个计算节点的聚合度量;并且

其中所述表达式是取决于所述聚合度量。

7.一种方法,所述方法包括:

通过一个或多个计算机,执行:

创建计算资源实例集群,其中所述集群包括两个或更多个实例群组,每一者包括一个或多个计算资源实例;

接收将自动扩展策略与所述两个或更多个实例群组中的一者相关联的输入,其中所述自动扩展策略定义某个条件,当满足时,所述条件触发自动扩展操作在所述两个或更多个实例群组中的所述一者上执行,这改变了所述两个或更多个实例群组中的所述一者中的计算资源实例数量;

在所述集群上分布式应用的执行期间,检测所述触发条件已被满足;以及

响应于所述检测而发起所述自动扩展操作在所述两个或更多个实例群组中的所述一者上执行。

8.如条款7所述的方法,

其中所述触发条件包括某个表达式,当估计为真时,所述表达式触发所述自动扩展操作在所述两个或更多个实例群组中的所述一者上执行,并且其中所述表达式是取决于在所述集群上所述分布式应用的执行期间生成的一个或多个度量。

9.如条款7或8所述的方法,

其中所述触发条件包括某个表达式,当估计为真时,所述表达式触发所述自动扩展操作在所述两个或更多个实例群组中的所述一者上执行,并且其中所述表达式是取决于一周中的某天、日期、一天中的某时、经过的时间段、或者估计的时间段。

10.如条款7至9中任一项所述的方法,其进一步包括:

接收将另一自动扩展策略与所述两个或更多个实例群组中的另外一者相关联的输入,其中所述另一自动扩展策略定义第二条件,当满足时,所述第二条件触发第二自动扩展操作在所述两个或更多个实例群组中的所述另外一者上执行,这改变了所述两个或更多个实例群组中的所述另外一者中的计算资源实例数量;

在所述集群上所述分布式应用的执行期间,检测所述第二触发条件已被满足;以及

响应于检测到所述第二触发条件已被满足,发起所述第二自动扩展操作在所述两个或更多个实例群组中的所述另外一者上执行。

11.如条款7至10中任一项所述的方法,

其中所述自动扩展操作包括用于向所述两个或更多个实例群组中的所述一者添加容量的操作。

12.如条款7至11中任一项所述的方法,

其中所述自动扩展操作包括用于从所述两个或更多个实例群组中的所述一者移除容量的操作。

13.如条款12所述的方法,

其中所述方法进一步包括:

确定将所述计算资源实例中的一个或多个中的哪个从所述两个或更多个实例群组中的所述一者移除;以及

将所述计算资源实例中的所述确定的一个或多个从所述两个或更多个实例群组中的所述一者移除;并且

其中所述确定是取决于以下各项中的一个或多个:确定所述两个或更多个实例群组中的所述一者中的所述计算资源实例中的一者存储将会在所述计算资源被移除的情况下丢失的数据、确定移除所述两个或更多个实例群组中的所述一者中的所述计算资源实例中的一者将会造成无法使复制要求或法定要求得到满足、确定所述两个或更多个实例群组中的所述一者中的所述计算资源节点中的一者已被停用、确定所述两个或更多个实例群组中的所述一者中的所述计算资源节点中的一者当前正在代表所述分布式应用执行任务、或者确定当前正在所述两个或更多个实例群组中的所述一者中的所述计算资源实例中的一者上执行的任务的进度。

14.如条款7至13中任一项所述的方法,

其中所述自动扩展策略进一步定义所述自动扩展操作使所述两个或更多个实例群组中的所述一者的所述容量改变的量或所述自动扩展操作使所述两个或更多个实例群组中的所述一者的所述容量改变的百分比。

15.如条款7至14中任一项所述的方法,

其中所述两个或更多个实例群组中的每一实例群组包括具有相应不同类型的计算资源实例或在所述集群上所述分布式应用的所述执行中具有相应不同作用的计算资源实例。

16.如条款7至15中任一项所述的方法,

其中所述检测由实现于在所述计算资源实例集群之外的计算资源上的外部服务执行;并且

其中所述发起响应于从所述外部服务接收所述触发条件已被满足的指示而执行。

17.如条款7至16中任一项所述的方法,其中所述创建所述集群包括根据mapreduce分布式计算框架配置计算资源实例集合,所述计算资源实例集合包括所述两个或更多个实例群组中每一者中的所述一个或多个计算资源实例作为计算节点集群。

18.如条款7至17中任一项所述的方法,其中所述计算资源实例集群包括一个或多个虚拟计算资源实例或虚拟存储资源实例。

19.一种非暂时性计算机可访问存储介质,所述非暂时性计算机可访问存储介质存储程序指令,所述程序指令当在一个或多个计算机上执行时致使所述一个或多个计算机实现分布式计算服务;

其中所述分布式计算服务包括:

虚拟计算资源实例集群,所述虚拟计算资源实例集群被配置为执行分布式应用;

接口,一个或多个客户端通过所述接口来与所述服务交互;以及

自动扩展规则引擎;

其中所述分布式计算服务被配置为:

通过所述接口从所述分布式计算服务的客户端接收定义自动扩展策略的输入,其中所述输入包括定义当估计为真时表示用于执行自动扩展操作的触发条件的表达式的信息、指定响应于所述表达式估计为真而采取的扩展动作的信息、以及识别所述自动扩展策略所适用的所述集群的所述虚拟计算资源实例的子集的输入;并且

其中所述自动扩展规则引擎被配置为:

在所述分布式应用的执行期间并依据在所述执行期间生成的一个或多个度量,确定所述表达式估计为真;以及

响应于所述确定而发起所述自动扩展操作的执行,其中所述自动扩展操作包括用于向所述自动扩展策略所适用的所述集群的所述虚拟计算资源实例的所述子集添加一个或多个实例的操作或用于从所述自动扩展策略所适用的所述集群的所述虚拟计算资源实例的所述子集移除一个或多个实例的操作。

20.如条款19所述的非暂时性计算机可访问存储介质,其中所述表达式是取决于以下各项中的一个或多个:在所述分布式应用的所述执行期间生成的所述一个或多个度量中的一者的值、针对在所述分布式应用的所述执行期间生成的所述度量中的一者指定的最小阈值或最大阈值、在所述分布式应用的所述执行期间生成的所述度量中的一者的最小阈值或最大阈值被违反的时长、一周中的某天、日期、一天中的某时、经过的时间段、估计的时间段、资源利用度量、成本度量、代表所述分布式应用而完成任务执行的估计时间、或者将代表所述分布式应用执行的待定任务的数量。

21.如条款19或20所述的非暂时性计算机可访问存储介质,其中所述表达式是取决于以下各项中的一个或多个:

当在所述分布式计算系统中操作时由所述应用、由所述集群或由所述虚拟计算资源实例中的一个或多个默认发出的度量;或者

由所述分布式计算服务的所述客户端定义并且由所述分布式应用在其执行期间发出的专用度量。

22.如条款19至21中任一项所述的非暂时性计算机可访问存储介质,其中定义所述自动扩展策略的所述输入符合被定义用于将输入提供给所述自动扩展规则引擎的应用程序编程接口(api)。

如附图所示和本文所述的各种方法表示示例性方法实施方案。所述方法可以软件、硬件或其组合实现。可改变方法的顺序,并且可对各种元素进行添加、重排、组合、省略、修改等等。

如将对受益于本公开的领域的技术人员显而易见的,可以做出各种修改和改变。意图是,涵盖所有此类修改和改变,并相应地,以上描述被认为是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1