为分布式处理系统管理元数据的制作方法

文档序号:12287806阅读:131来源:国知局
为分布式处理系统管理元数据的制作方法与工艺

该说明书涉及管理分布式处理系统中的元数据。

分布式处理系统是包括能够被指派为执行各种任务或过程的多个数据处理器的系统。它们例如可以包括数千个数据处理器,其中每一个能够执行多种不同的过程。分布式处理系统可以被用于处理大量数据和/或用于处理连续的数据流。能够由分布式计算系统来执行的各种计算已经促成了用于执行各种任务的许多不同工具的研发。



技术实现要素:

总体上,该说明书中所描述主题的一个创新方面能够以方法来体现,其包括动作:在包括一个或多个数据处理装置的集线器设备处接收计算规范,所述计算规范包括指定要由分布式处理系统所执行的计算的初始状态的粒子集合,所述分布式处理系统包括多个数据处理器,其中该粒子集合中所包括的每个粒子包括指定计算的初始状态的一部分的元数据;由该集线器设备基于与该粒子集合中所包括的每个粒子相关联的粒子类型来存储表示计算的状态的粒子层级,该粒子层级包括用于该粒子层级的一个或多个预订的预订粒子,每个预订与该粒子层级中所包括的一个或多个粒子相对应,并且每个预订指定要由该集线器设备所执行的一个或多个动作;以及由该集线器设备并且在该计算的执行期间执行由该一个或多个预订中的至少一个预订所指定的一个或多个动作中的至少一个动作。该方面的其它实施例包括相对应的系统、装置,以及在计算机存储设备上进行编码的被配置为执行该方法的动作的计算机程序。

这些和其它实施例均可选地能够包括以下一个或多个特征。该粒子层级可以包括:一个或多个管理器代理(agent)粒子,其指定一个或多个管理器代理过程的元数据,所述一个或多个管理器代理过程管理该分布式处理系统的计算的执行;一个或多个数据集粒子,其包括能够由该分布式处理系统访问的数据的元数据;一个或多个任务粒子,其包括要由该分布式处理系统执行的一个或多个任务的元数据;或者一个或多个工作器代理粒子,其针对该一个或多个任务中的至少一个任务而包括一个或多个工作器代理的元数据,每个工作器代理与用于执行该任务的多个数据处理器的子集相对应。

该计算规范可以针对该粒子层级的一个或多个预订中的每一个预订指定预订代理。每个预订代理可以是i)具有粒子层级中所包括的相对应粒子的管理器代理,或者ii)具有粒子层级中所包括的相对应粒子的工作器代理。

该一个或多个预订之一可以是观察预订,其指示该集线器设备向该观察预订的预订代理通知由该观察预订所对应的该粒子层级中的一个或多个粒子指定的状态部分的指定变化。

该一个或多个预订之一可以是查询预订,其指示该集线器设备响应于接收到该查询预订而为该查询预订的预订代理提供与该查询预订所对应的该粒子层级中的一个或多个粒子所指定的状态部分相关联的特定信息。

该一个或多个预订之一可以是主张预订,其指示该集线器设备指派该主张预订所对应的该粒子层级中的一个或多个粒子中所包括的粒子的所有权。

该方法可以进一步包括:接收用于计算的附加粒子;并且针对该计算将该附加粒子存储在该粒子层级中。

该方法可以进一步包括:通过在计算的执行期间监视该粒子层级中所包括的一个或多个粒子的一个或多个变化而监视该计算的状态;并且响应于检测到具有被预订代理所预订的相对应预订的特定粒子的特定变化而向该预订代理提供通知。

每个粒子可以指定以下中的一个或多个:描述该粒子在该粒子层级内的位置的名称;该粒子的当前状态;拥有该粒子的所有者;该粒子的所有权将会到期的到期时间;包括用于监视计算进度的量度的统计;对粒子所有权的限制;对该粒子层级中所包括的其它粒子的依赖性;或者该集线器设备所指定的指示对该粒子的最近更新的时间戳。

要由该集线器所执行的一个或多个动作可以包括以下中的一个或多个:向预订代理提供在观察预订所对应的一个或多个粒子中发生了预先指定的事件的通知;向预订代理指派主张预订所对应的一个或多个粒子的所有权;更新一个或多个粒子的当前状态;或者为预订代理提供查询预订所对应的一个或多个粒子中包括的特定元数据。

管理器代理过程中的一个或多个管理器代理过程可以包括:启动器代理过程,其对工作器代理粒子子树进行观察并且启动过程;匹配器代理过程,其将要由该分布式处理系统处理的数据与工作器代理中的一个或多个工作器代理进行匹配;或者任务整形器代理过程,其对任务粒子子树进行管理。

该说明书中所描述主题的特定实施例能够被实施从而实现以下一种或多种优势。使用集线器设备来管理使用分布式处理系统所执行的计算的元数据允许使用公共的集线器设备来执行各种计算。公共的集线器设备能够提供容错、调度、工作器管理以及特定计算所需的其它特征。使用集线器设备执行计算的工具开发人员避免了需要部署许多集线器设备共有的特征,并且该集线器设备在计算需要时还允许开发人员定制。除了集线器自身所支持的管理之外,所连接的代理能够观察并更新集线器中的元数据从而提供附加的管理功能,举出几个示例,诸如定制调度和工作器管理。

附图以及以下的描述中给出了本说明书中所描述主题的一个或多个实施例的细节。该主题的其它特征、方面和优势将由于描述、附图和权利要求而变得显而易见。

附图说明

图1是其中集线器设备为分布式处理系统管理元数据的示例环境的框图。

图2是集线器设备所管理的示例粒子层级的图示。

图3是通过其为分布式处理系统管理元数据的示例过程的流程图。

图4是示例数据处理装置的框图。

各图中同样的附图标记和指示表示同样的要素。

具体实施方式

集线器设备促进对使用分布式处理系统执行的计算的元数据的管理。在实施主管-工作器架构的分布式处理系统中,主管的传统角色可以由集线器设备和管理器代理所承担。该集线器设备保存表示系统所执行的计算的状态的元数据。该管理器代理则观察计算的状态并随时间对其进行更新。工作器代理从集线器设备要求工作单元,执行用于计算的数据处理,并且随时间更新计算的状态。

分布式处理系统可以包括许多数据处理器,它们均能够被指派工作器或管理器的角色,并且可以被用来执行部分计算。该集线器设备存储计算状态并且以被设计为包容各种计算的元数据管理要求的差异的方式来管理计算元数据。一种示例计算可以是对持续流动的传入数据流所执行的过滤、排序和报告过程的组合。另一种示例计算是大规模图形处理算法,其生成与图形中所表示的数据相关的统计和其它信息。

由分布式处理系统的数据处理器所承担的管理器代理角色例如包括可以启动要由系统所执行的其它代理和过程的启动器代理,将任务划分为子任务以便由工作器代理进行处理的任务整形器代理,以及向工作器代理指派任务的匹配器代理。工作器代理执行匹配器代理所指派的任务。管理器和工作器代理都贯穿计算的执行而与集线器设备进行通信,例如发出指定计算状态的变化的更新请求或者有关计算状态的查询。

存储在集线器中以用于计算的信息可以包括若干类型的元数据,它们共同包括任意给定时间的计算状态。该元数据被存储在粒子层级中,其中每个粒子表示指定计算状态的一部分的元数据。例如,任务粒子子树可以包括计算中所包括的每项任务和子任务的元数据,并且每个粒子表示任务或子任务的元数据,诸如负责执行特定子任务的工作器代理或者子任务的进度。计算的初始状态由控制器所提供的规范进行描述,上述控制器例如发起计算的计算机。贯穿该计算,粒子可以被增加、修改、或者从层级移除,这反映出计算状态的变化。例如,已经完成的任务和/或子任务的粒子可以从粒子层级中被移除,而附加任务或输入数据的粒子则可以被添加至该层级。

执行计算的代理可以使用预订来表达对粒子层级中所表示的元数据的兴趣,例如子树的粒子、其它代理、数据集、或任务数据。预订指定了对粒子子集的兴趣,上述粒子子集可以包括单个粒子。预订的范围由其附接点和深度所建立,其指定了粒子层级中子树的根并且可以对预订所覆盖的子树内的深度进行限制。作为示例,将准备进行处理的粒子指派至能够处理它们的代理的匹配器代理可以对观察能够执行特定任务的工作器代理的子树进行预订。基于该预订,集线器设备在所指定的工作器代理的子树中发生变化时(诸如工作器代理完成了一项子任务)向该匹配器代理提供更新。预订粒子也可以在粒子层级中有所表示,并且例如能够由初始计算规范来添加或者在有请求来自代理时被添加。

不同计算利用有所变化的输入以及有所区分的输出而实施不同范围的不同的任务,但是相同的集线器设备架构能够被用来管理许多不同计算的元数据。使用集线器设备来为分布式处理系统存储元数据为执行计算的工具的开发人员提供了能够被用于各种新的以及现有的数据处理工具的灵活的元数据管理系统。

这些特征以及附加特征在下文中更为详细地进行描述。

图1是其中集线器设备为分布式处理系统管理元数据的示例环境100的框图。诸如局域网(LAN)、广域网(WAN)、互联网或者它们的组合的计算机网络102将控制器104连接至分布式处理系统106,后者包括集线器设备108、管理器代理112、和工作器代理114。示例网络102还将网络数据存储设备116连接至分布式处理系统106和控制器104。虽然控制器104和网络存储设备116与分布式处理系统106分开描绘,但是其中之一或二者也可以被包括在分布式处理系统106之内。分布式处理系统106还可以包括并未在示例环境100中进行描绘的附加的组件,诸如用于控制该分布式处理系统的管理系统/组件,或者用于管理分布式处理系统106内的工作分配的专用负载平衡器。

控制器104向分布式处理系统106提供规范118。控制器104可以如示例环境100中所描绘的处于分布式处理系统106之外,或者处于分布式处理系统106之内。规范118包括指定要由分布式处理系统106所执行的计算的初始状态的粒子集合。在一些实施方式中,控制器104由第三方提供以该规范,所述第三方例如开发人员或者用来与用户进行接口对接的单独系统。集线器设备108可以以其它方式接收初始规范118,例如可以在指令中提供初始规范118,所述指令被包括在分布式处理系统106上启动的应用中,或者可以从网络存储设备116取得。

集线器设备108在粒子层级中存储用于计算的元数据并且支持粒子随时间的更新。集线器设备108例如可以在服务器计算机上实施,并且可以包括用于存储特定计算的元数据的本地或联网存储110。在一些实施方式中,网络存储设备116可以被集线器设备108单独或结合存储110所使用。集线器设备108与共同执行计算的管理器代理112和工作器代理114进行通信。集线器设备108、存储110、管理器代理112、和工作器代理114之间的通信例如可以是直接通信、网络内部通信、和/或跨网络102的通信的任意组合。

管理器代理112是分布式处理系统106中对计算的执行进行管理并且与集线器设备108进行交互从而随时间修改计算状态的组件。管理器代理例如包括在需要时启动工作器代理114的启动器代理,以及将工作单元与工作器代理114进行匹配的匹配器代理。在控制器104是分布式处理系统106的一部分的实施方式中,控制器104可以被认为是管理器代理。

工作器代理114是分布式处理系统106中执行部分计算的组件。工作器代理114还与集线器设备108进行交互以随时间修改计算状态。工作器代理可以在分布式计算系统106的一个或多个数据处理器上实施,并且在一些实施方式中能够被用来执行管理器代理为其所指派的任何任务。例如,工作器代理可以以各种方式来管控流数据或数据批次,诸如对数据排序、重拍记录、移动数据、过滤记录、以及生成输出数据。

代理—管理代理112和工作器代理114—可以由分布式处理系统106中所包括的一个或多个数据处理器来实施。附加的数据处理器可以按照需要被添加和/或从分布式处理系统106被移除。此外,代理可以具有专用数据处理器或数据处理器池以便针对计算执行代理的角色。在一些实施方式中,代理可以与本地存储设备、分布式处理系统中所包括的存储设备、和/或联网存储设备118进行通信。例如,对一批记录执行垃圾邮件过滤处理的工作器代理114可以从联网存储设备读取记录,使用本地存储将记录与垃圾邮件模板进行比较,并且将例如垃圾邮件或非垃圾邮件标记的输出写入到另一个联网存储设备。

示例计算可以是通过启动集线器设备108以及可选地启动启动器代理(例如,管理器代理112之一)来开始,所述集线器设备108和启动器代理将负责基于工作器代理粒子而启动其它代理。这例如可以使用脚本来执行。在一些实施方式中,集线器设备108和所有代理可以在计算开始时被启动,例如通过脚本启动,这避免了对启动器代理的需求,除非工作器代理粒子要随时间而被添加至计算。

计算的初始规范118可以由控制器104提供至集线器设备108。规范118包括表示计算的初始状态的粒子集合。例如,用于对一批数据执行映射和减少功能的计算的控制器可以提供包括表示映射输入和减少输出的数据集粒子、表示映射和减少任务的粒子、以及能够处理该映射和减少任务的工作器—例如被称作映射工作器和减少工作器—的一个或多个工作器代理粒子的规范。集线器设备108以粒子层级对规范118中所包括的粒子进行表示,上述粒子层级在下文更为详细地进行描述。

管理器代理112准备要被工作器代理114所主张的粒子。例如,调度器代理可以决定计算的每个阶段或任务应当何时开始,输入划分器代理可以将输入数据划分为多块,任务整形器代理可以将多块数据分组为要由工作器代理所执行的任务,并且工作器代理管理器则可以向能够添加和/或移除多个工作器从而适应计算需求的集群管理代理或系统提供信号。其它管理器代理112也可以被用来促进计算的执行,并且它们例如能够由开发人员按照执行特定工作的需要而改变。

任务和子任务例如可以由匹配器代理基于工作器主张预订而被指派给工作器代理。以下更为详细描述的预订指定了对粒子层级中的一部分的兴趣。例如,执行排序任务的工作器代理可以具有指示有兴趣接收要被排序的数据的主张预订。匹配器代理能够识别没有所有者的输入数据并且将其指派给工作器代理,例如假设该工作器代理满足输入数据粒子所指定的任何要求。

工作器代理114利用其随时间变化的任务的进度来对集线器设备108进行更新,并且集线器设备108可以以粒子层级向上传播并汇总统计,诸如进度的量度。在任务粒子子树中所表示的每项任务都完成时,集线器设备能够更新任务粒子的状态以指示该任务完结。在一些实施方式中,粒子指定在该粒子可以被主张之前必须被满足的依赖性。例如,排序任务可以依赖于过滤过程,并且用于过滤过程的粒子无法被主张直至排序任务完成。

表示所要处理的新输入(例如,如在用于计算的新的输入源的情况下)或者计算的附加阶段的粒子例如可以由控制器104基于外部事件或者如同在迭代计算中那样作为计算自身的结果随事件被添加至集线器设备108。针对终止的计算而言,控制器104、用于计算的指令或者其它代理可以检测到终止并且开始关闭数据处理系统。例如,计算可以在处于任务粒子子树的根部的粒子状态被集线器设备108标记为完结时完成。诸如对流数据所执行的那些计算的其它计算可能并没有指定的结尾。

如以上所提到的,除了示例环境100中所描绘的配置之外,集线器设备108可以在各种分布式处理系统配置中进行操作。除了以上所描述的示例计算和任务之外,集线器设备108还支持各种计算和任务。

图2是在存储110中存储并且由集线器设备108进行管理的示例粒子层级200的图示。示例粒子层级200通过以树形结构组织粒子来表示计算的状态,上述树形结构具有在根节点201下以子树进行组织的粒子。在一些实施方式中,粒子可以在线路上进行表示,例如在线路协议中,并且如以上所提到的,包括描述计算的一部分的状态的元数据。作为示例,分布式处理系统所执行的排序任务可以被划分为多个子任务以便由多个工作器进行处理,例如一个排序子任务可以用于对以A-M开始的数据记录进行排序,另一个子任务则可以用于对以N-Z开始的记录进行排序,并且第三子任务可以用于对非字母数据记录进行排序。用于排序任务以及每个子任务的元数据被存储在粒子层级之中。

在一些实施方式中,粒子是可以包括特定于该粒子所对应的规范部分的元数据的一般数据对象。每个子任务粒子例如可以指定该子任务的状态,例如准备、活动、或完成;该子任务的所有者,例如执行该子任务的工作器代理的标识符;以及该子任务的进度,例如已经被排序的记录的数目或百分比,或者当前正在被排序的记录的时间戳。任务粒子可以包括针对该任务的类似信息,并且任务的进度例如可以是每个子任务的进度的汇总或平均,或者当前正在被排序的最旧记录的时间戳。

示例粒子层级200包括作为管理器代理子树的根的管理器代理粒子202。管理器代理粒子202包括用于计算的管理器代理的元数据,诸如子树中所包括的管理器代理的数目和类型。示例的管理器代理子树包括三个管理器代理的粒子、启动器粒子204、匹配器粒子206、和任务整形器粒子208。启动器粒子204例如可以包括开始代理过程的启动器代理的元数据,上述代理过程包括创建集线器设备108以及计算所需的其它代理的过程。匹配器粒子206例如可以包括用于匹配器代理的元数据,上述匹配器代理观察准备匹配的粒子并且将该粒子与能够处理它们的可用代理进行匹配。任务整形器粒子208例如可以包括用于任务整形器代理的元数据,上述任务整形器代理可以将表示大型任务或计算阶段的粒子划分为子任务以便由工作器代理进行处理。

示例匹配器粒子250包括用于元数据的若干字段或类别,诸如指示匹配器代理206的名称和路径位置的名称字段以及指示匹配器代理当前为“活动”的状态字段,例如当前在数据处理器上运行并且主动匹配工作器代理和任务。其它示例字段包括所有者字段,其识别粒子的所有者作为运行匹配器过程的数据处理器,以及指示13个任务中的12个已经与工作器代理进行了匹配的统计字段。匹配器代理粒子206中可以包括其它字段,并且启动器粒子204、任务整形器粒子208、和管理器代理粒子202中可以包括相同或不同的字段。

示例粒子层级200中所包括的数据集粒子210是数据集子树的根。数据集粒子210包括描述计算数据的状态的元数据,诸如输入和/或输出数据的结构、类型和位置。示例数据集子树包括输入数据粒子212和输出数据粒子214。输入数据粒子212例如可以包括指示输入数据的存储位置或流传输源、输入数据的格式以及用于计算的输入数据的数量的元数据。输出数据粒子214例如可以包括指示输出数据和/或日志数据的存储位置以及输出数据的格式和计算期间所产生的输出数据数量的元数据。

示例粒子层级200中所包括的工作器代理粒子216是工作器代理子树的根。工作器代理粒子216包括描述执行计算的工作器代理的状态的元数据,诸如工作器代理的类型、工作器代理数目、以及工作器代理可用性。示例工作器代理子树包括描述执行映射功能的工作器代理(例如,映射工作器)的状态的映射器粒子218,以及描述执行减少功能(例如,减少工作器)的工作器代理的状态的减少器粒子。映射器粒子218和减少器粒子220可以包括描述它们相应子树中所包括的工作器的状态的元数据,诸如挂起粒子指派的映射工作器的数目以及当前执行减少功能的工作器的数目。执行映射功能的个体工作器的粒子—例如,m1 222和m2 224—包括个体工作器代理的元数据,当前被指定执行减少功能的工作器的粒子—例如,r1 226和r2 228—同样如此。

如同以上所描述的示例管理器代理粒子250,用于工作器的示例粒子r1 260包括用于元数据的若干字段或类别,诸如指示工作器的名称和路径位置的名称字段,以及指示工作器当前“挂起”的状态字段,例如等待主张减少子任务。其它示例字段包括所有者字段,其将粒子的所有者识别为运行减少工作器过程的数据处理器,指示除非被所有者重新开始否则所有权将会到期的时间的所有者信息字段,以及指示当前被粒子所有者所使用的系统资源的统计字段。减少器工作器粒子r1226中可以包括其它字段,并且匹配器工作器粒子m1 222和m2 224、匹配器粒子218、减少器粒子220、和工作器代理粒子216中可以包括相同或不同的字段。

示例的粒子层级200还包括形成任务子树的根的任务粒子230。任务粒子230包括描述要在计算过程的期间被执行(或正被执行)的任务的状态的元数据,诸如所要执行的任务的整体进度以及任务和子任务的整体数目和类型。示例任务子树包括描述映射任务的状态的映射粒子232以及描述减少任务的状态的减少粒子234。映射粒子232和减少粒子234可以包括描述它们相应的子树中所包括的任务和/或子任务的状态的元数据,诸如任务的进度,其例如作为子任务进度的汇总,以及等待被集线器设备108或匹配器代理指定所有者的子任务粒子的数目。用于个体子任务的粒子—例如,A 236、B 238、C 240和D 242—包括相应子任务的元数据,诸如粒子所有者的身份和子任务进度。

预订粒子244也包括在示例粒子层级200中,并且其形成预订子树的根。预订粒子244包括描述预订状态的元数据,诸如预订的数目和类型。示例预订子树包括均描述预订的状态的预订粒子246。在一些实施方式中,预订粒子并不存储在粒子层级的子树中,而是可以替代地存储在粒子层级的不同部分之中,例如随预订代理存储,或者存储在与粒子层级分立的数据结构中。

如同示例的管理器代理粒子250和示例的减少器工作器粒子260,示例预订粒子270包括用于元数据的若干字段或类别,诸如指示预订的名称和路径位置的名称字段以及指示预订当前为“活动”的状态字段,例如具有预订方。子状态字段可以指定有关粒子状态的附加信息,诸如被用来收窄预订的信息,例如用于数据集粒子的子状态字段可以指定准备中的数据集的大小是未知的直至代理已经确定数据集的大小并且将数据集的子状态更新为处于准备中但具有已知大小,这可以是数据集粒子被另一个工作器代理所主张的条件。预订粒子的示例子状态字段指定了预订的类型,例如用于减少子任务D 242的主张预订。所有者字段将粒子的预订方识别为减少器工作器代理r2 220,并且所有权信息列出了减少子任务的所有权的要求,例如300MB的可用存储器。在下文中更为详细地描述预订时,示例预订粒子270指示减少器工作器r1226已经对减少子任务D 242进行了主张,并且集线器设备108会在某些条件被满足时将该减少子任务的所有权指派给该减少器工作器,诸如对所完成的映射子任务—例如,映射子任务B 238—的依赖性。预订粒子270中可以包括其它字段,并且其它预订粒子中可以包括相同或不同的字段。

如以上所提到的,预订指定了对粒子或粒子子集的兴趣,并且在粒子层级中具有相对应的附接点和深度。虽然存在各种类型的预订,但是每种预订指定要由集线器设备所执行的一个或多个动作。例如,观察预订可以被用来随时间监视计算的状态并且在条件被满足时使得代理得到有关一个或多个粒子的新的或当前状态的通知。示例观察预订可以被启动器代理所预订以随时间观察工作器代理粒子(例如工作器代理粒子216)的插入和变化。当新的工作器代理粒子被插入时,集线器设备将由于该观察预订而通知启动器代理。

另一种示例预订是主张预订,其表达对拥有粒子层级的某个部分中的粒子的兴趣并且在可用粒子被匹配至进行预订的代理时形成主张通知,上述代理受到代理的能力和粒子所有权的约束。该主张通知向进行预订的代理通知其已经基于该主张预订而成为粒子的所有者。在一些实施方式中,代理能够明确插入粒子并且将其自身命名为所有者而并不使用主张预订。

查询预订被用来查找一个或多个粒子的当前状态,如对集线器设备的直接查询。例如,当接收到针对任务粒子的主张通知时,工作器可能使用查询预订来查找数据集粒子中被该任务粒子识别为输入的附加信息。另一种示例预订是批准预订,其提供了防止发生某些变化的机会。例如,安全管理器可以防止具有敏感日志作为输入并且其输出位置违反安全法规的任务被插入,或者备份管理器可以防止备份工作器在主要任务已经完成的情况下重新开始任务粒子的所有权。其它类型的预订也可以被存储在该粒子层级中,包括针对特定计算所开发的定制预订。在一些实施方式中,某些类型的预订在粒子层级中可能并非是持久的,例如查询预订可以被一次性地用来查询集线器并且随后就被遗忘。在一些实施方式中,某些类型的预订在粒子层级中是持久的,例如,使得通知作为计算的元数据而定期被提供给代理的批准预订就随时间而有所变化。

在一些实施方式中,预订可以被局限于某些类型的粒子,或者具有某些属性的粒子。例如,观察预订可以指定其仅有兴趣针对特定状态的粒子从集线器设备接收通知。另一种示例预订可以指定其仅想要查询指示相对应任务完成超过90%的任务和子任务粒子。也可以使用其它限制或限制的组合,诸如主张预订针对匹配特定输入类型并且小于特定大小的输入数据。

粒子层级的结构可以取决于特定计算的规范和要求。其它粒子层级可以包括与示例粒子层级200中所描绘的那些更多或更少的粒子和子树。例如,粒子层级可以具有多个工作器代理子树,并且管理器代理可以直接作为与管理器代理粒子相反的根节点的后代。在一些实施方式中,预订可以与粒子层级分立地存储,例如存储在集线器设备的本地存储中的不同数据结构和/或位置中。例如,如果计算调用多个任务整形器代理,则任务整形器粒子208可以是用于个体任务整形器的子树的根,并且预订246可以根据预订类型而被组织为子树,例如每种类型一个子树。

每个粒子中所包括的元数据也可能与示例层级200的示例粒子中所包括的元数据相比有所变化。例如,粒子的名称可以是集线器设备所指派的唯一标识符,或者是唯一标识符和路径的组合。粒子状态可以根据该粒子所对应的计算部分而变化。例如,任务粒子与数据集粒子相比可以具有不同选项来描述其状态。粒子状态可以包括诸如以下任意的状态代码:指示粒子还没有或不再处于集线器中的“缺失(absent)”,指示粒子不完整且仍然在准备的“准备(prep)”,指示粒子等等被调度的“挂起(pending)”,指示粒子由于依赖性无法前行的“阻塞(blocked)”,指示粒子能够由匹配器代理给予所有者的“准备好(ready)”,指示粒子能够由集线器设备给予所有者的“可指派(assignable)”,指示粒子具有所有者的“活动的(active)”,指示粒子的处理已经完成的“完成(done)”,指示粒子的处理不成功终止的“失败(failed)”,以及指示粒子形成不正确并且无法被正常处理的“破坏(broken)”。

另一个示例粒子字段包括所有权信息,其可以描述对于代理为了拥有粒子所必须提供的功能属性和资源的限制、在粒子能够被拥有之前所必须被满足的对其它粒子的依赖性、以及除非租约被重新开始否则对粒子的所有权将会到期的时间。其它粒子字段包括指定了集线器的针对粒子的最近更新的逻辑时间戳、状态细节、粒子层级向上完成传播的指示、以及可能被粒子的非所有者进行修改的线索。

贯穿计算,粒子层级可以有所变化。例如,粒子和子树可以由控制器代理插入或移除,并且粒子内的元数据随着计算状态的变化而变化。例如,并未结束的计算—诸如对流输入数据的计算—可以具有活动的数据集粒子和子树,随着新数据的粒子被添加,对其处理已经完成的数据的粒子被不断移除。集线器还可以使得控制器代理结束对计算的处理,例如通过向控制器代理发送任务子树的根已经被集线器标记为完成的通知。

图3是通过其为分布式处理系统管理元数据的示例过程300的流程图。过程300可以由诸如以上所描述的集线器设备的数据处理装置来执行。

在集线器设备处接收包括指定要由分布式处理系统所执行的计算的初始状态的粒子集合的计算规范(302)。该分布式处理系统包括多个数据处理器,并且该粒子集合中所包括的每个粒子包括指定计算的状态的一部分的元数据。例如,用于对输入数据的集合执行过滤和排序过程的计算的控制器代理可以向集线器设备提供规范。该规范可以包括用于过滤任务和排序任务的粒子,以及用于要执行过滤任务的工作器的粒子。作为示例,如果排序过程依赖于过滤过程,则该规范中所包括的粒子可以不包括用于执行排序过程的工作器的粒子,因为它们在计算的初始阶段并不被需要。

由该集线器设备基于与粒子集合中所包括的每个粒子相关联的粒子类型而存储表示计算的状态的粒子层级(304)。该粒子层级可以包括针对该粒子层级的零个或更多预订的预订粒子,每个预订与该粒子层级中所包括的零个或更多粒子相对应,并且每个预订指定要由集线器设备所执行的一个或多个动作,例如观察和/或主张。

在一些实施方式中,预订之一是观察预订,其指令集线器设备向该观察预订的预订方通知该观察预订所对应的该粒子层级中的一个或多个粒子所指定的状态部分的指定变化。例如,启动器代理可以对用于过滤任务的任务粒子而具有观察预订,集线器设备可以关于针对过滤任务的更新而向启动器代理进行通知,并且启动器代理可以使用该信息而针对取决于该过滤任务的后续排序任务而启动工作器。

在一些实施方式中,一个或多个预订之一是查询预订,其指示集线器设备响应于接收到查询预订而向查询预订的预订方提供与该查询预订所对应的该粒子层级中的一个或多个粒子所指定的状态部分相关联的具体信息。例如,在用户要求时报告任务的完成状态的管理器代理可以针对特定任务的进度而向集线器设备发出查询。

在一些实施方式中,一个或多个预订之一是主张预订,其指示集线器设备指派该主张预订所对应的该粒子层级中的一个或多个粒子中所包括的粒子的所有权。例如,工作器代理可以针对特定任务或子任务而向集线器设备发出主张预订,并且集线器设备会将任务粒子的所有权指派给该工作器代理。

在一些实施方式中,该粒子层级包括一个或多个管理器代理粒子,所述一个或多个管理器代理粒子指定用于管理分布式处理系统的计算执行的一个或多个管理器代理过程的元数据。例如,正在执行管理要由分布式处理系统所执行的计算的过程的数据处理器具有其自己的元数据以及该元数据存储于其中的其自己的粒子层级部分。负载平衡代理的元数据例如可以包括指示分布式处理系统中的每个工作器代理的进度的数据。在一些实施方式中,管理器代理中的一个或多个包括:观察工作器代理粒子子树并且启动过程的启动器代理过程;将要由分布式处理系统处理的数据匹配至工作器代理中的一个或多个的匹配器代理过程;或者管理任务粒子子树的任务整形器代理过程。

该粒子层级还可以包括一个或多个数据集粒子,所述一个或多个数据集粒子包括能够由该分布式处理系统所访问的数据的元数据。这例如可以包括用于输入数据、输出数据和日志数据的粒子,其可以包括诸如日志数据的位置、输出数据的数量以及输入数据的类型的元数据。

该粒子层级还可以包括一个或多个任务粒子,所述一个或多个任务粒子包括要由该分布式处理系统所执行的一个或多个任务的元数据。例如,涉及到排序过程和过滤过程的计算可以具有每个过程的任务粒子。在一些实施方式中,每个任务粒子是作为该任务的一部分的子任务的子树的根。例如,过滤任务可以包括用于过滤不同类型的输入数据的子任务。

该粒子层级还可以包括一个或多个工作器代理粒子,所述一个或多个工作器代理粒子针对至少一个任务而包括均与用于执行该任务的数据处理器的子集相对应的一个或多个工作代理的元数据。使用涉及到排序和过滤任务的示例计算,工作器代理粒子子树可以包括用于过滤工作器代理的一个粒子,其可以形成包括用于执行过滤过程的数据处理器的粒子的子树的根,以及用于排序工作器代理的另一个粒子,其可以形成包括用于执行排序过程的数据处理器的粒子的子树的根。

在一些实施方式中,该计算规范指定了针对粒子层级的一个或多个预订中的每一个的预订代理。例如,观察特定任务粒子的启动器代理可以被指定为观察预订的预订方,其可以使得集线器设备代表启动器代理自身而观察任务粒子。在一些实施方式中,每个预订代理是i)具有管理器代理子树中所包括的相对应粒子的管理器代理,或者ii)具有工作器代理子树中所包括的相对应粒子的工作器代理。在该实施方式中,预订仅由工作器代理或管理器代理所预订。

在一些实施方式中,接收用于计算的附加粒子(306)。例如,附加工作器代理可以被添加启动器代理或负载平衡器代理。附加粒子可以以多种方式被插入,例如基于计算指令、管理器代理插入、用户输入、以及要处理的附加数据的到来。

在一些实施方式中,附加粒子被存储在用于计算的粒子层级中(308)。如以上所提到的,粒子可以以多种方式被引入计算,并且所接收到的粒子可以由集线器设备在接收到该粒子时添加至粒子层级。

在一些实施方式中,通过监视计算执行期间该粒子层级中所包括的一个或多个粒子的一个或多个变化而对计算状态进行监视(310)。虽然该规范描述了计算的初始状态,但是随着计算进行,粒子层级的粒子中所包括的数据可以由执行计算的代理来更新,并且这些变化导致计算状态的变化。针对粒子层级的修改可以在计算期间被报告给集线器设备和/或由其所观察,并且该集线器设备可以随着计算进度而汇总、追踪、和管理元数据。例如,该集线器设备可以针对当前被执行的任务的任务粒子定期汇总统计字段以追踪任务进度。例如,使用由执行过滤任务的各个过滤器代理所报告的进度信息,该集线器设备可以将整体过滤器任务进度从完成了50%更新为75%,其反映出计算状态的变化。

在一些实施方式中,监视变化包括接收并处理针对粒子层级中的粒子的更新。例如,该集线器设备可以接收有关现有粒子的更新信息并且将该信息与粒子层级中的现有粒子进行融合。此外,在一些实施方式中,集线器设备可以接收现有粒子的新版本并且利用该新版本替换现有粒子。

在计算的执行期间,该集线器设备执行所述预订针对粒子层级所指定的动作中的至少一个动作(312)。在一些实施方式中,该一个或多个动作包括:为预订代理提供在观察预订所对应的一个或多个粒子中发生了预先指定的事件的通知;向预订代理指派主张预订所对应的一个或多个粒子的所有权;更新一个或多个粒子的当前状态;或者为预订代理提供查询预订所对应的一个或多个粒子中包括的特定元数据。例如,匹配器代理可以是使得集线器设备观察过滤任务并且在过滤任务完成时通知匹配器代理的观察预订的预订方。该观察预订所指定的动作是向预订方进行的通知。作为另一个示例,主张预订可以使得集线器设备采取将一个粒子的所有权指派给另一个粒子的动作,如同排序工作器代理具有针对排序任务的主张预订的情形。

图4是示例数据处理装置的框图。系统400包括处理器410、存储器420、存储设备430、和输入/输出设备440。组件410、420、430、和440中的每一个例如能够使用系统总线450进行互连。处理器410能够对用于在系统400内执行的指令进行处理。在一种实施方式中,处理器410是单线程处理器。在另一种实施方式中,处理器410是多线程处理器。处理器410能够对存储在存储器420中或者存储设备430上的指令进行处理。

存储器420存储系统400内的信息。在一种实施方式中,存储器420是计算机可读介质。在一种实施方式中,存储器420是易失性存储器单元。在另一种实施方式中,存储器420是非易失性存储器单元。

存储设备430能够为系统400提供大容量存储。在一种实施方式中,存储设备430是计算机可读介质。在各种不同实施方式中,存储设备430例如可以包括硬盘设备、光盘设备,或者一些其它大容量存储设备。

输入/输出设备440为系统400提供输入/输出操作。在一种实施方式中,输入/输出设备440可以包括一个或多个网络接口设备,例如以太网卡、例如RS-232端口的串行通信设备、和/或例如802.11卡的无线接口设备。在另一种实施方式中,输入/输出设备可以包括被配置为接收输入数据并且向例如键盘、打印机和显示设备460的其它输入/输出设备发送输出数据的驱动器设备。然而,也能够使用其它实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。

该说明书中所描述的主题和操作能够以数字电子电路来实施,或者以计算机软件、固件、或硬件来实施,包括该说明书中所公开的结构及其结构等同物,或者以它们中一个或多个的组合来实施。该说明书中所描述主题的实施例能够被实施为一个或多个计算机程序,即在计算机存储介质上进行编码以便由数据处理装置执行或者控制其操作的计算机程序指令的一个或多个模块。

计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或者它们中一个或多个的组合,或者包括于其中。此外,虽然计算机存储介质并非是传播信号,但是计算机存储介质可以是人工生成的传播信号中所编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个分立的物理组件或媒体(例如,多个CD、盘、或其它存储设备),或者包括于其中。

该说明书中所描述的操作能够被实施为由数据处理装置对一个或多个计算机可读存储设备上所存储或者从其它源所接收的数据所执行的操作。

术语“数据处理装置”包含用于处理数据的所有类型的装置、设备、和机器,例如包括可编程处理器、计算机、片上系统、或者以上的多个或组合。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(特定于应用的集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时间环境、虚拟机、或者它们中的一个或多个的组合的代码。该装置和执行环境能能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。

计算机程序(也被称作程序、软件、软件应用、脚本、或代码)能够以任意形式的编程语言进行编写,包括编译或解释语言、声明或过程语言,并且其可以以任意形式被采用,包括作为独立程序或者作为适于在计算环境中使用的模块、组件、子例程、对象、或其它单元。计算机程序可以对应于文件系统中的文件,但是并非需要如此。程序可以存储在保存其它程序或数据(例如,标记语言文档中所存储的一个或多个脚本)的文件的一部分之中,存储在专用于所讨论程序的单个文件中,或者存储在多个协同文件(例如,存储一个或多个模块、子程序、或代码部分的文件)中。计算机程序能够被部署为在一台计算机上执行或者在位于一个地点或跨多个地点分布并且通过通信网络进行互连的多台计算机上执行。

该说明书中所描述的处理和逻辑流能够由一个或多个可编程处理器来执行,后者执行一个或多个计算机程序以通过对输入数据进行操作并生成输出而执行动作。处理和逻辑流能够由例如FPGA(现场可编程门阵列)或ASIC(特定于应用的集成电路)的专用逻辑电路所执行,并且装置也可以被实施为该装用逻辑电路。

适于执行计算机程序指令的处理器包括通用和专用微处理器二者,以及任意类型的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机访问存储器或者其二者接收指令和数据。计算机的必要元件为用于依据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁性光盘或光盘,或者操作耦合以往来于它们接收或传送数据或者其二者。然而,计算机并非需要具有这样的设备。此外,计算机可以嵌入另一设备之中,仅给出几个示例,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器,或者便携式存储设备(例如,通用串行总线(USB)闪存)。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、媒体和存储器设备,例如包括例如EPROM、EEPROM和闪存设备的半导体存储器设备;例如内部硬盘或可移动盘的磁盘;磁性光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以被补充以专用逻辑电路或者结合于其中。

为了提供与用户的交互,本说明书中所描述的主题的实施方式能够在具有用于向用户显示信息的显示设备以及用户能够通过其向计算机提供输入的键盘和指示设备的计算机上实施,该显示设备例如CRT(阴极射线管)或LCD(液晶显示器)监视器,该指示设备例如鼠标或轨迹球。也能够使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以为任意形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入能够以任意形式被接收,包括声音、语音或触觉输入。此外,计算机能够通过向用户所使用的设备发送文档并且从其接收文档而与用户进行交互;例如,通过响应于从web浏览器所接收的请求而向用户的客户端设备上的web浏览器发送网页。

本说明书中所描述主题的实施例能够在计算系统中实施,该计算系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如客户端计算机的前端组件,或者一个或多个这样的后端、中间件或前端组件的任意组合,所述客户端计算机具有用户能够通过其与本说明书中所描述主题的实施方式进行交互的图形用户界面或web浏览器。该系统的组件能够通过例如通信网络的任意形式或介质的数字数据通信进行互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联的网络(例如,互联网)以及对等网络(例如,自组织对等网络)。

计算系统可以包括用户和服务器。用户和服务器通常彼此远离并且通常通过通信网络进行交互。用户和服务器的关系源自于在相应计算机上运行并且互相具有用户-服务器关系的计算机程序。在一些实施例中,服务器向用户设备传送数据(例如,HTML页面)(例如,出于向与用户设备进行交互的用户显示数据并且从其接收用户输入的目的)。能够在服务器处从用户设备接收在用户设备所生成的数据(例如,用户交互的结果)。

虽然该说明书包含许多特定实施细节,但是这些并不应当被理解为对任何发明以及所要求保护的内容的范围进行限制,而是作为特定于特定发明的特定实施例的特征的描述。该说明书中以单独实施例为背景进行描述的某些特征也能够在单个实施例中以组合形式来实施。相反,以单个实施例为背景进行描述的各种特征也能够单独或以任意适当子组合在多个实施例中实施。此外,虽然特征在上文中可以被描述为以某种组合进行工作并且甚至最初要求如此,但是来自所要求组合的一个或多个特征在一些情况下可以脱离该组合,并且所要求的组合可以针对子组合或子组合的变化。

类似地,虽然操作在图中以特定顺序进行描绘,但是这并不应当被理解为要求这样的操作以所示出的特定顺序或以连续顺序来执行,或者所有所图示的操作都要被执行以实现所期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,以上所描述实施例中的各种系统组件的分立并不应当被理解为在所有实施例中都要求这样的分立,并且应当理解的是,所描述的程序组件和系统通常在单个软件产品中集成在一起或者被封装到多个软件产品中。

因此,已经对该主题的特定实施例进行了描述。其它实施例处于以下权利要求的范围之内。在一些情况下,权利要求中所引用的动作可以以不同顺序来执行并且仍然实现所期望的结果。此外,服务中所描绘的处理并非必然要求所示出的特定顺序或连续顺序以实现所期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。

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