流式数据系统中的处理单元管理.pdf

上传人:大师****2 文档编号:629628 上传时间:2018-02-28 格式:PDF 页数:23 大小:3.33MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380007312.9

申请日:

2013.01.10

公开号:

CN104094232A

公开日:

2014.10.08

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20130110|||公开

IPC分类号:

G06F9/50

主分类号:

G06F9/50

申请人:

国际商业机器公司

发明人:

J.桑托苏索; B.舒尔兹; R.K.克拉迪克; M.布兰森

地址:

美国纽约阿芒克

优先权:

2012.01.30 US 13/361,287

专利代理机构:

北京市柳沈律师事务所 11105

代理人:

胡琪

PDF下载: PDF下载
内容摘要

流应用可能低效地使用执行数据流的处理单元的硬件资源。例如,计算节点可以托管四个处理单元,并且使用CPU来执行每一个。然而,在该计算节点上的其他CPU可能保持空闲。为了利用这些可用的硬件资源,流编程人员可以识别可以被克隆的一个或多个处理单元。该克隆的处理单元可以用于产生与包括原始处理单元的执行路径并行的不同执行路径。因为克隆的处理单元与原始处理单元包含相同的操作子,所以先前仅流经原始处理单元的数据流可以被分离并通过原始和克隆的处理单元来发送。以这种方式,并行执行路径可以使用未充分利用的硬件资源来增大数据流的吞吐量。

权利要求书

1.  一种方法,包括:
接收将被包括一个或多个操作子的多个处理单元处理的流式数据,所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分;
建立多个操作子的操作子图,所述操作子图定义至少一个执行路径,在该执行路径中,所述多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组;
相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源;
克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子;以及
在包括克隆的处理单元的第一执行路径中处理所接收的流式数据的至少一部分,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行,其中克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。

2.
  根据权利要求1所述的方法,进一步包括:
在所述操作子图中所述克隆的和第一处理单元的上游启动第二处理单元,该第二处理单元包括分离操作子,该分离操作子向所述克隆的和第一处理单元两者中的操作子发送数据元组;以及
在所述操作子图中所述克隆的和第一处理单元的下游启动第三处理单元,该第三处理单元包括合并操作子,该合并操作子合并从在所述克隆的和第一处理单元两者中的操作子接收的数据元组。

3.
  根据权利要求2所述的方法,进一步包括:在所述多个处理单元正在处理所接收的流式数据时,向所述操作子图插入所述克隆的、第二和第三处理单元。

4.
  根据权利要求1所述的方法,其中,所述未充分利用的硬件资源是CPU和内存的一部分中的至少一个。

5.
  根据权利要求4所述的方法,其中,所述未充分利用的硬件资源是当前未执行所述多个处理单元之一的操作子之一的CPU。

6.
  根据权利要求1所述的方法,进一步包括:
克隆所述多个处理单元的第二处理单元以产生与所述第二处理单元包括相同的一个或多个操作子的第二克隆的处理单元,其中所述第二处理单元直接连接到所述第二执行路径中的所述第一处理单元;以及
在包括所述第二克隆的处理单元的所述第一执行路径中处理所接收的流式数据,其中,所述第二克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。

7.
  根据权利要求1所述的方法,进一步包括:确定所述第一处理单元是否是可克隆的,其中可克隆的处理单元能够以与接收数据元组的顺序不同的顺序来处理所接收的数据元组。

8.
  一种计算机程序产品,包括:
计算机可读存储介质,其具有用来具体化的计算机可读程序代码,所述计算机可读程序代码包括被配置为执行下述处理的计算机可读程序代码:
接收将被包括一个或多个操作子的多个处理单元处理的流式数据,所述操作子处理所接收的数据的至少一部分;
建立多个操作子的操作子图,所述操作子图定义至少一个执行路径,在该执行路径中,所述多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组;
相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源;
克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子;以及
在包括克隆的处理单元的第一执行路径中处理所接收的流式数据的至少一部分,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行,其中克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。

9.
  根据权利要求8所述的计算机程序产品,进一步包括被配置为执行下述处理的计算机可读程序代码:
在所述操作子图中所述克隆的和第一处理单元的上游启动第二处理单元,该第二处理单元包括分离操作子,该分离操作子向所述克隆的和第一处理单元两者中的操作子发送数据元组;以及
在所述操作子图中所述克隆的和第一处理单元的下游启动第三处理单元,该第三处理单元包括合并操作子,该合并操作子合并从在所述克隆的和第一处理单元两者中的操作子接收的数据元组。

10.
  根据权利要求9所述的计算机程序产品,进一步包括被配置为在所述多个处理单元正在处理所接收的流式数据时,向所述操作子图插入所述克隆的、第二和第三处理单元的计算机可读程序代码。

11.
  根据权利要求8所述的计算机程序产品,其中,所述未充分利用的硬件资源是CPU和内存的一部分中的至少一个。

12.
  根据权利要求11所述的计算机程序产品,其中,所述未充分利用的硬件资源是当前未执行所述多个处理单元之一的操作子之一的CPU。

13.
  根据权利要求8所述的计算机程序产品,进一步包括被配置为执行下述处理的计算机可读程序代码:
克隆所述多个处理单元的第二处理单元以产生与所述第二处理单元包括相同的一个或多个操作子的第二克隆的处理单元,其中所述第二处理单元直接连接到所述第二执行路径中的所述第一处理单元;以及
在包括所述第二克隆的处理单元的所述第一执行路径中处理所接收的流式数据,其中,所述第二克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。

14.
  根据权利要求8所述的计算机程序产品,进一步包括被配置为执行下述处理的计算机可读程序代码:确定所述第一处理单元是否是可克隆的,其中可克隆的处理单元能够以与接收数据元组的顺序不同的顺序来处理所接收的数据元组。

15.
  一种系统,包括:
计算机处理器;以及
内存,其包含程序,所述程序当在所述计算机处理器上执行时执行用于处理数据的操作,所述操作包括:
接收将被包括一个或多个操作子的多个处理单元处理的流式数据,所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分;
建立多个操作子的操作子图,所述操作子图定义至少一个执行路径,在该执行路径中,所述多个操作子的第一操作子被配置为从至少一个上游操作 子接收数据元组,并且向至少一个下游操作子发送数据元组;
相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源;
克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子;以及
在包括克隆的处理单元的第一执行路径中处理所接收的流式数据的至少一部分,所述第一执行路径与包括所述第一处理单元的第二执行路径并行地执行,其中克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。

16.
  根据权利要求15所述的系统,进一步包括:
在所述操作子图中所述克隆的和第一处理单元的上游启动第二处理单元,该第二处理单元包括分离操作子,该分离操作子向所述克隆的和第一处理单元两者中的操作子发送数据元组;以及
在所述操作子图中所述克隆的和第一处理单元的下游启动第三处理单元,该第三处理单元包括合并操作子,该合并操作子合并从在所述克隆的和第一处理单元两者中的操作子接收的数据元组。

17.
  根据权利要求16所述的系统,进一步包括:在所述多个处理单元正在处理所接收的流式数据时,向所述操作子图插入所述克隆的、第二和第三处理单元。

18.
  根据权利要求15所述的系统,其中,所述未充分利用的硬件资源是CPU和内存的一部分中的至少一个。

19.
  根据权利要求18所述的系统,其中,所述未充分利用的硬件资源是当前未执行所述多个处理单元之一的操作子之一的CPU。

20.
  根据权利要求15所述的系统,进一步包括:
克隆所述多个处理单元的第二处理单元以产生与所述第二处理单元包括相同的一个或多个操作子的第二克隆的处理单元,其中所述第二处理单元直接连接到所述第二执行路径中的所述第一处理单元;以及
在包括所述第二克隆的处理单元的所述第一执行路径中处理所接收的流式数据,其中,所述第二克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。

说明书

流式数据系统中的处理单元管理
技术领域
本发明的实施例总体上涉及流计算应用。具体地说,所公开的实施例公开了分布处理单元或操作子(operator)以在流计算环境中未充分利用的硬件资源。
背景技术
随着计算机数据库已经变得极为复杂,对于数据库系统设置的计算要求也已经以快速的步调增加。数据库系统通常被配置为将存储数据的处理与访问、操纵或使用在数据库中存储的数据的操作分离。更具体地,数据库使用下述模型:其中,数据首先被存储,然后被添加索引并且最后被查询。然而,该模型不能满足一些实时应用的性能要求。例如,数据库系统可以接收和存储进入数据的速率限制了可以处理或以其他方式评估多少数据。这继而可以限制数据库应用实时地处理大量数据的能力。
发明内容
本发明的实施例提供了一种用于处理数据的方法、系统和计算机程序产品。所述方法、系统和计算机程序接收将由包括一个或多个操作子的多个处理单元处理的流式数据。所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分。所述方法、系统和计算机程序建立多个操作子的操作子图。所述操作子图定义至少一个执行路径,在该执行路径中,多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组。所述方法、系统和计算机程序相对于预定义的标准识别在执行所述操作子的计算系统中未充分利用的硬件资源。所述方法、系统和计算机程序克隆所述多个处理单元的第一处理单元,使得克隆的处理单元与所述第一处理单元包括相同的一个或多个操作子。所述方法、系统和计算机程序在包括克隆的处理单元的第一执行路径中处理所接收的流式数据,所述第一执行路径与包括所述第一处理单元的第二执行路 径并行地执行。此外,克隆的处理单元使用所述未充分利用的硬件资源来处理所接收的流式数据。
在另一个实施例中,一种接收将被包括一个或多个操作子的多个处理单元处理的流式数据的方法。所述操作子通过一个或多个计算机处理器的操作来处理所接收的数据的至少一部分。所述方法建立多个操作子的操作子图。所述操作子图定义至少一个执行路径,在该执行路径中,多个操作子的第一操作子被配置为从至少一个上游操作子接收数据元组,并且向至少一个下游操作子发送数据元组。所述方法相对于预定义的标准识别在执行所述操作子的计算系统中的未充分利用的硬件资源。所述方法也从多个处理单元的第一处理单元去熔合第一操作子,所述第一处理单元包括多个操作子。所述方法将所述第一操作子熔合到所述多个处理单元的第二处理单元内。在熔合所述第一操作子后,所述方法使用第一操作子处理所接收的流式数据的至少一部分,其中,所述第一操作子使用所述未充分利用的硬件资源来处理所接收的流式数据的所述部分。
附图说明
为了获得并可以详细理解上述方面,可以通过参考附图来提供上面简短汇总的本发明的实施例的更具体的说明。
然而,应当注意,附图仅图示了本发明的典型实施例,并且因此不被认为限制其范围,因为本发明可以允许其他等价有效的实施例。
图1A-1B图示了根据本发明的实施例的、被配置为执行流计算应用的计算基础架构。
图2是根据本发明的一个实施例的图1A-1B的计算节点的更详细视图。
图3是根据本发明的一个实施例的图1A-1B的服务器管理系统的更详细视图。
图4是图示根据本发明的一个实施例的、用于在操作子图中克隆处理单元的技术的流程图。
图5A-5C图示了根据本发明的实施例的、克隆处理单元以建立并行执行路径。
图6A-6B图示了根据本发明的实施例的、向一个或多个计算节点上的CPU分发克隆处理单元。
图7A-7B图示了根据本发明的实施例的、克隆在单个执行路径中的多个处理单元以产生一个或多个并行执行路径。
图8A-8D图示了根据本发明的实施例的、去熔合(unfuse)和向多个CPU上分发处理单元的操作子。
为了有利于理解,在可能时,已经使用相同的附图标号来指定对于附图公共的相同元件。考虑在一个实施例中公开的元件可以有益地用在其他实施例上,而不再复述。
具体实施方式
基于流的计算和基于流的数据库计算正在作为用于数据库系统的开发中的技术而出现。可获得允许用户建立应用的产品,该应用在流式数据到达数据库文件之前处理和查询该流式数据。使用该正在出现的技术,用户可以指定处理逻辑以在入站(inbound)数据记录“在飞行(in flight)”时应用到该入站数据记录,并且在经常以毫秒计的极短的时间量中可获得结果。使用该类型的处理构造应用已经开辟了新的编程范例,其将考虑大量创新的应用、系统和处理被开发,并且对于应用编程人员和数据库开发者呈现了新的挑战。
在流计算应用中,操作子彼此连接,使得数据从一个操作子向下一个(例如,通过TCP/IP套接字)流动。通过下述方式来达到可伸缩性:通过建立可执行体(executable)(即,处理单元)来在节点上分布应用,并且在多个节点上复制处理单元,并且在它们之间执行负载平衡。流计算应用中的操作子可以被熔合在一起,以形成可执行的处理单元。这样做允许处理单元共享公共的处理空间,导致比使用处理之间通信技术(例如,使用TCP/IP套接字)可获得的快得多的操作子之间的通信。此外,处理单元可以动态地插入表示数据流经流计算应用的操作子图中或从中移除。
而且,流应用可能低效地使用执行数据流的处理单元的硬件资源。例如,计算节点可以托管(host)四个处理单元,并且使用CPU来执行每一个。然而,在该计算节点上的其他CPU可能保持空闲。为了利用这些可用的硬件资源,流编程人员或开发者可以识别可以被克隆的一个或多个处理单元。该克隆的处理单元可以用于产生与包括原始处理单元的执行路径并行的不同执行路径。因为克隆的处理单元与原始处理单元包含相同的操作子,所以先前仅流经原始处理单元的数据流可以被分离并通过原始和克隆的处理单元来发 送。以这种方式,该并行执行路径可以使用未充分利用的硬件资源来增大数据流的吞吐量。
在另一个实施例中,处理单元的操作子可以被分布以利用可用的计算机硬件。例如,在检测到空闲CPU后,流式应用可以将处理单元中的操作子分离,并且将它们置于多个处理单元中,其中,向空闲的CPU分配了所述处理单元的一个或多个。
下面,参考本发明的实施例。然而,应当明白,本发明不限于特定的所述实施例。相反,考虑下面的特征和元素的任何组合(不论是否与不同的实施例相关)来实现和实施本发明。而且,虽然本发明的实施例可以相对于其他可能的解决方案和/或相对于现有技术实现优点,但是是否通过给定的实施例来实现特定的优点不是本发明的限制。因此,下面的方面、特征、实施例和优点仅是说明性的,并且不是所附的权利要求的所考虑的元素或限制,除非在权利要求中明确地说明。同样,参考“本发明”不应当被解释为在此公开的任何发明主题的一般化,并且不应当被认为是所附的权利要求的元素或限制,除非在权利要求中明确地说明。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、设备或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、设 备或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、设备或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务供应商来通过因特网连接)。
下面将参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理设备的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的设备。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理设备、或其他装置以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把这些计算机程序指令加载到计算机、其他可编程数据处理装置 或其他设备上,以使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在该计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个方框中指定的功能/行为的处理。
本发明的实施例可以通过云计算基础架构被提供到终端用户。云计算通常指的是经由网络来提供可伸缩计算资源作为服务。更正式地,云计算可以被定义为计算能力,该计算能力提供在计算资源和其底层技术架构(例如,服务器、存储器、网络)之间的抽取,以使能对于可配置的计算资源的共享池的方便的、根据需要的网络访问,该可配置的计算资源的共享池可以以最小的管理精力或服务供应商交互被迅速地提供和释放。因此,云计算允许用户访问在“云”中的虚拟计算资源(例如,存储器、数据、应用和甚至完整的虚拟化计算系统),而不考虑用于提供该计算资源的底层物理系统(或那些系统的位置)。
通常,在每次使用付费的基础上向用户提供云计算资源,其中,仅对于实际使用的计算资源(例如,由用户使用的存储空间的量或由用户例示的多个虚拟化系统)向用户收费。用户可以在任何时间并且从因特网上的任何位置访问在该云中驻留的任何资源。在本发明的上下文中,用户可以访问在云中可获得的应用或相关数据。例如,用于建立流计算应用的节点可以是由云服务供应商托管的虚拟机。这样,允许用户从附接到与云连接的网络(例如,因特网)的任何计算系统访问该信息。
图1A-1B图示了根据本发明的一个实施例的、被配置为执行流计算应用的计算基础架构。如所示的,计算基础架构100包括管理系统105和多个计算节点1301-4——即,主机——它们使用一个或多个通信设备120通信地彼此耦接。通信设备120可以是服务器、网络或数据库,并且可以使用特定的通信协议在计算节点1301-4之间传送数据。虽然未示出,但是计算节点1301-4可以具有内部通信设备,用于在位于同一计算节点130上的处理单元(PE)之间传送数据。
管理系统105包括操作子图132和流管理器134。如下面更详细描述的,操作子图132表示从一个或多个源操作子开始直到一个或多个信宿(sink)操作子的流应用。该从源至信宿的流在此通常也被称为执行路径。虽然图1B抽取地示出连接的PE,但是操作子图132可以包括在相同PE或不同PE内 的操作子之间的数据流。通常,处理单元从流接收N元组的数据属性,并且将N元组的数据属性发送到流中(除了其中流终止的信宿操作子或其中流开始的源操作子之外)。
当然,由处理单元接收的N元组不必是向下游发送的相同的N元组。另外,PE可以被配置为以其他格式来接收或发送元组(例如,PE或操作子可以交换被标记为XML文档的数据)。而且,在PE内的每一个操作子可以被配置为对接收到的元组执行任何形式的数据处理功能,包括例如向数据库表写入或执行诸如数据连接(join)、分割(split)、读取等的其他数据库操作以及执行其他数据分析功能或操作。
流管理器134可以被配置为监控在计算节点1301-4上运行的流计算应用以及改变操作子图132的部署。流管理器134可以将PE从一个计算节点130移动到另一个,以例如管理在计算基础架构100中的计算节点130的处理负载。此外,流管理器134可以通过插入、移除、熔合、去熔合或否则修改在计算节点1301-4上运行的处理单元和操作子(或什么数据元组流向处理单元)来控制流计算应用。流计算应用的一个示例是流(注意,是在许多世界范围的管辖区域中注册的国际商业机器公司的商标)。
图1B图示了包括在计算节点1301-4上运行的10个处理单元(标注为PE1-PE10)的示例操作子图。处理单元由一个或多个操作子构成,该一个或多个操作子起被熔合到一起成为具有其自身的处理ID(PID)和内存空间的独立运行的处理。如果两个(或更多个)处理单元独立地运行,则可以使用“传输”(例如,网络套接字、TCP/IP套接字或共享内存)发生处理间的通信。然而,当操作子被熔合在一起时,熔合的操作子可以使用更快的通信技术,以在每一个处理单元中的操作子之间传送元组。
如所示,操作子图在源135(其流入标注为PE1的处理单元内)处开始,并且在信宿1401-2(其从标注为PE6和PE10的处理单元流至)处结束。计算节点1301包括处理单元PE1、PE2和PE3。源135流入处理单元PE1,处理单元PE1继而发送被PE2和PE3接收的元组。例如,PE1可以划分在元组中接收的数据属性,并且向PE2传送一些数据属性而向PE3传送其他数据属性。流到PE2的数据被PE2中包含的操作子处理,并且作为结果的元组随后被发送到计算节点1302上的PE4。同样,由PE4发送的数据元组流到信宿PE61401。 类似地,从PE3流到PE5的数据元组也到达信宿PE61401。因此,除了作为这个示例操作子图的信宿之外,PE6可以被配置为执行连接操作,以组合从PE4和PE5接收的元组。这个示例操作子图还示出了从PE3向计算节点1303上的PE7流动的数据元组,计算节点1303本身示出了数据元组流到PE8并且循环回到PE7。从PE8发送的数据元组流到计算节点1304上的PE9,计算节点1304继而发送将由信宿PE101402处理的元组。
因为处理单元是熔合的操作子的集合,所以将操作子图描述为在特定操作子之间的执行路径同样是正确的,该执行路径可以包括到在同一处理单元内的不同操作子的执行路径。为了清楚,图1B图示了在处理单元之间的执行路径。
而且,虽然在流计算应用的情境中描述了本发明的实施例,但是这不是唯一与本公开相关的情境。相反,这样的描述没有限制,并且仅用于说明性目的。当然,本领域内的普通技术人员将认识到,本发明的实施例可以被配置为使用能够执行在此所述的功能的任何计算机系统或应用来运行。例如,本发明的实施例可以被配置为使用标准数据库处理应用在成群集(clustered)环境中运行。
图2是根据本发明的一个实施例的、图1A-1B的计算节点130的更详细视图。如所示,计算节点130非限制地包括至少一个CPU205、网络接口215、互连220、内存225和存储器230。计算节点130还可以包括I/O设备接口210,用于将I/O设备212(例如,键盘、显示器和鼠标设备)连接到计算节点130。
每一个CPU 205取回并执行在内存225中存储的编程指令。类似地,CPU205存储和取回在内存225中驻留的应用数据。互连220用于在每一个CPU205、I/O设备接口210、存储器230、网络接口215和内存225之间传送编程指令和应用数据。CPU205被包括以表示单个CPU、多个CPU和具有多个处理核的单个CPU等。在一个实施例中,PE235被指定为仅由一个CPU205执行,虽然在其他实施例中,PE235的操作子240可以包括在多个CPU205上执行的一个或多个线程。内存225一般被包括以表示随机存取存储器(例如,DRAM或快闪)。诸如硬盘驱动器、固态设备(SSD)或快闪存储器驱动器的存储器230可以存储非易失性数据。
在这个示例中,内存225包括多个处理单元235。每一个PE235包括被熔合在一起的操作子240的集合。如上所述,每一个操作子240可以提供一 小块的代码,其被配置为处理流入处理单元(例如,PE235)内的数据,并且向同一PE或流计算应用中的其他PE中的操作子240发送数据。这样的处理单元可以在同一计算节点130上或在经由通信设备120可访问的其他计算节点上。
如所示,存储器230包含缓冲器260。虽然被示出为在存储器中,但是缓冲器260可以位于计算节点130的内存225中或两者的组合中。而且,存储器230可以包括在计算节点130外部的存储空间。
图3是根据本发明的一个实施例的、图1的服务器管理系统105的更详细的视图。如所示,服务器管理系统105非限制地包括CPU305、网络接口315、互连320、内存325和存储器330。客户端系统130也可以包括I/O设备接口310,其将I/O设备312(例如,键盘、显示器和鼠标设备)连接到服务器管理系统105。
类似于图2的CPU205,CPU305被配置为取回和执行在内存325和存储器330中存储的编程指令。类似地,CPU305被配置为存储和取回在内存325和存储器330中驻留的应用数据。互连320被配置为在CPU305、I/O设备接口310、存储器330、网络接口305和内存325之间传送诸如编程指令和应用数据的数据。类似于CPU205,CPU305被包括以表示单个CPU、多个CPU和具有多个处理核的单个CPU等。内存325一般被包括以表示随机存取存储器。网络接口315被配置为经由通信网络120发送数据。虽然被示出为单个单元,但是存储器330可以是固定和/或可移除存储设备的组合,诸如固定盘驱动器、可移除存储卡、光学存储器、SSD或快闪存储设备、网络附接的存储器(NAS)或到存储区域网络(SAN)设备的连接。
如所示,内存325存储流管理器134。另外,存储器330包括初始操作子图132。流管理器134可以使用初始操作子图132将元组路由到PE235用于处理。流管理器134还包括克隆管理器350,用于克隆所选择的PE235以利用可用的硬件,诸如内存225或CPU 205。
图4是图示根据本发明的一个实施例的、用于克隆操作子图中的处理单元的技术的流程图。在步骤405处,克隆管理器350识别在计算基础架构100中的可用或未充分利用的硬件资源。克隆管理器350可以例如监控在计算节点1301-4中的不同硬件资源以确定CPU是否空闲。如在此使用的,“空闲CPU”表示计算节点130上当前未被分配以执行PE的CPU205,或在一些实 施例中是在操作子图中的操作子。另外,克隆管理器350可以监控CPU205(或CPU的核)的CPU使用,并且标记其使用低于预定阈值的CPU或CPU核。另外或可替代地的,克隆管理器150可以监控计算节点130的内存225的使用。如果例如对于内存的访问低于一定阈值,则克隆管理器350可以将内存225标记为未充分利用。克隆管理器350也可以确定内存的阈值量是否在预定时间段未被利用或可用。
在步骤410,克隆管理器350基于可用硬件资源确定哪些PE可以克隆。在一个实施例中,仅操作子图中的PE的子集可以克隆。克隆管理器350可以评估流编程人员是否将PE标注为“可克隆”。标记的PE可以指示PE不必以元组被接收的顺序来处理该元组。即,处理当前接收的元组不依赖于先前接收的元组。流编程人员可以将具有该特征的一个或多个PE识别为可克隆。如果克隆管理器350确定计算机资源未充分利用,则其确定要克隆哪个可克隆的PE以使得更有效地使用基础架构100的硬件资源。
在一个实施例中,克隆管理器350可以将计算机资源和可克隆的PE通过它们的位置进行匹配。例如,如果计算节点130具有空闲的CPU205,则克隆管理器350可以首先确定是否有任何可克隆PE235当前与未充分利用的CPU205在相同的计算节点130上托管。如果是这样,则从一组可克隆PE中选择该PE235。
在另一个实施例中,克隆管理器350可以通过可用CPU205的数量和包含多个直接连接的可克隆PE的执行路径的一部分将计算机资源和可克隆PE进行匹配。例如,如果克隆管理器350确定两个CPU205可用并且在执行路径中存在两个直接连接的可克隆PE,则其可以克隆这两个PE,即使它们被分配到不同的计算节点130。此外,克隆管理器350可以被配置为对于与空闲CPU205位于相同的计算节点130上的单个可克隆PE选择该选项。尽管如此,所公开的实施例不限于从一组可克隆PE选择要克隆哪些PE的任何特定方法。
在步骤415,克隆管理器350可以向操作子图内插入PE以分离和合并数据流。在图5A-5C中详细地示出了这一点。
图5A-5C图示了根据本发明的实施例的、克隆处理单元以建立并行执行路径。图5A示出了包括PE1-3(其中PE2是可克隆的PE)的执行路径500的一部分。在流式应用执行的同时,元组从PE1的操作子传递到PE2的操作 子并从PE2的操作子传递到PE3的操作子。
图5B图示了插入PE以分离和合并在执行路径中流动的数据。如所示的,在PE1和PE2之间插入包括分离操作子505的PE4。分离操作子505分离在两个或更多的PE之间在执行路径501中流动的数据流。具体地说,分离操作子505将元组划分为两个分开的数据流。相反,PE5内的合并操作子510从两个不同的数据流接收元组,并且合并该元组以产生单个数据流。
在一个实施例中,克隆管理器350可以在流式应用正在处理数据的同时动态地插入PE4和PE5。即,流经执行路径501的数据流不被插入新的PE所中断。一旦产生克隆的PE(或多个PE),则克隆管理器350可以启动PE4和PE5。
替代地,可以在流式应用开始处理流式数据之前向执行路径501内插入PE4和PE5。然而,PE4和PE5可以保持不活动,直到克隆管理器350确定要克隆PE2。即,元组经过PE4和PE5,而不被操作子505、510所处理。此外,在预期可以复制可克隆PE的情况下,克隆管理器350可以在操作子图内的多个可克隆PE(即,可克隆PE串)的上游和下游插入具有分离和合并操作子的PE。
返回到图4,在步骤420,克隆管理器350克隆至少一个可克隆PE以产生第二独立的数据流。可以将可克隆PE克隆任何次数。每次克隆PE时,克隆管理器350建立另一个并行执行路径。
图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并行,因为它们在被给予相同的元组来处理时产生相同的结果。因此,在一个实施例中,并行执行路径502、503是精确的拷贝。
虽然图5B-5C图示了在与插入克隆的PE不同的独立步骤中插入分离/合并PE,但是它们可以同时插入。而且,可以在流式应用正在处理数据的同时向操作子图中动态地插入克隆的PE。以这种方式,一旦插入分离/合并PE和克隆的PE就可以启动它们。替代地,在预期克隆管理器350可以稍后确定启 动克隆的PE(和分离/合并PE)以在执行路径503中产生数据流的情况下,可以在流式应用开始处理数据之前向操作子图中插入克隆的PE,
在一个实施例中,可以不使用分离/合并PE来建立具有至少一个克隆的PE的并行执行路径。即,可以从方法400省略步骤415。例如,处理单元可以使用过滤或动态连接来产生并行执行路径。过滤是操作子构造,其确定要处理哪些接收的数据元组。例如,PE2可以具有过滤器,该过滤器指示PE2基于唯一的元组标识符仅处理奇数元组,而在克隆的PE2上的过滤器则指示克隆的PE2仅处理偶数的数据元组。动态连接允许流管理器134耦合两个独立的作业(job),使得数据元组可以在作业之间流动。在此,克隆的PE2可以是与原始PE2不同的作业的一部分。流管理器134可以配置操作子图,使得与克隆的PE2相关联的作业从PE1接收元组,该元组被克隆的PE处理并且然后被发送到PE3。在流式应用正在运行时,可以执行不使用分离/合并PE而产生并行执行路径的这两种技术。替代地,在流管理器134配置过滤或动态连接时,可以暂时停止流式应用。
图6A-6B图示了根据本发明的实施例的、向在一个或多个计算机节点上的CPU分发克隆的处理计算节点。具体地说,该附图示出向CPU分配图5C的处理单元以利用可用的硬件资源的不同实施例。
图6A图示了向与被克隆的处理单元位于相同的计算节点130内的空闲CPU分配克隆的PE。如所示,执行路径502和503的所有处理单元被分配到同一计算节点130中的CPU——即,处理单元的操作子全部被计算节点130的CPU执行。例如,克隆管理器350可能已经确定CPU4是空闲的,并且作为响应,产生了并行执行路径503。当克隆的PE2被插入操作子图中时,克隆管理器350向CPU4分配处理单元(及其操作子)。而且,克隆管理器350还可以向空闲CPU分配分离/合并PE(即,PE4和PE5)。然而,在一个实施例中,克隆管理器350可以通过比较CPU1-4的CPU利用率确定向何处分配PE4和PE5来执行负载平衡。
图6B图示了向与被克隆的PE位于不同的计算节点上的空闲CPU分配克隆的PE。如所示,PE2被分配到计算节点130A上的CPU2。克隆管理器350可以确定计算基础架构100中的不同计算节点(即,计算节点130C)可能具有空闲CPU(即,CPU4)。因此,克隆管理器350可以产生克隆的PE,并且向CPU4分配该PE。
注意,如果在流式应用开始处理数据之前克隆的PE2或分离/合并PE被插入到操作子图内,则处理单元可能已经被分配到任何CPU。因为PE2、PE4和PE5的不活动操作子实质上是NOP,所以向例如CPU2分配处理单元不应当影响CPU的吞吐量。然而,当克隆管理器350确定启动克隆的PE2和分离/合并PE的操作子时,它可以随后向空闲CPU4重新分配处理单元。
在一个实施例中,克隆管理器350可以在确定向何处布置克隆的PE时考虑节点内和节点间通信方法之间的差别。假定托管PE1的计算节点具有仅被利用50%的CPU而不同的计算节点具有空闲CPU。在所有其他条件相同的情况下,克隆管理器350将向空闲CPU分配可克隆PE2。然而,向与PE1位于相同的计算节点上的CPU分配克隆的PE具有下述优点:使用节点内通信方法来从PE1向克隆的PE2传送元组。在一些情况下,节点内通信方法(例如,共享的内存或数据总线)可能比节点间通信方法(例如,TCP/IP套接字)更快。因此,即使在不同的计算节点上的CPU空闲,克隆管理器350可以确定:如果向与PE1位于相同的计算节点上的CPU分配克隆的PE2以允许执行路径503使用节点内通信方法而不是节点间通信方法,则并行执行路径503将执行得更快。
而且,克隆管理器350可以在确定将克隆的PE布置到何处时考虑不同类型的节点间通信方法或协议。可以使用提供不同的数据速度的不同通信协议(例如,RDMA、TCP/IP、共享的数据库访问、PCIe等)来连接不同的计算节点130。因此,克隆管理器350可以在向不同的计算节点中的CPU分配克隆的PE之前考虑节点间通信协议。即,如果计算节点130A和130C之间的节点间通信是较慢的通信协议之一,则克隆管理器350可以确定不向计算节点130C的空闲CPU4分配克隆的PE2。
另外,克隆管理器350可以在向不同的计算节点分配克隆的PE之前评估节点间通信连接的当前可用带宽。例如,即使在计算节点130A和130C之间的通信连接使用可获得的最快协议,如果连接的带宽的超过例如90%当前正被使用,则克隆管理器350可以确定不向CPU4分配克隆的PE2。
在一个实施例中,克隆管理器350可以考虑计算节点上的不同硬件资源,诸如可用内存。如果克隆管理器350确定计算节点130正在访问低于阈值比率的其内存(例如,RAM和高速缓存等),则管理器350可以启动在那个计算节点上的克隆的PE。而且,与CPU利用率类似,如果远程计算节点具有 未充分利用的内存,则克隆管理器350可以向与托管原始PE的节点不同的计算节点分配克隆的PE。
在另一个实施例中,克隆管理器350在确定何时以及在何处启动克隆的PE时,可以监控和考虑不同硬件资源的组合。例如,如果计算节点上的至少一个CPU的利用率小于50%并且对于在RAM中存储的数据的请求低于设置的阈值比率,则克隆管理器350可以启动克隆的PE。
图7A-7B图示了根据本发明的一个实施例的、克隆单个执行路径中的多个处理单元。图7A图示了其中克隆了至少两个处理单元的两个并行执行路径。具体地说,执行路径701的PE2和PE3被克隆以产生包括克隆的PE2和克隆的PE3的执行路径702。以这种方式,执行路径中直接连接的多个处理单元可以被克隆以产生并行执行路径,在所述多个并行执行路径中被克隆的处理单元也直接连接。在这个实施例中,在执行路径中的“直接连接”表示在处理单元之间传送元组。任何数量的直接连接的处理单元可以被克隆以产生并行执行路径。
如在前面的实施例中所述的,每一个克隆的PE可以布置在计算基础架构100中以利用可用硬件资源。例如,克隆的PE2和克隆的PE3可以位于一个或多个空闲CPU上。
图7B图示了将同一PE克隆多次,由此产生多个并行执行路径。如所示,克隆管理器350可以将PE2和PE3克隆多次,以产生并行执行路径702和703。例如,克隆管理器350可以识别在计算节点内的四个空闲CPU,并且向该CPU分配四个克隆的处理单元。以这种方式,流可以建立与其具有的可用资源一样多的并行执行路径。
虽然未示出,但是图7A-7B中的执行路径也可以包括在克隆的PE2的上游的具有分离操作子的PE和在克隆的PE3的下游的具有合并操作子的PE。
图8A-8D图示了根据本发明的实施例的、去熔合并向多个CPU分发处理单元的操作子。取代克隆PE以产生并行执行路径,流管理器134可以去熔合处理单元的操作子以利用可用硬件资源——例如,空闲CPU和可用内存等。
如上所述,PE可以包括多个熔合的操作子。在一个实施例中,PE的熔合的操作子作为单个进程执行。因此,由被分配该进程的CPU执行每一个熔合的操作子。将操作子移动到不同的CPU可能要求从当前的处理单元(即,进程)去熔合操作子并且将其传送到不同的处理单元内。
图8A图示了执行路径801,其中,PE2由三个熔合的操作子——操作子A、B和C——组成。流管理器134可以使用如上所述的标准确定被分配PE2的计算节点具有空闲的CPU。取代克隆PE2以产生并行执行路径,流管理器134可以去熔合PE2中的一个或多个操作子以产生另外的处理单元。因为在一个实施例中,处理单元仅可以被分配到单个CPU,所以在该处理单元内包括的操作子必须由同一CPU执行。
图8B图示了流管理器134可以去熔合PE2中的操作子以产生具有操作子A的PE4、具有操作子B的PE5和具有操作子C的PE6。以这种方式,可以去熔合具有两个或更多操作子的任何处理单元,使得至少一个操作子被传送到新的处理单元或传送到已经包括一个或多个操作子的现有的处理单元。例如,克隆管理器350可以从PE2去熔合操作子C,以产生新的处理单元。因此,PE2仍然包括操作子A和B。
在一个实施例中,流管理器134可能需要确保以正确的顺序来布置新的处理单元。例如,如果操作子A使用节点内通信方法向操作子B传送PE2中的数据元组,则流管理器134确保PE4位于PE5的上游,以保持相同的顺序。
图8C图示了可以托管在图8A中图示的PE的计算节点。如所示,CPU3和CPU4不托管执行路径801中的任何一个处理单元。流管理器134可以识别空闲CPU,并且确定去熔合PE2的操作子以利用可用硬件资源。注意,流管理器134可以使用相同的技术来识别如上所述的可用硬件资源。
图8D图示了在去熔合操作子以利用可用硬件资源后图8C中所示的计算节点。如所示,图8D图示了执行路径802的处理单元可以每一个位于独立的CPU上。即,操作子B(即,PE5)由CPU3执行,而操作子C(即,PE6)由CPU4执行。将操作子传送到向空闲CPU分配的处理单元可以导致执行路径802以比执行路径801更快的速率来处理数据元组。
注意,操作子可以被去熔合和分配到与操作子当前在其中运行的计算节点不同的计算节点。然而,与克隆管理器350类似,在确定何时以及向何处传送不同的操作子时,流管理器134可以考虑节点内和节点间通信方法之间的差别、不同类型的节点间通信协议、或在计算节点之间的连接的带宽利用率。例如,在传送要被不同的计算节点上的CPU执行的操作子B或C之前,流管理器134可以确定使用在不同计算节点上的空闲CPU的优点是否胜过可能来自于使用节点间通信方法而不是节点内通信方法在操作子之间传送数据 元组的缺点。
结论
流应用可能低效地使用执行数据流的处理单元的硬件资源。例如,计算节点可以托管四个处理单元,并且使用CPU来执行每一个。然而,在该计算节点上的其他CPU可能保持空闲。为了利用这些可用的硬件资源,流编程人员可以识别可以被克隆的一个或多个处理单元。该克隆的处理单元可以用于产生与包括原始处理单元的执行路径并行的不同执行路径。因为克隆的处理单元与原始处理单元包含相同的操作子,所以先前仅流经原始处理单元的数据流可以被分离并通过原始和克隆的处理单元来发送。以这种方式,并行执行路径可以使用未充分利用的硬件资源来增大数据流的吞吐量。
另外,被同一CPU或CPU核执行的处理单元内的操作子可以被划分和熔合到不同的处理单元以利用空闲CPU或未充分利用的内存。例如,操作子可以从原始PE去熔合,并且被布置在分配到先前空闲的CPU的新的PE中。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
虽然上面针对本发明的实施例,但是在不偏离本发明的基本范围的情况下,可以设计本发明的其他和另外的实施例,并且其范围由所附的权利要求确定。

流式数据系统中的处理单元管理.pdf_第1页
第1页 / 共23页
流式数据系统中的处理单元管理.pdf_第2页
第2页 / 共23页
流式数据系统中的处理单元管理.pdf_第3页
第3页 / 共23页
点击查看更多>>
资源描述

《流式数据系统中的处理单元管理.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被插入操作子图中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1