《流式数据系统中的处理单元管理.pdf》由会员分享,可在线阅读,更多相关《流式数据系统中的处理单元管理.pdf(23页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104094232A43申请公布日20141008CN104094232A21申请号201380007312922申请日2013011013/361,28720120130USG06F9/5020060171申请人国际商业机器公司地址美国纽约阿芒克72发明人J桑托苏索B舒尔兹RK克拉迪克M布兰森74专利代理机构北京市柳沈律师事务所11105代理人胡琪54发明名称流式数据系统中的处理单元管理57摘要流应用可能低效地使用执行数据流的处理单元的硬件资源。例如,计算节点可以托管四个处理单元,并且使用CPU来执行每一个。然而,在该计算节点上的其他CPU可能保持空闲。为了利用这些可用的硬。
2、件资源,流编程人员可以识别可以被克隆的一个或多个处理单元。该克隆的处理单元可以用于产生与包括原始处理单元的执行路径并行的不同执行路径。因为克隆的处理单元与原始处理单元包含相同的操作子,所以先前仅流经原始处理单元的数据流可以被分离并通过原始和克隆的处理单元来发送。以这种方式,并行执行路径可以使用未充分利用的硬件资源来增大数据流的吞吐量。30优先权数据85PCT国际申请进入国家阶段日2014073086PCT国际申请的申请数据PCT/IB2013/0502282013011087PCT国际申请的公布数据WO2013/114228EN2013080851INTCL权利要求书3页说明书11页附图8页1。
3、9中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书11页附图8页10申请公布号CN104094232ACN104094232A1/3页21一种方法,包括接收将被包括一个或多个操作子的多个处理单元处理的流式数据,所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分;建立多个操作子的操作子图,所述操作子图定义至少一个执行路径,在该执行路径中,所述多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组;相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源;克隆所述多个处理单元的第一处理单元,使得克隆的。
4、处理单元与所述第一处理单元包括相同的一个或多个操作子;以及在包括克隆的处理单元的第一执行路径中处理所接收的流式数据的至少一部分,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行,其中克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。2根据权利要求1所述的方法,进一步包括在所述操作子图中所述克隆的和第一处理单元的上游启动第二处理单元,该第二处理单元包括分离操作子,该分离操作子向所述克隆的和第一处理单元两者中的操作子发送数据元组;以及在所述操作子图中所述克隆的和第一处理单元的下游启动第三处理单元,该第三处理单元包括合并操作子,该合并操作子合并从在所述克隆的和。
5、第一处理单元两者中的操作子接收的数据元组。3根据权利要求2所述的方法,进一步包括在所述多个处理单元正在处理所接收的流式数据时,向所述操作子图插入所述克隆的、第二和第三处理单元。4根据权利要求1所述的方法,其中,所述未充分利用的硬件资源是CPU和内存的一部分中的至少一个。5根据权利要求4所述的方法,其中,所述未充分利用的硬件资源是当前未执行所述多个处理单元之一的操作子之一的CPU。6根据权利要求1所述的方法,进一步包括克隆所述多个处理单元的第二处理单元以产生与所述第二处理单元包括相同的一个或多个操作子的第二克隆的处理单元,其中所述第二处理单元直接连接到所述第二执行路径中的所述第一处理单元;以及在。
6、包括所述第二克隆的处理单元的所述第一执行路径中处理所接收的流式数据,其中,所述第二克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。7根据权利要求1所述的方法,进一步包括确定所述第一处理单元是否是可克隆的,其中可克隆的处理单元能够以与接收数据元组的顺序不同的顺序来处理所接收的数据元组。8一种计算机程序产品,包括计算机可读存储介质,其具有用来具体化的计算机可读程序代码,所述计算机可读程序代码包括被配置为执行下述处理的计算机可读程序代码接收将被包括一个或多个操作子的多个处理单元处理的流式数据,所述操作子处理所接收的数据的至少一部分;权利要求书CN104094232A2/3页3建立多。
7、个操作子的操作子图,所述操作子图定义至少一个执行路径,在该执行路径中,所述多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组;相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源;克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子;以及在包括克隆的处理单元的第一执行路径中处理所接收的流式数据的至少一部分,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行,其中克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。9根据权利要求8所述的计算机程序产。
8、品,进一步包括被配置为执行下述处理的计算机可读程序代码在所述操作子图中所述克隆的和第一处理单元的上游启动第二处理单元,该第二处理单元包括分离操作子,该分离操作子向所述克隆的和第一处理单元两者中的操作子发送数据元组;以及在所述操作子图中所述克隆的和第一处理单元的下游启动第三处理单元,该第三处理单元包括合并操作子,该合并操作子合并从在所述克隆的和第一处理单元两者中的操作子接收的数据元组。10根据权利要求9所述的计算机程序产品,进一步包括被配置为在所述多个处理单元正在处理所接收的流式数据时,向所述操作子图插入所述克隆的、第二和第三处理单元的计算机可读程序代码。11根据权利要求8所述的计算机程序产品,。
9、其中,所述未充分利用的硬件资源是CPU和内存的一部分中的至少一个。12根据权利要求11所述的计算机程序产品,其中,所述未充分利用的硬件资源是当前未执行所述多个处理单元之一的操作子之一的CPU。13根据权利要求8所述的计算机程序产品,进一步包括被配置为执行下述处理的计算机可读程序代码克隆所述多个处理单元的第二处理单元以产生与所述第二处理单元包括相同的一个或多个操作子的第二克隆的处理单元,其中所述第二处理单元直接连接到所述第二执行路径中的所述第一处理单元;以及在包括所述第二克隆的处理单元的所述第一执行路径中处理所接收的流式数据,其中,所述第二克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的。
10、流式数据。14根据权利要求8所述的计算机程序产品,进一步包括被配置为执行下述处理的计算机可读程序代码确定所述第一处理单元是否是可克隆的,其中可克隆的处理单元能够以与接收数据元组的顺序不同的顺序来处理所接收的数据元组。15一种系统,包括计算机处理器;以及内存,其包含程序,所述程序当在所述计算机处理器上执行时执行用于处理数据的操作,所述操作包括接收将被包括一个或多个操作子的多个处理单元处理的流式数据,所述操作子通过一权利要求书CN104094232A3/3页4个或多个计算机处理器的操作来处理所接收的数据的至少一部分;建立多个操作子的操作子图,所述操作子图定义至少一个执行路径,在该执行路径中,所述多。
11、个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组;相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源;克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子;以及在包括克隆的处理单元的第一执行路径中处理所接收的流式数据的至少一部分,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行,其中克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。16根据权利要求15所述的系统,进一步包括在所述操作子图中所述克隆的和第一处理单元的上游启动第二处理单元,该第。
12、二处理单元包括分离操作子,该分离操作子向所述克隆的和第一处理单元两者中的操作子发送数据元组;以及在所述操作子图中所述克隆的和第一处理单元的下游启动第三处理单元,该第三处理单元包括合并操作子,该合并操作子合并从在所述克隆的和第一处理单元两者中的操作子接收的数据元组。17根据权利要求16所述的系统,进一步包括在所述多个处理单元正在处理所接收的流式数据时,向所述操作子图插入所述克隆的、第二和第三处理单元。18根据权利要求15所述的系统,其中,所述未充分利用的硬件资源是CPU和内存的一部分中的至少一个。19根据权利要求18所述的系统,其中,所述未充分利用的硬件资源是当前未执行所述多个处理单元之一的操作。
13、子之一的CPU。20根据权利要求15所述的系统,进一步包括克隆所述多个处理单元的第二处理单元以产生与所述第二处理单元包括相同的一个或多个操作子的第二克隆的处理单元,其中所述第二处理单元直接连接到所述第二执行路径中的所述第一处理单元;以及在包括所述第二克隆的处理单元的所述第一执行路径中处理所接收的流式数据,其中,所述第二克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。权利要求书CN104094232A1/11页5流式数据系统中的处理单元管理技术领域0001本发明的实施例总体上涉及流计算应用。具体地说,所公开的实施例公开了分布处理单元或操作子OPERATOR以在流计算环境中未充分。
14、利用的硬件资源。背景技术0002随着计算机数据库已经变得极为复杂,对于数据库系统设置的计算要求也已经以快速的步调增加。数据库系统通常被配置为将存储数据的处理与访问、操纵或使用在数据库中存储的数据的操作分离。更具体地,数据库使用下述模型其中,数据首先被存储,然后被添加索引并且最后被查询。然而,该模型不能满足一些实时应用的性能要求。例如,数据库系统可以接收和存储进入数据的速率限制了可以处理或以其他方式评估多少数据。这继而可以限制数据库应用实时地处理大量数据的能力。发明内容0003本发明的实施例提供了一种用于处理数据的方法、系统和计算机程序产品。所述方法、系统和计算机程序接收将由包括一个或多个操作子。
15、的多个处理单元处理的流式数据。所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分。所述方法、系统和计算机程序建立多个操作子的操作子图。所述操作子图定义至少一个执行路径,在该执行路径中,多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组。所述方法、系统和计算机程序相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源。所述方法、系统和计算机程序克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子。所述方法、系统和计算机程序在包括克隆的处理单元的第一执行路径中处理所。
16、接收的流式数据,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行。此外,克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。0004在另一个实施例中,一种接收将被包括一个或多个操作子的多个处理单元处理的流式数据的方法。所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分。所述方法建立多个操作子的操作子图。所述操作子图定义至少一个执行路径,在该执行路径中,多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组。所述方法相对于预定义的标准识别在执行所述操作子的计算系统中的未充分利用的硬件资源。所述方法也从。
17、多个处理单元的第一处理单元去熔合第一操作子,所述第一处理单元包括多个操作子。所述方法将所述第一操作子熔合到所述多个处理单元的第二处理单元内。在熔合所述第一操作子后,所述方法使用第一操作子处理所接收的流式数据的至少一部分,其中,所述第一操作子使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。说明书CN104094232A2/11页6附图说明0005为了获得并可以详细理解上述方面,可以通过参考附图来提供上面简短汇总的本发明的实施例的更具体的说明。0006然而,应当注意,附图仅图示了本发明的典型实施例,并且因此不被认为限制其范围,因为本发明可以允许其他等价有效的实施例。0007图1A1B。
18、图示了根据本发明的实施例的、被配置为执行流计算应用的计算基础架构。0008图2是根据本发明的一个实施例的图1A1B的计算节点的更详细视图。0009图3是根据本发明的一个实施例的图1A1B的服务器管理系统的更详细视图。0010图4是图示根据本发明的一个实施例的、用于在操作子图中克隆处理单元的技术的流程图。0011图5A5C图示了根据本发明的实施例的、克隆处理单元以建立并行执行路径。0012图6A6B图示了根据本发明的实施例的、向一个或多个计算节点上的CPU分发克隆处理单元。0013图7A7B图示了根据本发明的实施例的、克隆在单个执行路径中的多个处理单元以产生一个或多个并行执行路径。0014图8A。
19、8D图示了根据本发明的实施例的、去熔合UNFUSE和向多个CPU上分发处理单元的操作子。0015为了有利于理解,在可能时,已经使用相同的附图标号来指定对于附图公共的相同元件。考虑在一个实施例中公开的元件可以有益地用在其他实施例上,而不再复述。具体实施方式0016基于流的计算和基于流的数据库计算正在作为用于数据库系统的开发中的技术而出现。可获得允许用户建立应用的产品,该应用在流式数据到达数据库文件之前处理和查询该流式数据。使用该正在出现的技术,用户可以指定处理逻辑以在入站INBOUND数据记录“在飞行INFLIGHT”时应用到该入站数据记录,并且在经常以毫秒计的极短的时间量中可获得结果。使用该类。
20、型的处理构造应用已经开辟了新的编程范例,其将考虑大量创新的应用、系统和处理被开发,并且对于应用编程人员和数据库开发者呈现了新的挑战。0017在流计算应用中,操作子彼此连接,使得数据从一个操作子向下一个例如,通过TCP/IP套接字流动。通过下述方式来达到可伸缩性通过建立可执行体EXECUTABLE即,处理单元来在节点上分布应用,并且在多个节点上复制处理单元,并且在它们之间执行负载平衡。流计算应用中的操作子可以被熔合在一起,以形成可执行的处理单元。这样做允许处理单元共享公共的处理空间,导致比使用处理之间通信技术例如,使用TCP/IP套接字可获得的快得多的操作子之间的通信。此外,处理单元可以动态地插。
21、入表示数据流经流计算应用的操作子图中或从中移除。0018而且,流应用可能低效地使用执行数据流的处理单元的硬件资源。例如,计算节点可以托管HOST四个处理单元,并且使用CPU来执行每一个。然而,在该计算节点上的其他CPU可能保持空闲。为了利用这些可用的硬件资源,流编程人员或开发者可以识别可以被克隆的一个或多个处理单元。该克隆的处理单元可以用于产生与包括原始处理单元的执说明书CN104094232A3/11页7行路径并行的不同执行路径。因为克隆的处理单元与原始处理单元包含相同的操作子,所以先前仅流经原始处理单元的数据流可以被分离并通过原始和克隆的处理单元来发送。以这种方式,该并行执行路径可以使用未。
22、充分利用的硬件资源来增大数据流的吞吐量。0019在另一个实施例中,处理单元的操作子可以被分布以利用可用的计算机硬件。例如,在检测到空闲CPU后,流式应用可以将处理单元中的操作子分离,并且将它们置于多个处理单元中,其中,向空闲的CPU分配了所述处理单元的一个或多个。0020下面,参考本发明的实施例。然而,应当明白,本发明不限于特定的所述实施例。相反,考虑下面的特征和元素的任何组合不论是否与不同的实施例相关来实现和实施本发明。而且,虽然本发明的实施例可以相对于其他可能的解决方案和/或相对于现有技术实现优点,但是是否通过给定的实施例来实现特定的优点不是本发明的限制。因此,下面的方面、特征、实施例和优。
23、点仅是说明性的,并且不是所附的权利要求的所考虑的元素或限制,除非在权利要求中明确地说明。同样,参考“本发明”不应当被解释为在此公开的任何发明主题的一般化,并且不应当被认为是所附的权利要求的元素或限制,除非在权利要求中明确地说明。0021所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即完全的硬件实施方式、完全的软件实施方式包括固件、驻留软件、微代码等,或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序。
24、产品的形式,该计算机可读介质中包含计算机可读的程序代码。0022可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、设备或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子非穷举的列表包括具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器RAM、只读存储器ROM、可擦式可编程只读存储器EPROM或闪存、光纤、便携式紧凑盘只读存储器CDROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程。
25、序的有形介质,该程序可以被指令执行系统、设备或者器件使用或者与其结合使用。0023计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、设备或者器件使用或者与其结合使用的程序。0024计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。0025可以以一种或多种程序。
26、设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如JAVA、SMALLTALK、C等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、说明书CN104094232A4/11页8部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网LAN或广域网WAN连接到用户计算机,或者,可以连接到外部计算机例如利用因特网服务供应商来通过因特网连接。0026。
27、下面将参照根据本发明实施例的方法、设备系统和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理设备的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的设备。0027也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理设备、或其他装置以特定方式工作,从而,存储在计算机可读介质中的指令就。
28、产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品ARTICLEOFMANUFACTURE。0028也可以把这些计算机程序指令加载到计算机、其他可编程数据处理装置或其他设备上,以使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在该计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个方框中指定的功能/行为的处理。0029本发明的实施例可以通过云计算基础架构被提供到终端用户。云计算通常指的是经由网络来提供可伸缩计算资源作为服务。更正式地,云计算可以被定义为计算能力,该计算能力提供在计算资源和其底层技术架。
29、构例如,服务器、存储器、网络之间的抽取,以使能对于可配置的计算资源的共享池的方便的、根据需要的网络访问,该可配置的计算资源的共享池可以以最小的管理精力或服务供应商交互被迅速地提供和释放。因此,云计算允许用户访问在“云”中的虚拟计算资源例如,存储器、数据、应用和甚至完整的虚拟化计算系统,而不考虑用于提供该计算资源的底层物理系统或那些系统的位置。0030通常,在每次使用付费的基础上向用户提供云计算资源,其中,仅对于实际使用的计算资源例如,由用户使用的存储空间的量或由用户例示的多个虚拟化系统向用户收费。用户可以在任何时间并且从因特网上的任何位置访问在该云中驻留的任何资源。在本发明的上下文中,用户可以。
30、访问在云中可获得的应用或相关数据。例如,用于建立流计算应用的节点可以是由云服务供应商托管的虚拟机。这样,允许用户从附接到与云连接的网络例如,因特网的任何计算系统访问该信息。0031图1A1B图示了根据本发明的一个实施例的、被配置为执行流计算应用的计算基础架构。如所示的,计算基础架构100包括管理系统105和多个计算节点13014即,主机它们使用一个或多个通信设备120通信地彼此耦接。通信设备120可以是服务器、网络或数据库,并且可以使用特定的通信协议在计算节点13014之间传送数据。虽然未示出,但是计算节点13014可以具有内部通信设备,用于在位于同一计算节点130上的处理单元PE之间传送数据。
31、。0032管理系统105包括操作子图132和流管理器134。如下面更详细描述的,操作子图132表示从一个或多个源操作子开始直到一个或多个信宿SINK操作子的流应用。该说明书CN104094232A5/11页9从源至信宿的流在此通常也被称为执行路径。虽然图1B抽取地示出连接的PE,但是操作子图132可以包括在相同PE或不同PE内的操作子之间的数据流。通常,处理单元从流接收N元组的数据属性,并且将N元组的数据属性发送到流中除了其中流终止的信宿操作子或其中流开始的源操作子之外。0033当然,由处理单元接收的N元组不必是向下游发送的相同的N元组。另外,PE可以被配置为以其他格式来接收或发送元组例如,P。
32、E或操作子可以交换被标记为XML文档的数据。而且,在PE内的每一个操作子可以被配置为对接收到的元组执行任何形式的数据处理功能,包括例如向数据库表写入或执行诸如数据连接JOIN、分割SPLIT、读取等的其他数据库操作以及执行其他数据分析功能或操作。0034流管理器134可以被配置为监控在计算节点13014上运行的流计算应用以及改变操作子图132的部署。流管理器134可以将PE从一个计算节点130移动到另一个,以例如管理在计算基础架构100中的计算节点130的处理负载。此外,流管理器134可以通过插入、移除、熔合、去熔合或否则修改在计算节点13014上运行的处理单元和操作子或什么数据元组流向处理单。
33、元来控制流计算应用。流计算应用的一个示例是的流注意,是在许多世界范围的管辖区域中注册的国际商业机器公司的商标。0035图1B图示了包括在计算节点13014上运行的10个处理单元标注为PE1PE10的示例操作子图。处理单元由一个或多个操作子构成,该一个或多个操作子起被熔合到一起成为具有其自身的处理IDPID和内存空间的独立运行的处理。如果两个或更多个处理单元独立地运行,则可以使用“传输”例如,网络套接字、TCP/IP套接字或共享内存发生处理间的通信。然而,当操作子被熔合在一起时,熔合的操作子可以使用更快的通信技术,以在每一个处理单元中的操作子之间传送元组。0036如所示,操作子图在源135其流入。
34、标注为PE1的处理单元内处开始,并且在信宿14012其从标注为PE6和PE10的处理单元流至处结束。计算节点1301包括处理单元PE1、PE2和PE3。源135流入处理单元PE1,处理单元PE1继而发送被PE2和PE3接收的元组。例如,PE1可以划分在元组中接收的数据属性,并且向PE2传送一些数据属性而向PE3传送其他数据属性。流到PE2的数据被PE2中包含的操作子处理,并且作为结果的元组随后被发送到计算节点1302上的PE4。同样,由PE4发送的数据元组流到信宿PE61401。类似地,从PE3流到PE5的数据元组也到达信宿PE61401。因此,除了作为这个示例操作子图的信宿之外,PE6可以被。
35、配置为执行连接操作,以组合从PE4和PE5接收的元组。这个示例操作子图还示出了从PE3向计算节点1303上的PE7流动的数据元组,计算节点1303本身示出了数据元组流到PE8并且循环回到PE7。从PE8发送的数据元组流到计算节点1304上的PE9,计算节点1304继而发送将由信宿PE101402处理的元组。0037因为处理单元是熔合的操作子的集合,所以将操作子图描述为在特定操作子之间的执行路径同样是正确的,该执行路径可以包括到在同一处理单元内的不同操作子的执行路径。为了清楚,图1B图示了在处理单元之间的执行路径。0038而且,虽然在流计算应用的情境中描述了本发明的实施例,但是这不是唯一与本公开。
36、相关的情境。相反,这样的描述没有限制,并且仅用于说明性目的。当然,本领域内的普通技术人员将认识到,本发明的实施例可以被配置为使用能够执行在此所述的功能的任说明书CN104094232A6/11页10何计算机系统或应用来运行。例如,本发明的实施例可以被配置为使用标准数据库处理应用在成群集CLUSTERED环境中运行。0039图2是根据本发明的一个实施例的、图1A1B的计算节点130的更详细视图。如所示,计算节点130非限制地包括至少一个CPU205、网络接口215、互连220、内存225和存储器230。计算节点130还可以包括I/O设备接口210,用于将I/O设备212例如,键盘、显示器和鼠标设。
37、备连接到计算节点130。0040每一个CPU205取回并执行在内存225中存储的编程指令。类似地,CPU205存储和取回在内存225中驻留的应用数据。互连220用于在每一个CPU205、I/O设备接口210、存储器230、网络接口215和内存225之间传送编程指令和应用数据。CPU205被包括以表示单个CPU、多个CPU和具有多个处理核的单个CPU等。在一个实施例中,PE235被指定为仅由一个CPU205执行,虽然在其他实施例中,PE235的操作子240可以包括在多个CPU205上执行的一个或多个线程。内存225一般被包括以表示随机存取存储器例如,DRAM或快闪。诸如硬盘驱动器、固态设备SSD。
38、或快闪存储器驱动器的存储器230可以存储非易失性数据。0041在这个示例中,内存225包括多个处理单元235。每一个PE235包括被熔合在一起的操作子240的集合。如上所述,每一个操作子240可以提供一小块的代码,其被配置为处理流入处理单元例如,PE235内的数据,并且向同一PE或流计算应用中的其他PE中的操作子240发送数据。这样的处理单元可以在同一计算节点130上或在经由通信设备120可访问的其他计算节点上。0042如所示,存储器230包含缓冲器260。虽然被示出为在存储器中,但是缓冲器260可以位于计算节点130的内存225中或两者的组合中。而且,存储器230可以包括在计算节点130外部。
39、的存储空间。0043图3是根据本发明的一个实施例的、图1的服务器管理系统105的更详细的视图。如所示,服务器管理系统105非限制地包括CPU305、网络接口315、互连320、内存325和存储器330。客户端系统130也可以包括I/O设备接口310,其将I/O设备312例如,键盘、显示器和鼠标设备连接到服务器管理系统105。0044类似于图2的CPU205,CPU305被配置为取回和执行在内存325和存储器330中存储的编程指令。类似地,CPU305被配置为存储和取回在内存325和存储器330中驻留的应用数据。互连320被配置为在CPU305、I/O设备接口310、存储器330、网络接口305。
40、和内存325之间传送诸如编程指令和应用数据的数据。类似于CPU205,CPU305被包括以表示单个CPU、多个CPU和具有多个处理核的单个CPU等。内存325一般被包括以表示随机存取存储器。网络接口315被配置为经由通信网络120发送数据。虽然被示出为单个单元,但是存储器330可以是固定和/或可移除存储设备的组合,诸如固定盘驱动器、可移除存储卡、光学存储器、SSD或快闪存储设备、网络附接的存储器NAS或到存储区域网络SAN设备的连接。0045如所示,内存325存储流管理器134。另外,存储器330包括初始操作子图132。流管理器134可以使用初始操作子图132将元组路由到PE235用于处理。流。
41、管理器134还包括克隆管理器350,用于克隆所选择的PE235以利用可用的硬件,诸如内存225或CPU205。0046图4是图示根据本发明的一个实施例的、用于克隆操作子图中的处理单元的技术说明书CN104094232A107/11页11的流程图。在步骤405处,克隆管理器350识别在计算基础架构100中的可用或未充分利用的硬件资源。克隆管理器350可以例如监控在计算节点13014中的不同硬件资源以确定CPU是否空闲。如在此使用的,“空闲CPU”表示计算节点130上当前未被分配以执行PE的CPU205,或在一些实施例中是在操作子图中的操作子。另外,克隆管理器350可以监控CPU205或CPU的核。
42、的CPU使用,并且标记其使用低于预定阈值的CPU或CPU核。另外或可替代地的,克隆管理器150可以监控计算节点130的内存225的使用。如果例如对于内存的访问低于一定阈值,则克隆管理器350可以将内存225标记为未充分利用。克隆管理器350也可以确定内存的阈值量是否在预定时间段未被利用或可用。0047在步骤410,克隆管理器350基于可用硬件资源确定哪些PE可以克隆。在一个实施例中,仅操作子图中的PE的子集可以克隆。克隆管理器350可以评估流编程人员是否将PE标注为“可克隆”。标记的PE可以指示PE不必以元组被接收的顺序来处理该元组。即,处理当前接收的元组不依赖于先前接收的元组。流编程人员可以。
43、将具有该特征的一个或多个PE识别为可克隆。如果克隆管理器350确定计算机资源未充分利用,则其确定要克隆哪个可克隆的PE以使得更有效地使用基础架构100的硬件资源。0048在一个实施例中,克隆管理器350可以将计算机资源和可克隆的PE通过它们的位置进行匹配。例如,如果计算节点130具有空闲的CPU205,则克隆管理器350可以首先确定是否有任何可克隆PE235当前与未充分利用的CPU205在相同的计算节点130上托管。如果是这样,则从一组可克隆PE中选择该PE235。0049在另一个实施例中,克隆管理器350可以通过可用CPU205的数量和包含多个直接连接的可克隆PE的执行路径的一部分将计算机资。
44、源和可克隆PE进行匹配。例如,如果克隆管理器350确定两个CPU205可用并且在执行路径中存在两个直接连接的可克隆PE,则其可以克隆这两个PE,即使它们被分配到不同的计算节点130。此外,克隆管理器350可以被配置为对于与空闲CPU205位于相同的计算节点130上的单个可克隆PE选择该选项。尽管如此,所公开的实施例不限于从一组可克隆PE选择要克隆哪些PE的任何特定方法。0050在步骤415,克隆管理器350可以向操作子图内插入PE以分离和合并数据流。在图5A5C中详细地示出了这一点。0051图5A5C图示了根据本发明的实施例的、克隆处理单元以建立并行执行路径。图5A示出了包括PE13其中PE2。
45、是可克隆的PE的执行路径500的一部分。在流式应用执行的同时,元组从PE1的操作子传递到PE2的操作子并从PE2的操作子传递到PE3的操作子。0052图5B图示了插入PE以分离和合并在执行路径中流动的数据。如所示的,在PE1和PE2之间插入包括分离操作子505的PE4。分离操作子505分离在两个或更多的PE之间在执行路径501中流动的数据流。具体地说,分离操作子505将元组划分为两个分开的数据流。相反,PE5内的合并操作子510从两个不同的数据流接收元组,并且合并该元组以产生单个数据流。0053在一个实施例中,克隆管理器350可以在流式应用正在处理数据的同时动态地插入PE4和PE5。即,流经执。
46、行路径501的数据流不被插入新的PE所中断。一旦产生克隆的PE或多个PE,则克隆管理器350可以启动PE4和PE5。0054替代地,可以在流式应用开始处理流式数据之前向执行路径501内插入PE4和说明书CN104094232A118/11页12PE5。然而,PE4和PE5可以保持不活动,直到克隆管理器350确定要克隆PE2。即,元组经过PE4和PE5,而不被操作子505、510所处理。此外,在预期可以复制可克隆PE的情况下,克隆管理器350可以在操作子图内的多个可克隆PE即,可克隆PE串的上游和下游插入具有分离和合并操作子的PE。0055返回到图4,在步骤420,克隆管理器350克隆至少一个可。
47、克隆PE以产生第二独立的数据流。可以将可克隆PE克隆任何次数。每次克隆PE时,克隆管理器350建立另一个并行执行路径。0056图5C图示了产生具有至少一个克隆的处理单元的两个并行执行路径502、503。如所示,克隆管理器350向操作子图添加PE4、PE5和克隆的PE2。克隆管理器350还连接这些PE的操作子以建立两个并行执行路径。执行路径502包括PE1、PE4、PE2、PE5和PE3,而执行路径503包括PE1、PE4、克隆的PE2、PE5和PE3。因为克隆的PE2可以包括在PE2内找到的所有相同的操作子,所以执行路径502、503并行,因为它们在被给予相同的元组来处理时产生相同的结果。因此。
48、,在一个实施例中,并行执行路径502、503是精确的拷贝。0057虽然图5B5C图示了在与插入克隆的PE不同的独立步骤中插入分离/合并PE,但是它们可以同时插入。而且,可以在流式应用正在处理数据的同时向操作子图中动态地插入克隆的PE。以这种方式,一旦插入分离/合并PE和克隆的PE就可以启动它们。替代地,在预期克隆管理器350可以稍后确定启动克隆的PE和分离/合并PE以在执行路径503中产生数据流的情况下,可以在流式应用开始处理数据之前向操作子图中插入克隆的PE,0058在一个实施例中,可以不使用分离/合并PE来建立具有至少一个克隆的PE的并行执行路径。即,可以从方法400省略步骤415。例如,。
49、处理单元可以使用过滤或动态连接来产生并行执行路径。过滤是操作子构造,其确定要处理哪些接收的数据元组。例如,PE2可以具有过滤器,该过滤器指示PE2基于唯一的元组标识符仅处理奇数元组,而在克隆的PE2上的过滤器则指示克隆的PE2仅处理偶数的数据元组。动态连接允许流管理器134耦合两个独立的作业JOB,使得数据元组可以在作业之间流动。在此,克隆的PE2可以是与原始PE2不同的作业的一部分。流管理器134可以配置操作子图,使得与克隆的PE2相关联的作业从PE1接收元组,该元组被克隆的PE处理并且然后被发送到PE3。在流式应用正在运行时,可以执行不使用分离/合并PE而产生并行执行路径的这两种技术。替代。
50、地,在流管理器134配置过滤或动态连接时,可以暂时停止流式应用。0059图6A6B图示了根据本发明的实施例的、向在一个或多个计算机节点上的CPU分发克隆的处理计算节点。具体地说,该附图示出向CPU分配图5C的处理单元以利用可用的硬件资源的不同实施例。0060图6A图示了向与被克隆的处理单元位于相同的计算节点130内的空闲CPU分配克隆的PE。如所示,执行路径502和503的所有处理单元被分配到同一计算节点130中的CPU即,处理单元的操作子全部被计算节点130的CPU执行。例如,克隆管理器350可能已经确定CPU4是空闲的,并且作为响应,产生了并行执行路径503。当克隆的PE2被插入操作子图中。