CN113918223A - 用于数据处理的分布式计算系统和方法以及存储介质 - Google Patents

用于数据处理的分布式计算系统和方法以及存储介质 Download PDF

Info

Publication number
CN113918223A
CN113918223A CN202110776076.3A CN202110776076A CN113918223A CN 113918223 A CN113918223 A CN 113918223A CN 202110776076 A CN202110776076 A CN 202110776076A CN 113918223 A CN113918223 A CN 113918223A
Authority
CN
China
Prior art keywords
pipeline
statement
sub
stage
processing node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110776076.3A
Other languages
English (en)
Inventor
雷蒙德·约翰·许特尔
阿尔卡·亚马缇
克雷格·亚历山大·麦金太尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weixun Boray Data Technology Beijing Co ltd
Original Assignee
Weixun Boray Data Technology Beijing Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Weixun Boray Data Technology Beijing Co ltd filed Critical Weixun Boray Data Technology Beijing Co ltd
Publication of CN113918223A publication Critical patent/CN113918223A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)

Abstract

本申请涉及用于数据处理的分布式计算系统和方法以及存储介质。总体上,本公开描述了用于在分布式计算系统中应用分布式流水线模型以使分布式计算系统的处理节点根据具有在流水线语句内指定的执行拓扑的分布式流水线来处理数据以执行任务的技术。

Description

用于数据处理的分布式计算系统和方法以及存储介质
本申请要求于2020年7月9日提交的美国临时申请第63/049,920号的权益,其全部内容通过引用并入本文。
技术领域
本公开涉及一种计算系统,并且具体地,涉及在计算系统内的分布式处理。
背景技术
在计算设备上执行的节点可以相互连接以形成网络化的分布式计算系统来交换数据和共享资源。在一些示例中,在计算设备上执行的多个节点相互连接以共同执行一个或多个应用程序以执行作业。节点可以包括裸金属服务器、虚拟机、容器、进程和/或具有用于分布式计算系统的数据处理能力的其他执行元件。每个节点可以单独地为分布式计算系统执行各种操作,诸如收集、处理和导出数据,并且节点可以彼此通信以分发处理的数据。
发明内容
通常,本公开描述了用于在分布式计算系统中应用分布式流水线(pipeline)模型以使分布式计算系统的处理节点根据具有在流水线语句内指定的执行拓扑的分布式流水线来处理数据以执行任务的技术。例如,计算设备可以接收用于任务的流水线语句。流水线语句包括多个阶段语句,每个阶段语句描述要执行一个或多个操作的集合的对应的阶段。一个或多个阶段语句还为对应的阶段指定拓扑信息。例如,阶段语句可以指定对应的阶段包括要由分布式计算系统的指定的一个或多个处理节点执行的子流水线。阶段语句可以指定被指定的一个或多个处理节点执行子流水线的一个或多个操作。在一些情况下,阶段语句还指定下一阶段,该阶段将接收用于阶段语句的对应的阶段的输出。在一些情况下,流水线语句是人类可读的文本,以允许运算符容易地在阶段内布置操作,并在流水线语句内布置阶段,以指定具有由分布式计算系统执行的任务的总体执行拓扑的分布式流水线。接收流水线语句的计算设备可以是或可以执行分布式计算系统的处理节点中的一个。在这种情况下,该处理节点可以被称为原点。
计算设备处理流水线语句以使分布式计算系统的处理节点根据在流水线语句内指定的执行拓扑来处理数据。例如,计算设备可以向处理节点输出单独的命令、流水线语句中的至少一些、阶段信息、配置数据或其他控制信息,以使节点根据执行拓扑来处理数据。此后,处理节点开始执行用于在阶段内的操作的运算符,并使用诸如标准流(stdin、stdout)或队列的输入/输出信道将运算符绑定在一起。例如,运算符可以是进程,并且绑定在阶段内的运算符可以被称为子流水线。如果阶段语句将下一阶段指定为对应的阶段的最终操作,则执行对应的阶段的一个或多个处理节点可以将该阶段的最终操作绑定到被配置为执行下一阶段的一个或多个处理节点。处理节点之间的多个阶段的绑定操作可以包括在处理节点之间创建通信信道,该通信信道在诸如套接字的网络上操作。从一个阶段到下一阶段的节点间绑定可以使通过该阶段的最终操作输出的数据扇出(即,由一个处理节点输出并由多个处理节点接收)或扇入(即,由多个处理节点输出并由一个处理节点接收)到下一阶段。
在一个示例中,流水线语句可以包括第一阶段和第二阶段,第一阶段指定要由多个处理节点中的每一个处理节点来处理的一个或多个操作,第二阶段指定要由处理节点中的扇入节点(诸如原点)来处理的一个或多个操作。多个处理节点可以为第一阶段生成第一子流水线,第一子流水线绑定第一阶段的运算符以处理数据以执行对应的操作,然后将运算符的结果发送到第二阶段。作为一个示例,每个处理节点可以为其本地运算符编排队列和接口,并生成发送操作以将其本地运算符的结果发送到扇入节点。扇入节点可生成用于第二阶段的第二子流水线,该第二子流水线绑定第二阶段的运算符并接收由多个处理节点输出的第一阶段的操作的结果。作为一个示例,扇入节点可以为其本地运算符编排队列和接口,以首先接收第一阶段的操作的结果,并且还执行其本地运算符以执行第二阶段的操作。
这里描述的技术可以提供一个或多个技术优点,该技术优点提供至少一个实际应用。例如,技术可以扩展传统的单设备Unix样式的流水线模型以实现分布式流水线模型,其中分布式计算系统的处理节点至少部分地独立地为总体分布式流水线设置子流水线,并根据在流水线语句中指定的执行拓扑处理数据以执行任务。通过自动生成分布式流水线以根据拓扑绑定将处理的操作,技术可以允许用户以相对简单的流水线语句的形式指定用于分布式流水线的所有操作和拓扑,从而避免通常复杂和繁琐的任务,即不仅用将执行的操作配置分布式计算系统的每个节点,而且用节点之间的拓扑的节点间通信信道配置分布式计算系统的每个节点。指定的拓扑可以利用分布式计算系统的处理节点内和处理节点间的并行性,以至少部分地并发地执行针对在流水线语句中的阶段限定的子流水线的操作。
在一些示例中,一种分布式计算系统,包括多个被配置为获得流水线语句的计算设备,流水线语句包括第一阶段语句,该第一阶段语句限定包括第一子流水线的第一阶段,并指定第二阶段作为第一子流水线的结果数据的接收方,流水线语句还包括第二阶段语句,该第二阶段语句将第二阶段限定为包括第二子流水线,其中多个计算设备包括第一处理节点,该第一处理节点被配置为,至少基于通过处理流水线语句生成的第一流水线设置规范,配置第一处理节点中的第一子流水线,以将第一处理节点中的第一子流水线的结果数据发送到第二处理节点,其中多个计算设备包括第二处理节点,该第二处理节点被配置为至少基于通过处理流水线语句生成的第二流水线设置规范,配置第二处理节点中的第二子流水线,并将第一处理节点中的第一子流水线的结果数据输入到第二处理节点中的第二子流水线。
在一些示例中,一种分布式计算系统包括多个被配置为执行相应协作程序的设备,以:接收流水线语句,其中流水线语句包括多个阶段,其中每个阶段包括一个或多个要由多个设备中的一个或多个设备处理的操作,并且其中阶段的一个或多个操作将在不同的拓扑中处理,并且生成分布式流水线的子流水线以绑定阶段的一个或多个操作并从阶段的最终阶段输出结果数据。
在一些示例中,方法包括:由通过网络连接的多个设备中的设备接收包括多个阶段的命令,其中阶段中的每一个包括要由多个设备中的一个或多个设备来处理的一个或多个操作,并且其中阶段中的一个或多个操作将在不同的拓扑中处理;由设备并向多个设备中的其他设备分发命令,使得多个设备中的其他设备各自生成分布式流水线的第一子流水线,其中第一子流水线绑定在不同的拓扑的第一拓扑中处理的一个或多个操作;以及由设备生成分布式流水线的第二子流水线,其中第二子流水线绑定在不同的拓扑的第二拓扑中处理的一个或多个操作。
在一些示例中,方法包括:由包括第一处理节点和第二处理节点的分布式计算系统获得流水线语句,该流水线语句包括第一阶段语句,该第一阶段语句限定包括第一子流水线的第一阶段,并且将第二阶段指定为第一子流水线的结果数据的接收方,该流水线语句还包括第二阶段语句,该第二阶段语句限定包括第二子流水线的第二阶段语句;至少基于从流水线语句生成的第一流水线设置规范,配置第一处理节点中的第一子流水线,以将第一处理节点中的第一子流水线的结果数据发送到第二处理节点;以及至少基于从流水线语句生成的第二流水线设置规范,配置第二处理节点中的第二子流水线,以将第一处理节点中的第一子流水线的结果数据输入到第二处理节点中的第二子流水线。
一个或多个示例的细节在附图和下面的描述中阐述。从描述和附图以及技术方案中,其他特征、目的和优点将是显而易见的。
附图说明
图1是示例分布式计算系统2的框图,该示例分布式计算系统2包括被配置为执行根据公开的技术的一个或多个方面的从流水线语句中生成的分布式流水线的多个处理节点。
图2A-图2B是根据在本公开中技术的一个或多个方面的分布式流水线的示例子流水线的框图。
图3A-图3C是根据公开的技术的一个或多个方面更详细地示出了分布式流水线的示例实施方式的框图。
图4是根据公开的技术的一个或多个方面示出了分布式系统的示例操作的流程图。
图5是根据本公开的一个或多个技术进行操作的示例计算设备的框图。
贯穿附图和文本,相同的参考字符指代相同的元件。
具体实施方式
图1是示例分布式计算系统2的框图,该示例分布式计算系统2包括被配置为执行根据公开的技术的一个或多个方面的从流水线语句中生成的分布式流水线的多个处理节点。分布式流水线包括由处理节点根据流水线语句中指示的拓扑来绑定和处理的操作。
在图1的示例中,分布式计算系统2包括耦合到网络10并经由网络10通信的多个计算设备6A-6N(统称为“设备6”)。网络10可以是局域网(“LAN”)、广域网(“WAN”)、城域网(“MAN”)或其他类型的网络。网络10的设备6可以使用一个或多个基于分组的协议,诸如传输控制协议(TCP)/因特网协议(IP),来交换数据。
设备6中的每一个是真实或虚拟的处理节点,并且执行或表示在分布式计算系统(有时更简单地称为“分布式系统”)内的至少一个处理节点8。设备6中的每一个可以是例如工作站、膝上型计算机、平板电脑、机架式服务器、其他真实或虚拟服务器、容器或虚拟机。在一些情况下,设备6中的任何一个可以表示“物联网”(IoT)设备,诸如相机、传感器、电视、电器等。作为一个示例实施方式,设备6可以表示智能城市电网的设备,其中每个设备被配置为收集和/或处理数据。在该示例中,设备6B-6N可以表示传感器设备(例如,智能电表)以收集和/或处理数据,设备6A可以表示包括传感器设备和中央处理单元(“CPU”)的设备以附加数据、处理数据和/或导出数据。在分布式计算系统2的一些示例中,设备6可以是异构的,因为设备6可以表示具有不同硬件和/或软件的设备。例如,设备6A可以是桌面工作站,而设备6B可以是云计算中心中的机架式服务器,而设备6C可以是无线传感器,等等。设备6的硬件环境也可以是异构的。例如,设备6可以包括具有不同数量的处理核心、ASIC、现场可编程设备、图形处理单元(GPU)或其他处理电路中的任何一个或多个CPU。
在该示例中,设备6A-6N分别包括处理节点8A-8N(统称为“处理节点8”)。处理节点8分别执行程序9A-9N(统称为“程序9”)以处理命令。命令可以表示用于执行总体任务的部分执行步骤/处理。命令被包括在流水线语句20中,并且在一些情况下可以是基于文本的。分布式计算系统2的任务可以包括与命令相对应的一个或多个操作,诸如检索数据、处理数据、导出数据等。命令可以指代由每个处理节点8执行的程序9的特定一个程序。在一些示例中,每个处理节点8表示存储器内存储引擎,该存储引擎管理存储在共享存储器区段或分区中的数据,共享存储器区段或分区可由存储引擎直接访问。在一些情况下,单个设备6可以执行处理节点8的多个实例,例如,作为多个虚拟机。然而,在裸金属服务器的情况下,例如,设备6中的一个可以是处理节点8中的一个,因为该设备直接在硬件上执行程序9。
程序9可以包括命令行界面(CLI)、图形用户界面(GUI)、用于接收和处理基于文本的命令的其他界面,诸如外壳(shell)。程序9可以替代地或附加地包括一系列不同的进程、应用程序、脚本或其他可执行程序,这些进程、应用程序、脚本或其他可执行程序可以被组合在一系列中以执行更大的任务。作为示例,程序9A可以被布置为在设备8A内实现使用流水线指定的更大的任务,并根据单设备Unix样式的流水线模型执行,其中程序9A通过它们的标准流链接在一起,以便程序9A中的一个的输出数据作为输入数据被引导到处理输入数据的另一个程序9A的输入。该程序的输出数据作为输入数据被引导到另一个程序9A的输入,依此类推,直到流水线中的最后一个程序9A输出(例如,到接口、另一个程序或存储器)最终输出数据。程序9还可以指代由一个或多个进程执行的不同的例程、功能、模块或一个或多个操作的其他集合。例如,程序9A可以指代由处理节点8A执行的单个外壳,可以接收布置在流水线中的一个或多个运算符,执行对应的操作,并且布置这些操作的流以实现流水线。
根据这里描述的技术,处理节点8根据从流水线语句20生成的分布式流水线协作地执行程序9。分布式流水线包括从布置在流水线拓扑中的程序9A-9N中选择的程序,这些程序可以包括处理内节点分支和处理间节点分支。在所示的示例中,流水线拓扑包括图1所示的处理间节点分支,作为绑定在不同的处理节点上执行的一个或多个操作的处理间节点流水线。
在图1的示例中,用户4可以向在设备6A的处理节点8A上运行的程序9A提供流水线语句20。最初从用户4接收命令的设备在本文中被称为“源设备”。流水线语句20可以指定要由设备6共同处理的任务,诸如读取数据、过滤、变换、映射、分析或处理数据、排序数据、导出数据或其他操作。
流水线语句20指定多个阶段语句,每个阶段语句描述将执行一个或多个操作的集合的对应的阶段。一个或多个阶段语句还为对应的阶段指定拓扑信息。例如,阶段语句可以指定对应的阶段包括分布式系统的指定的一个或多个节点8。阶段语句可以指定被指定的一个或多个节点8将执行指定的一个或多个操作。在一些情况下,阶段语句还指定下一阶段,该阶段将接收阶段语句的对应的阶段的输出。流水线语句20可以是人类可读的文本,以允许用户4容易地在阶段内布置操作,并在流水线语句20内布置阶段,以指定由分布式计算系统2执行的任务的总体执行拓扑。
接收流水线语句20的节点可以是或者可以执行处理节点8中的一个,如在图1的示例中。在接收流水线语句20的节点是或执行处理节点8中的一个的情况下,该节点(所示示例中的处理节点8A)可以被称为原点节点,或者更简单地说,原点。在一些情况下,不是处理节点8中的一个的单独的设备和/或进程可以接收并处理流水线语句20。在这种情况下,单独的设备和/或进程可以称为控制器,并且控制器可以指定处理节点8中的一个作为原点。通常,原点生成并输出处理流水线语句20的最终结果。但是,该输出可以是经由控制器。原点或控制器表示接收到流水线语句并执行以下描述的操作以编译流水线语句以生成并随后分发流水线设置规范的编译器计算设备,流水线设置规范包括至少部分拓扑信息,用于为在流水线语句20中表示的总体任务在处理节点8中和处理节点8之间配置分布式处理拓扑。然而,该编译器计算设备和操作可以由多个不同的计算设备来执行。在下文中,相对于接收流水线语句20的原点来描述这些操作,但是至少在某些方面,这些操作可以由控制器执行,该控制器将一些操作委托给处理节点8中的一个。
处理节点8A接收流水线语句20。作为响应,处理节点8A处理流水线语句20,以基于流水线语句20的语法确定流水线语句20的一个或多个操作将在不同的处理节点8上处理。例如,流水线语句的语法可以包括多个阶段语句,每个阶段语句指定对应的阶段的一个或多个操作。在图1的示例中,流水线语句20可以包括作为第一阶段(例如,数据收集和处理)的一部分要由处理节点8A-8N中的每一个来处理的一个或多个操作,以及作为第二阶段(例如,数据聚合和导出)的一部分要由原点处理节点8A来处理的一个或多个操作。
流水线语句20可以通过其结构、语法和语义提供拓扑信息,该拓扑信息描述处理节点8或其它分布式网格的集群的配置、分区基数和抽象为模式的运算符排序。由流水线语句20描述的分布式流水线可以是非线性的、循环的、实现反馈回路的、和/或基于处理节点能力(例如,可用硬件和/或软件资源)的。
每个阶段语句可以指定一个或多个处理节点8来执行阶段语句中指定的操作。每个阶段语句可以替代地或附加地指定对应的阶段将相对于其执行的一个或多个数据结构。例如,这样的数据结构可以包括数据库/表分区。
例如,阶段语句可以指示所有处理节点8将执行阶段语句中的操作。指示所有处理节点8的语法元素可以包括“所有节点”或“所有分区”,如下面描述的流水线语句302的第一阶段语句324中的阶段语句,或其他语法元素。通过为阶段指示“在所有分区上”,阶段语句隐含地指示管理“所有分区”中任何一个的每个处理节点应该相对于它正在管理的分区执行该阶段。阶段语句可以包括语法,以明确地指定一个或多个节点,这些节点将相对于明确地指定的一个或多个数据结构执行阶段。例如,阶段语句“阶段阶段C在所有分区上在原点-节点上:(stage stageC on all partitions on origin-node:)”指定原点-节点将相对于所有分区(诸如数据库表的分区)执行阶段的运算符。在前面语句中指定的节点的集合可以不同于语句“阶段阶段C在所有分区上(stage stageC on all partitions)”,后者没有明确地指定任何一个或多个节点,因此隐含地指定了管理“所有分区”中任何一个的所有处理节点。
作为另一示例,阶段语句可以指示单个处理节点以执行阶段语句中的操作。用于指示特定的单个处理节点8的语法元素可以是对特定的处理节点8的引用或名称,或者可以指示原点节点,例如通过使用语法元素“原点”或“原点-节点”来指定原点节点。
每个阶段语句可以具有可用作针对对应阶段的引用的对应阶段标识符。用于限定阶段的语法元素可以包括“阶段[阶段标识符]在[节点]上”,其中[阶段标识符]可以在流水线语句20的其他地方用作对阶段的引用,并且[节点]指定一个或多个处理节点8来执行阶段语句中指定的操作。也就是说,第一阶段语句可以指代被包括在流水线语句20中的第二阶段语句(和对应的阶段)。例如,第一阶段语句可以包括第二阶段语句的阶段标识符,作为在第一阶段语句内的操作,对应于第一阶段语句的第一阶段要输出的结果数据应该被发送到该操作。换言之,第二阶段是由第一阶段生成的结果数据的接收方,并且由第一阶段生成的结果数据是向第二阶段的输入数据。例如,在示例流水线语句302中,第一阶段语句324的阶段语句指代作为第二阶段326的阶段标识符的“输出Csv”(流水线语句302中的阶段“输出Csv”)。实际上,第二阶段326是总体分布式流水线中第一阶段语句324之后的下一个操作。
因为在流水线语句20内的不同阶段语句可以指定不同数量的处理节点,所以流水线语句20可以指定包括由处理节点8在不同阶段之间扇入和/或扇出处理的拓扑。例如,用于流水线语句20中的第一阶段的第一阶段语句可以指定“所有”处理节点8,并且指代由指定单个处理节点8的流水线语句20中的第二阶段语句限定的第二阶段。该流水线语句20指定包括从第一阶段到第二阶段的扇入处理的拓扑。作为另一示例,用于流水线语句20中的第一阶段的第一阶段语句可以指定单个处理节点8,并且指代由指定两个或更多个处理节点8的流水线语句20中的第二阶段语句限定的第二阶段。该流水线语句20指定包括从第一阶段到第二阶段的扇出处理的拓扑。当在流水线语句20中以这种方式限定时,其他示例拓扑,诸如从阶段到阶段的一对一或多对多也是可能的。扇入拓扑可以是有用的,其中许多设备6负责正在处理的相应的数据的集合,例如负责传感器数据的IoT设备、负责数据库分区的分布式数据库服务器或存储引擎等。使用流水线语句20指定扇入拓扑生成收集来自这些许多设备的数据用于在数量减少的设备处进行处理的拓扑。在一些情况下,收集的数据已经用流水线语句20中指定的早期阶段进行了部分处理。
流水线语句20还可以包括指示流水线语句20是流水线语句(诸如“流水线”或“流水线语句”)的语法元素。流水线语句20还可以包括语法元素,或者以其他方式与流水线语句20的标识符相关联,诸如流水线语句20的名称。流水线语句20可以包括指示流水线语句20的开始和结束的语法元素,例如“开始(begin)”和“结束(end)”、其他文本元素、大括号、方括号、圆括号、注释等。流水线语句20可以被输入到CLI中,存储到文件中,由引用流水线语句20的脚本执行,和/或通过其他方式输入到分布式系统2。流水线语句可以是用户输入。流水线语句20可以包括使得流水线语句20能够参数化的语法元素。例如,流水线语句中的语法元素“parameters$table$file”可以使用户能够使用CLI或其他接口调用存储的流水线语句20,并且传递$table和$file参数的值。在这种情况下,接口可以用包括这些参数的流水线语句模板中的每个位置中的值替换参数,并将具有替换的值的流水线语句作为流水线语句20传递到处理节点进行处理。构想了用于将流水线语句模板参数的值传递到处理节点的替代方案,例如,使用参数向量或环境变量。
在一些示例中,流水线语句的语法(syntax)的形式文法(grammar)可以如下所示:
Figure BDA0003154851460000111
Figure BDA0003154851460000121
流水线语句为PIPELINE指定名称<pipelineName>。流水线语句包括begin开始和end结束运算符(在该示例中是BEGIN和END)。阶段的限定(stageDefinition)包括一个或多个可能符合上述文法中的stageDefinition的阶段语句。其他文法也在考虑之中。与本文描述的用于指定流水线拓扑的其他示例文法一样,上述文法中的流水线语句包括指定一个或多个阶段,并且对于每个阶段,该阶段(在一些情况下包括下一阶段)的拓扑以及该阶段的子流水线的运算符的有序列表。
上述文法中指示了阶段的示例拓扑。这些包括:ALL NODES(在所有处理节点上执行阶段的子流水线);ALL PARTITIONS(针对数据集的所有分区执行阶段的子流水线);ALLPARTITIONS ON ORIGIN(针对与原点处理节点相关联的所有分区执行阶段的子流水线);ORIGIN(在原点处理节点上执行阶段的子流水线);SPECIFIC NODE node(在标识的node上执行阶段的子流水线);SPECIFIC PARTITION partition(针对标识的分区partition执行阶段的子流水线);和NODE WITH device(针对具有标识的设备device的节点执行阶段的子流水线)。
具有上述文法的示例语句如下所示,并在本说明书的其他地方进一步详细解释:
Figure BDA0003154851460000122
Figure BDA0003154851460000131
如上所述,其他文法也是可行的。例如,文法的简写形式可以观察并支持Unix流水线(pipe)/过滤器(filter)语法的原始优雅性,并将该语法扩展到分布式并行子流水线的任意有向图中。例如,前面描述的文法的简写形式可以是:
Figure BDA0003154851460000132
具有上述文法的示例语句如下所示,并且是符合前面文法的先前示例的简写重述:
scanOp LineItem|toCsvOp*|writeFileOp“/tmp/LineItem.csv”
在该示例中,编译上述简写流水线语句的程序9检测语义,使得该语义被理解为针对所有分区(*|)执行,并且扇入到原点,类似于pipeline export的两个阶段语句。该简写文法还包括用于指定一个或多个阶段的语法,对于每个阶段,该阶段的拓扑(在一些情况下包括下一阶段)以及该阶段的子流水线的运算符的有序列表。
处理节点8A可以与其他处理节点8B-8N通信以设置分布式流水线12以实现流水线语句20。处理节点8可以协作以生成分布式流水线12。为了生成分布式流水线12,处理节点8不仅绑定程序9之间的操作,而且绑定阶段之间以及跨越处理节点8的操作。
为了设置分布式流水线20,处理节点8A将流水线设置规范22B-22N(统称为“流水线设置规范22”,包括用于处理节点8A的流水线设置规范22A)传送到相应的处理节点8A-8N。在一些情况下,流水线设置规范22中的每一个可以是流水线语句20的重复或流水线语句20中与对应的处理节点8相关的文本的部分重复。在一些情况下,流水线设置规范22中的每一个可以包括由处理节点8A生成的配置命令。配置命令可以包括,例如,作为要由接收任何流水线设置规范22的处理节点8中的一个来执行的操作的列表提供的子流水线,以及用于通过执行子流水线生成的输出的一个或多个目的地处理节点的列表。流水线设置规范22中的每一个可以包括要处理的数据的位置。如已经指出的,流水线设置规范22A可以由处理节点8A来处理,以在处理节点8A上配置一个或多个子流水线用于处理节点8A的执行,以及涉及分布式流水线12的处理节点8A的至少部分的拓扑。以这种方式,处理节点8可以交换关于要执行的总体任务、要由用于完成该任务的操作来处理的数据的位置以及分布式系统2的处理节点8之间的互连拓扑的信息。
通过接收和/或生成流水线设置规范22中的任何一个而获得流水线设置规范22中的任何一个的每个处理节点8可以处理对应的流水线设置规范以配置分布式流水线12的各个方面。在图1的示例中,处理节点8A可以生成分布式流水线12的子流水线,以绑定由处理节点8A执行并由流水线语句20中的阶段语句限定的操作。类似地,处理节点8B可以生成分布式流水线12的子流水线,以绑定要由处理节点8B执行并由流水线语句20中的相同阶段语句限定的操作。类似地,处理节点8C可以生成分布式流水线12的子流水线,以绑定由处理节点8C执行并由流水线语句20中的相同阶段语句限定的操作,等等。如下文进一步描述的,每个处理节点8可以编排队列以存储操作的输入和输出,并生成队列与操作之间的接口。处理节点8可以配置并执行由流水线语句20中的多个不同的阶段语句限定的多个子流水线。
如本文所使用的,术语“子流水线”是指绑定在流水线中并由处理节点8中的任何一个来执行以执行单个阶段的操作的一个或多个操作的集合。子流水线是由流水线语句20限定的总体分布式流水线的子流水线。由流水线语句20的阶段语句限定的阶段的子流水线可以从由流水线语句20中的前一阶段语句限定的阶段的前一子流水线接收输入数据,或者从输入接口或诸如存储器设备的设备接收输入数据。由流水线语句20的阶段语句限定的阶段的子流水线可以将输出数据发送到由流水线语句20中的后续阶段语句限定的另一阶段的后续子流水线,或者发送到诸如CLI或存储器设备的输出接口或设备。虽然阶段指的是由在对应的阶段语句中指定的所有处理节点8执行的子流水线的集合,但子流水线是由单个处理节点8执行的操作的集合。在一些情况下,任何单个处理节点8可以相对于单个处理节点8负责的多个数据分区或流执行并行子流水线。
作为处理任何流水线设置规范22和配置分布式流水线12的一部分,处理节点8还利用通信信道将阶段彼此绑定。通信信道可以包括例如网络套接字、消息系统或总线、远程进程调用、HTTP信道或用于将数据从设备6中的一个传送到设备6中的另一个的其他通信信道。通信信道还可以包括设备内的通信“信道”,例如操作系统流水线或其他消息总线、函数调用、进程间通信等。每个设备6可以被配置有用于设备6的网络信息(例如,IP地址或网络名称)。为了设置与另一设备6的通信信道13,设备6可以使用网络信息创建到另一设备6的套接字。然而,通信信道13的设置可以采取与正在设置的通信信道的类型相称的各种形式。通信信道13在不同对的设备6之间可以是不同的类型,特别是在异构分布式系统2中。
图1包括在阶段之间的通信信道13A-13N,包括在具有第一子流水线的第一阶段与具有第二子流水线的第二阶段之间的设备内通信信道13A,两者都由处理节点8A执行,并且在具有由相应的处理节点8B-8N执行的第一子流水线的第一阶段与具有由处理节点8A执行的第二子流水线的第二阶段之间的设备间通信信道13B-13N。
处理节点8中的任何一个可以配置发送操作,以将其用于子流水线(例如,用于第一阶段)的本地操作的结果发送到另一个或多个处理节点8(在一些情况下包括发送处理节点),以由后续的一个或多个子流水线(例如,用于第二阶段)来处理。在图1的示例中,原点处理节点8A配置发送操作以将执行第一阶段的子流水线的结果24A发送到原点处理节点8A,作为到第二阶段的子流水线的输入,处理节点8C配置发送操作以将执行第一阶段的子流水线的结果24B发送到原点处理节点8A,作为到第二阶段的子流水线的输入,处理节点8C配置发送操作以将执行第一阶段的子流水线的结果24C发送到原点处理节点8A,作为到第二阶段的子流水线的输入,并且依此类推到处理节点8N。发送操作可以表示通过网络10发送数据的TCP/IP套接字操作(例如,send())。
处理节点8中的任何一个可以配置接收操作以接收由其他处理节点8执行或由其自身执行的子流水线(例如,用于第一阶段)的结果,以由处理节点的后续子流水线(例如,用于第二阶段)来处理。在图1的示例中,处理节点8A可以配置分布式流水线12的子流水线用于第二阶段的操作。处理节点8A可以例如编排队列以存储操作的输入和输出,并配置队列与操作之间的接口。处理节点8A还可以配置接收操作以从每个处理节点8接收第一阶段的操作的结果,诸如结果24A-24N(统称为“结果24”)。该接收操作可以由处理节点8A针对每个通信信道13执行,以获得经由通信信道发送的数据。接收操作可以表示用于接收通过网络10发送的数据的TCP/IP套接字操作(例如,recv())。处理节点8将通过接收操作获得的数据引导到下一个子流水线进行处理。
共享用于阶段间通信的通信信道的处理节点8可以在通信信道设置期间进行协调,以确保对通信信道的输入由接收处理节点8来引导到正确的子流水线以用于后续阶段的执行。通信信道可以与诸如端口的标识符相关联,以将通信信道与子流水线相关联。可替代地,经由通信信道发送的数据可以被标记或以其他方式与标识符相关联,以用于将数据与子流水线或与总体分布式流水线12相关联。例如,在后一种技术中,不同的阶段间绑定可以使用相同的套接字。
当处理节点8A从设备6B-6N接收结果24时,处理节点8A可以聚合结果24,包括由处理节点8A本地处理的第一阶段的操作的结果24A。在一些示例中,处理节点8A根据用于后续阶段的子流水线进一步处理聚合结果,以生成最终结果26。处理节点8A可以将最终结果26导出到用户4,例如通过将最终结果26显示到显示终端或将聚合结果写入存储器设备。可替代地或附加地,处理节点8A可以生成发送操作以将结果发送到任何位置,例如发送到如2019年10月30日提交的题为“动态查询优化(Dynamic Query Optimization)”的美国临时专利申请第62/928,108号中所描述的动态查询系统,其全部内容通过引用并入本文。
通过以这种方式处理流水线语句20以配置和执行分布式流水线12,本公开的技术可以扩展传统的单设备Unix样式的流水线模型以实现分布式流水线模型,其中分布式系统2的处理节点8至少部分地独立地为总体分布式流水线12设置子流水线,并根据流水线语句20中指定的执行拓扑处理数据以执行任务。通过自动生成分布式流水线12以根据拓扑绑定要处理的操作,该技术可以允许用户4以相对简单的流水线语句20的形式指定用于分布式流水线的所有操作和拓扑,从而避免通常复杂和繁琐的任务,即不仅用要执行的操作配置分布式系统2的每个处理节点8,而且还用处理节点8之间的拓扑的节点间通信信道13配置分布式系统2的每个处理节点8。
图2A是示出根据本公开中描述的技术的分布式流水线的示例子流水线的框图。图2A的设备202可以表示图1的设备6中的任何一个的示例。在图2A的示例中,设备202包括运行至少一个程序206以接收和处理来自用户和/或另一设备的命令的处理节点204。
在一些情况下,处理节点204包括主要执行数据库相关的操作的存储引擎,并且程序206可以表示存储引擎外壳或其他外壳程序。存储引擎外壳可以提供高级编程语言,该高级编程语言提供基于Unix的外壳,该外壳可以访问设备202的操作系统的服务。程序206中的任何一个还可以包括一个或多个存储引擎实用程序。
程序206可以接收流水线语句或流水线设置规范,对其进行编译,配置子流水线和通信信道,分发请求,并且移动网格上的大量数据以处理数据。程序206可以获得、处理和输出一种或多种不同格式的数据,例如逗号分隔值、二进制、可扩展标记语言(XML)等。
根据本公开的技术,程序206可以提供用于现有作业规范语言或任务限定的优雅且富有表现力的替换,现有作业规范语言或任务限定要求从用户到机器的特定指令以设置分布式流水线。处理节点204可以表示图1的处理节点8中的任何一个,并且程序206可以表示图1的程序9中的任何一个。
在一些示例中,为了编译流水线语句以生成可由处理节点使用以配置状态的流水线设置规范,程序206可以使用描述符。描述符是嵌套的数据结构(例如,在JavaScript对象表示法或XML格式中),它包括用于将流水线语句的语法映射到分布式计算系统内的特定对象的信息。处理节点204可以接收流水线语句并使用描述符对其进行编译以生成阶段,更具体地,以生成流水线设置规范,其中处理节点利用该规范配置子流水线以实现对应的阶段。描述符可以指定:(1)分布式系统或网格作为一组命名的(2)由名称和/或网络地址或用于节点间通信的其他可达性信息指定的处理节点。每个处理节点包括(3)一个或多个单元的集合,其中单元是数据结构/数据子集的分区和用于该单元的可用运算符的集合;或者特定能力(例如GPU设备)和用于该单元的可用运算符的集合。程序206可以编译流水线语句以生成并分发流水线设置规范,以使某些流水线运算符由具有特定能力的处理节点执行,例如GPU、多核处理器、ASIC或其他离散逻辑协处理器、特定程序或其他硬件或软件资源。
如果流水线语句内的阶段语句指示子流水线要在特定的一个或多个节点上执行,例如,SPECIFIC NODE(特定节点)‘node(节点)’,则程序206可以使用描述符将‘node(节点)’映射到描述符中指定的节点中的一个。如果子流水线要相对于ALL PARTITIONS(所有分区)执行,则程序206可以使用描述符将指定分区的所有单元映射到包括分区的节点,并将流水线设置规范分发到这样的节点。如果状态语句指定特定的运算符,则程序206可以使用描述符将运算符映射到用于各种单元的运算符的集合,然后映射到包括具有用于该单元的可用运算符的单元的节点。
通过使用具有自由形式结构的潜在异构网格中的分布式流水线模型,处理节点204可以接收流水线语句,对其进行编译,并与设备202的操作系统合作以配置设备202上对应的分布式流水线的方面。例如,程序206可以编译流水线语句,并通过例如从操作系统请求操作、队列和套接字来自动实例化和配置分布式流水线的子流水线和配置信道。换言之,程序206代表用户编排操作系统以完成流水线语句中表达的用户意图。因此,程序206实际上可以成为用户的高级编程语言,以例如利用潜在的异构计算设备的集合移动并处理大量数据。当设备是异构的时,这可能是特别有利的,因为难以用不同的操作系统、不同的配置和通信机制和以其他方式不同的被管理方式来以其他方式手动地配置设备。
在一些情况下,作为存储引擎操作的处理节点204向数据库平台提供服务。处理节点204例如可以创建表;插入行;读取行;排序行;聚合行;从外部源(诸如流水线、文件、流等)获得数据;压缩文件;执行一些计算;或可能与存储和数据库平台相关联的其他处理功能。示例数据库平台包括Hadoop、Greenplum、MySQL或任何为外部服务提供支持的数据库。
处理节点204可以执行公共数据库操作,例如,联接、分组依据、聚合、排序、排序依据、过滤表达式以及其他数据操作、处理和/或分析。处理节点204可以调用云服务、执行人工智能或机器学习操作、自定义算法或插件、诸如GREP或AWK的标准Unix实用程序-具有已经编译了流水线语句,由程序206向运算符供应操作的自变量,其中每个运算符是动态可编程的。在一些情况下,当执行子流水线时,程序206动态地实例化来自本地或远程库的运算符。以这种方式,程序206不是设备202上的固定程序,而是扩展设备202的能力以提供具有相对简单的流水线语句的动态编程。
在图2A的示例中,用户或另一设备可以向在处理节点204上运行的程序206提供流水线语句。流水线语句可以指定要由设备202在一个或多个阶段语句中执行的一个或多个操作,例如读取数据、分析数据、导出数据或其他操作。在该示例中,流水线语句可以包括阶段语句,该阶段语句指定用于设备202以处理来自表210的数据并将操作的结果导出到设备214的操作208A-208N(统称为“操作(OP)208”)。作为一个特定示例,操作208A可以表示从表210读取数据(例如,行)的扫描操作,操作208B可以表示从扫描操作返回的行中搜索特定文本的搜索操作(例如,grep),操作208C可以表示对搜索操作的结果进行排序的排序操作,以及操作208N可以表示将操作的结果发送到设备214的发送操作。操作208中的每一个可以表示由程序、应用程序或能够处理数据的任何功能运算符来执行的操作。在一些情况下,“操作(operation)”和“运算符(operator运算器)”可以在本文中互换使用。图2A中描述的操作仅仅是示例,并且可以表示其他类型的操作。
处理节点204的程序206可以接收流水线语句或流水线设置规范,并对其进行处理以生成子流水线200以绑定操作208。例如,程序206编排操作208之间的接口。例如,程序206可以配置队列212A-212N(统称为“队列212”),用于将输出数据从作为输入数据的操作传递到子流水线200中的后续操作。在一些示例中,队列212可以将指向存储器缓冲器(例如,存储由操作输出的用于输入到另一操作的数据的存储器位置)的指针排队。可以在本文中描述队列212,并将其视为用于执行下一个操作208的下一个运算符的队列。在一些情况下,程序206可以为一些操作208配置输入接口216A-216N(统称为“输入接口216”)以获得数据,并为一些操作208配置输出接口218A-218N(统称为“输出接口218”)以输出操作208的结果。接口216和218可以表示应用程序编程接口(API)或其他接口。接口可以表示或包括读/写命令、排队或IPC操作或其他操作。在一些情况下,用于操作的运算符之间的消息和数据传递可以经由另一种形式的进程间通信,诸如经由OS流水线。
作为一个示例,扫描操作208A使用输入接口216A从表210读取或获得数据。扫描操作208A使用输出接口218A以将扫描操作208A的结果(或指向存储该结果的存储器位置的指针)输出到队列212A。搜索操作208B使用输入接口216B以从队列212A获得数据,例如获得存储在队列212A中的操作208A的结果。在一些示例中,搜索操作208B可以使用输入接口216B来获得存储在队列212A中的指针,该指针解析为存储操作208A的结果的存储器位置。搜索操作208B搜索数据并经由输出接口218B将搜索操作208B的结果(或指向存储该结果的存储器位置的指针)存储在队列212B中。排序操作208C使用输入接口216C来获得存储在队列212B中的搜索操作208B的结果。排序操作208C对从队列212B获得的数据进行排序,并经由输出接口218C将排序操作208C的结果(或指向存储该结果的存储器位置的指针)存储在队列212N中。导出操作208N使用输入接口216N来获得存储在队列212N中的排序操作208C的结果。发送操作208N然后使用输出接口218N将来自排序操作208C的数据结果发送到设备214,设备214例如可以是存储器设备、网络接口或用户界面。通过这种方式,队列和接口使得操作的结果能够被绑定到子流水线中。在一些情况下,设备214可以是用于将结果数据从子流水线200输出到另一处理节点的通信信道13的示例。以这种方式,程序206可以将子流水线200配置为分布在多个节点之间的分布式流水线的一部分,其中多个阶段在拓扑中绑定在一起。
图2B是示出根据本公开中描述的技术的用于多个设备的分布式流水线的框图。在一些示例中,表(例如,图2A的表210)逻辑上跨越多个设备和数据分区。即,表210的一个分区可以存储到由设备202A管理的设备,表210的另一个分区可以存储到由设备202B管理的设备,并且以此类推。
设备202分别包括处理节点204A-204N(统称为“处理节点204”),每个处理节点都运行至少一个程序206,该程序206可以协作以生成分布式流水线220,以根据由流水线语句限定的拓扑绑定由每个设备202处理的操作。处理节点204可以管理一个或多个分区。
在图2B的示例中,处理节点204N的程序206N可以接收流水线语句,该流水线语句指定处理节点204N要在子流水线中执行一个或多个操作(例如,检索数据、分析数据、导出数据等)。在该示例中,处理节点204N是原点,但原点可以是最初从用户或代理接收流水线语句的处理节点204中的任何一个。
流水线语句可以包括第一阶段语句和第二阶段语句,第一阶段语句指定要由设备202A-202N中的每一个来处理的一个或多个操作作为第一阶段的一部分,第二阶段语句指定由设备202N来处理的一个或多个操作作为第二阶段的一部分。第一阶段语句还可以引用第二阶段语句作为第一阶段的结果的目的地。在该示例中,第一阶段可以包括从分布式表中读取的扫描操作和从表返回的行中搜索特定文本的搜索操作,而命令的第二阶段可以包括转换为逗号分隔值(CSV)操作和导出操作(例如,将数据导出到CSV文件)。
处理节点204N的程序206N可以处理流水线语句,并根据其中的阶段语句的语法确定流水线语句包括根据分布式流水线220在不同阶段中要处理的操作。作为响应,设备202N分别生成流水线设置规范并向设备202A-202C中的每一个分发流水线设置规范,使得每个设备可以配置分布式流水线220的各个方面。
在这种情况下,为了配置分布式流水线220的各个方面,程序206A-206N中的每一个可以在对应的处理节点204中为第一阶段配置分布式流水线220的第一子流水线。例如,程序206A可以编排队列并配置接口以绑定操作208A1-208AN。程序206A还可以配置发送操作(例如,操作208AN),当执行该操作时,该操作将处理节点204A的第一子流水线的本地操作的结果发送到设备202N。实际上,子流水线的最终操作可以是经由通信信道将子流水线的结果作为输入输出到另一个子流水线,或者将结果输出到设备。该结果可以被输入到队列或用于接收子流水线的第一运算符的其他输入接口。
程序206B和206C类似地分别配置用于处理节点204B和204C的第一子流水线。程序206N可以类似地配置用于处理节点204N的第一子流水线,同样如图2B所示。在一些示例中,发送操作可以绑定到或以其他方式使用通信信道以通过网络将信息发送到位于单独设备上的另一处理节点204或发送到处理节点204内的另一子流水线。
设备202N的程序206N可以配置分布式流水线220的第二子流水线。例如,程序206N配置接收操作(例如,操作209N1)以从设备202A-202C接收结果,并且编排队列并生成接口以绑定操作209N1-209NK。执行接收操作209N1的处理节点204N在具有多个处理节点204A-204C(以及在一些情况下具有处理节点204N)的多个通信信道(未示出)上接收第一阶段的结果数据。接收操作208N1可以包括聚合结果数据以在第二阶段的第二子流水线上进行处理。例如,接收操作208N1可以包括由运算符执行,套接字recv()调用以获得缓冲的套接字数据,并将缓冲的套接字数据(通常作为指针)添加到用于操作209N2的下一个运算符的队列。以这种方式,分布式流水线220可以将第一阶段的操作(例如,操作208A1-208AN、操作208B1-208BN、操作208C1-208CN,以及在一些情况下,操作208N1-208NN(未示出))绑定到第二阶段的操作(例如,操作209N1-209NK)。
图3A-图3C是根据公开的技术的一个或多个方面更详细地示出了分布式流水线的示例实施方式的框图。在图3A的示例中,设备的集群实现数据结构(例如,表)的表,例如LineItem306,逻辑上跨越设备202A-202N。LineItem表306可以表示基于事务处理性能委员会(TPC)基准H的数据结构、关系数据库表、键-值对的非关系数据库集合、一个或多个流的集合、或另一数据结构和/或源。在该示例中,表306被划分为一个或多个分区,每个分区由设备202中的一个来管理,并且更具体地,由处理节点204中的一个来管理。因此,表306在逻辑上跨越多个处理节点204和分区310。在该示例中,设备202A管理表分区310A和310B,设备202B管理表分区310C和310D,设备202N管理表分区310Y和310Z。对于每个分区,物理存储器存储的区域,例如,一个或多个缓冲器,可以存储用于该分区的LineItem表306的数据(例如,行)。图3A的示例仅仅是示例并且可以包括任何数量的设备、分区、缓冲器等。例如,任何一个或多个设备202可以执行多个处理节点,并且任何一个或多个处理节点204可以管理一个或多个分区310。
在图3A的示例中,处理节点204中的任何一个的程序可以接收限定多个阶段的流水线语句302。在该示例中,处理节点204A可以接收流水线语句302,该流水线语句302包括用于命名为“scanBuffers”的对应的第一阶段334的第一阶段语句324,并指定对应的第一阶段334将“在所有分区上(on all partitions)”执行,即相对于所有分区310。流水线语句302还包括用于命名为“outputCsv”的对应的第二阶段的第二阶段语句326,并指定对应的第二阶段336将“在原点上(on origin)”执行,即,在该示例中,接收流水线语句302的处理节点204,即处理节点204A。第一阶段语句324(“scanOp LineItem|outputCsv”)中指定的操作将相对于设备202的所有分区310来执行,并且第二阶段语句326(例如,“toCsvOp|writeFileOp‘/tmp/LineItem.csv’”)中的操作要由处理节点204A(例如,接收到流水线语句302并且是“origin”的处理节点)来处理。
处理节点204通过为处理节点上的阶段配置子流水线并将第一阶段334绑定到第二阶段336来协作以生成分布式流水线304以响应作为对第二阶段336的引用的文本“outputCsv”作为第一阶段语句324中的最终操作出现。例如,当处理流水线语句302时,处理节点204A的程序206A可以确定流水线语句302中存在多个阶段。作为响应,程序可以将从流水线语句302生成的流水线设置规范分发到在设备202A-202N上执行的协作程序206的集合。
程序206A-206N每个都可以为对应的处理节点204生成分布式流水线304的子流水线以便为第一阶段334执行,并且原点处理节点204A的程序206A可以为第二阶段336生成分布式流水线304的第二子流水线。
对于第一阶段323的第一子流水线,每个程序206可以编排队列并生成接口以绑定其本地操作。例如,程序206A可以编排一个或多个队列以将扫描操作(scanOP)314A的结果相对于分区310A进行排队,以便输入到下一个运算符,发送316A。程序206A还可以编排一个或多个队列以将扫描操作314B的结果相对于分区310B进行排队,以便输入到下一个运算符,发送316B。程序206A可以生成用于扫描操作314A的输入接口以读取存储在与分区310A相关联的缓冲器312A中的数据,以及用于扫描操作314B的输入接口以读取存储在与分区310B相关联的缓冲器312B中的数据。程序206A可以生成用于扫描操作314A的输出接口,以将扫描操作的结果发送到用于发送316B的一个或多个队列。程序206A可以生成用于扫描操作314B的输出接口,以将扫描操作的结果发送到用于发送316B的一个或多个队列。程序206B和206N可以为对应的缓冲器312、扫描操作314和发送操作316配置类似的队列、运算符和接口。流过缓冲器的数据可以是自描述的、不是自描述的或以其他方式(例如,结构化的、半结构化的、非结构化的)。
发送操作316A-316Z(统称为“发送操作316”)将扫描操作314的结果(其作为总体是第一阶段334的结果)发送到处理节点204A,以处理第二阶段326中的操作。例如,程序206A可以配置发送操作316A以发送扫描操作314A的输出,并配置发送操作316B以发送扫描操作314B的输出。程序206B可以配置发送操作316C以发送扫描操作314C的输出,并配置发送操作316D以发送扫描操作314D的输出。程序206N可以配置发送操作316Y以发送扫描操作314Y的输出,并配置发送操作316Z以发送扫描操作314Z的输出。发送操作316可以是发送操作208N的示例实例。程序206可以配置用于队列的输入接口,发送操作316可以通过该队列从对应的扫描操作314获得结果。程序206可以配置用于发送操作316的运算符与用于相应的接收操作318的相应的运算符之间的通信信道。
对于第二阶段336的第二子流水线,原点处理节点204A的程序206A可以配置接收操作318,以从设备202B-202N中的每一个接收结果。接收操作318可以表示处理节点204A与每个处理节点204之间的多个通信信道的多个接收操作,以接收利用发送操作316发送的数据。
程序206A还可以编排队列并为要由原点处理节点204A来执行的操作生成接口。例如,程序206A可以生成输入接口和队列,接收操作318可以通过该输入接口和队列从处理节点202A-202N获得数据。程序206A可以配置一个或多个缓冲器319以存储从处理节点204中的每一个和输出接口接收到的第一阶段334的结果数据,接收操作318可以通过输出接口将结果数据存储到缓冲器319。
程序206A可以生成输入接口,通过该输入接口,转换为CSV(“toCsvOp”)操作320可以从缓冲器319读取数据。例如,toCsvOp 320可以使用输入接口来读取存储在缓冲器319中的数据(例如,二进制格式)。程序206A可以处理toCsvOp320并将二进制格式的数据转换为CSV格式。程序206A可以将来自toCsvOp 320的结果输出到存储到文件操作(“WriteFileOP”)322(称为“writeFileOp 322”或“导出操作322”)。程序206A可以配置writeFileOp 322可以向其发送CSV的输出接口或输出设备。在这种情况下,输出设备是在第二阶段语句326中指示的文件“/tmp/LineItem.csv”。
图3B是示出根据本公开的技术的基于流水线语句配置的分布式流水线的另一示例实施方式的框图。图3A-图3C的设备202是类似的,但每个图中处理的流水线语句不同,并导致不同的分布式流水线。在图3B的示例中,流水线语句332指定到CSV的转换(“toCsvOp”)被包括在第一阶段而不是第二阶段中,如图3A所示。
在图3B的示例中,设备202A的处理节点204A接收流水线语句332,包括第一阶段语句344(“stage scan scanBuffers on all partitions:scanOp LineItem|toCsvOp|outputCsv”)和第二阶段语句346(“stage outputCsv on origin:writeFileOp“/tmp/LineItem.csv”)。第一阶段语句344中指定的操作(“scanOp LineItem|toCsvOp|outputCsv”)将针对所有分区310来执行,并且第二阶段语句346中指定的操作(“writeFileOp‘/tmp/LineItem.csv’”)要由原点处理节点204A(例如,接收到流水线语句332的处理节点)来执行。
在对应于第一阶段语句344的第一阶段354(阶段“scanBuffers”)中,管理分区310的每个处理节点204针对用分区310来实现的“LineItem”表执行操作“scanOp LineItem|toCsvOp”,并将结果输出到对应于第二阶段语句346并由处理节点204A执行的第二阶段356(阶段“outputCsv”)。处理节点204的程序206通过配置第一阶段354和第二阶段356的子流水线并将第一阶段354的子流水线绑定到第二阶段356的子流水线来协作以生成分布式流水线340。例如,当处理流水线语句332时,程序206A可以确定流水线语句332中存在多个阶段。作为响应,程序206A可以编译流水线语句332,以生成流水线设置规范并将其分发到设备202B-202N的程序206B-206N。
与图3A中的示例一样,处理节点204的程序206配置用于执行指定操作、队列、输入/输出接口和/或通信信道的运算符,以建立分布式流水线340,该分布式流水线340具有用于处理节点的分布式系统的由流水线语句332指定的操作和拓扑。
如上所述,图3B的流水线语句332与流水线语句302的不同之处在于“toCsvOp”操作位于第一阶段语句344而不是第二阶段语句346中。结果,程序206配置分布式流水线340,使得toCsvOp 320位于第一阶段354而不是第二阶段356。这可以提高总体处理速度,并且相对于分布式系统执行流水线语句302所花费的时间,减少了分布式系统执行流水线语句332所花费的时间,因为对于toCsvOp 320操作,由多个处理节点204对分布式流水线340中的分布式数据并行执行,而不是仅由具有收集了所有ScanOp数据结果的原点处理节点204A并行执行,如在分布式流水线304中那样。
该示例演示了本公开的技术的技术优势,由此用户可以根据高级规范语言快速试验并智能地组合流水线语句。在阶段语句内和在阶段语句之间重新排序运算符可以导致完成相同的总体任务的显著的性能改进,并且用户可以通过简单地重新布置在流水线语句内的语法元素来进行这种重新排序,例如,而不是手动配置处理节点内的各个子流水线和处理节点之间的执行拓扑。
图3C是示出分布式流水线的另一个示例实施方式的框图。由程序206配置的分布式流水线360类似于图3B所示的示例分布式流水线340,但是程序206A-206N可以优化分布式流水线360,用于实现流水线语句332以避免通过处理节点204A的发送操作316,因为处理节点204A已经拥有toCsvOp 320A-320B的结果,该结果可以被直接地输出(例如,流水线的输出)到接收318,也由处理节点204A来执行,即从所有处理节点204收集toCsvOp 320的所有结果。
图4是示出根据公开的技术的一个或多个方面的分布式系统的示例操作的流程图。图4是相对于配置并执行图3A中描述的示例分布式流水线304来描述的。
在图4的示例中,处理节点204A接收用于要由多个计算设备(402)处理的分布式流水线304的流水线语句302。流水线语句包括限定对应的阶段的多个阶段语句,每个阶段包括子流水线。处理节点204A编译流水线语句以生成用于处理节点204(403)的流水线设置规范22。处理节点204处理它们获得的流水线设置规范22中的任何一个,以通过实例化和绑定处理节点204内的用于子流水线(404)的操作的运算符来为阶段配置子流水线。此外,基于对阶段语句内其他阶段的引用,生成了流水线设置规范22,以使处理节点204使用通信信道(406)将用于不同阶段的不同子流水线彼此绑定。
一旦以这种方式配置了分布式流水线304,处理节点204通过对阶段执行子流水线来执行分布式流水线304,包括将子流水线的结果数据发送到要由分布式流水线304中的后续子流水线处理的其他处理节点(408)。处理节点204将来自执行分布式流水线304的结果数据例如输出到存储器、接口或其他设备(410)。
图5是根据本公开的一个或多个技术进行操作的示例计算设备500的框图。图5可以示出计算设备的特定示例,该计算设备包括一个或多个处理器502,用于执行图1的设备6、图2A-图3C的设备202或本文描述的任何其他计算设备中的任何一个。在图5的示例中,计算设备500可以表示网络启用的设备,诸如服务器、台式机、膝上型计算机、云计算节点、移动电话、平板电脑、IoT设备,诸如相机、传感器、电视、电器等。计算设备500的其他示例可以用于其他实例。尽管出于示例的目的在图5中示出作为独立的计算设备500,但是计算设备可以是包括用于执行软件指令的一个或多个处理器或其他合适的计算环境的任何组件或系统,并且例如不一定需要包括图5所示的一个或多个元件(例如,通信单元506;以及在一些示例中,诸如存储器设备508的组件可以不在计算设备500中)。
如图5的具体示例所示,计算设备500包括一个或多个处理器502、一个或多个输入设备504、一个或多个通信单元506、一个或多个输出设备512、一个或多个存储器设备508和一个或多个用户界面(UI)设备510。在一个示例中,计算设备500还包括可由计算设备500执行的一个或多个应用程序522和操作系统516。组件502、504、506、508、510和512中的每一个被耦合(物理地、通信地和/或操作地)以用于组件间通信。在一些示例中,通信信道514可以包括系统总线、网络连接、进程间通信数据结构或用于通信数据的任何其他方法。作为一个示例,组件502、504、506、508、510和512可以由一个或多个通信信道514耦合。
在一个示例中,处理器502被配置为实现用于在计算设备500内执行的功能和/或进程指令。例如,处理器502可以能够处理存储在存储器设备508中的指令。处理器502的示例可以包括微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效的离散或集成逻辑电路中的任何一个或多个。
一个或多个存储器设备508可以被配置为在操作期间存储计算设备500内的信息。在一些示例中,存储器设备508被描述为计算机可读存储介质。在一些示例中,存储器设备508是临时存储器,这意味着存储器设备508的主要目的不是长期存储。在一些示例中,存储器设备508被描述为易失性存储器,这意味着当计算机关闭时,存储器设备508不维护存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和本领域已知的其他形式的易失性存储器。在一些示例中,存储器设备508用于存储由处理器502执行的程序指令。在一个示例中,存储器设备508由在计算设备500上运行的软件或应用程序使用,以在程序执行期间临时地存储信息。
在一些示例中,存储器设备508还包括一个或多个计算机可读存储介质。存储器设备508可以被配置为存储比易失性存储器更大量的信息。存储器设备508还可以被配置用于信息的长期存储。在一些示例中,存储器设备508包括非易失性存储元件。这种非易失性存储元件的示例包括磁硬盘、光盘、软盘、闪存或电子可编程存储器(EPROM)或电子可擦除和可编程(EEPROM)存储器的形式。
在一些示例中,计算设备500还包括一个或多个通信单元506。在一个示例中,计算设备500利用通信单元506经由一个或多个网络(例如一个或多个有线/无线/移动网络)与外部设备通信。通信单元506可以包括网络接口卡,例如以太网卡、光收发器、射频收发器或可以发送和接收信息的任何其他类型的设备。这种网络接口的其他示例可以包括3G、4G和Wi-Fi无线电。在一些示例中,计算设备500使用通信单元506以与外部设备通信。
在一个示例中,计算设备500还包括一个或多个用户界面设备510。在一些示例中,用户界面设备510被配置为通过触觉、音频或视频反馈从用户接收输入。用户界面设备510的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自用户的命令的任何其他类型的设备。在一些示例中,存在敏感显示器包括触敏屏幕。
一个或多个输出设备512也可以被包括在计算设备500中。在一些示例中,输出设备512被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备512包括存在敏感显示器、声卡、视频图形适配器卡或用于将信号转换为人类或机器可理解的适当形式的任何其他类型的设备。输出设备512的附加示例包括扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)或能够向用户生成可理解输出的任何其他类型的设备。
计算设备500可以包括操作系统516。在一些示例中,操作系统516控制计算设备500的组件的操作。例如,在一个示例中,操作系统516促进一个或多个应用程序522与处理器502、通信单元506、存储器设备508、输入设备504、用户界面设备510和输出设备512的通信。应用程序522还可以包括可由计算设备500执行的程序指令和/或数据。
处理节点524可以包括用于使计算设备500运行一个或多个程序526以执行在本公开中描述的技术的指令。程序526可以表示图1的程序9或图2-图3C的程序206中的任何一个的示例实例。例如,计算设备500可以经由一个或多个用户界面设备510或一个或多个输入设备504接收流水线语句,并发送流水线语句用于通过处理节点524的程序526的处理。程序526可以包括根据本公开的技术使计算设备500协助配置在分布式系统上的分布式流水线的指令。例如,程序526可以解释流水线语句的各种语法元素,以生成分布式流水线,该分布式流水线绑定用于阶段的处理节点内的子流水线的操作,并且有时经由处理节点之间的通信信道将用于不同阶段的子流水线绑定在一起。例如,程序526可以解释流水线语句的语法并确定流水线语句包括第一阶段和第二阶段,在第一阶段中所有处理节点执行一个或多个操作,在第二阶段中原始节点执行不同的一个或多个操作。程序526可以根据流水线语句生成流水线设置规范,并经由通信单元506其他处理节点分发流水线设置规范。
程序526可以生成用于处理节点524的流水线设置规范。在一些情况下,计算设备500经由通信单元506或输入设备接收由另一处理节点生成的流水线设置规范。在任何情况下,程序526处理流水线设置规范以实例化运算符并使用输入/输出信道将运算符绑定在一起,以生成分布式流水线的子流水线,并且在一些情况下将子流水线绑定到由另一计算设备执行的另一子流水线。
作为一个示例,程序526可以向操作系统516发出低级调用,以分配用于子流水线的本地操作的存储器(例如,队列)。程序526还可以配置操作与队列之间的接口。程序526还可以生成对内核的低级调用,以配置接收运算符以接收由其他设备处理的操作的结果。
一旦配置了任何指定的子流水线和通信信道,程序526可以通过执行用于子流水线的对应的操作的运算符来执行子流水线。以这种方式,计算设备500作为分布式系统的一部分进行操作,以配置并执行分布式流水线。
本公开中描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,描述的技术的各个方面可以在一个或多个处理器内实现,处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效的集成或离散逻辑电路,以及这些组件的任何组合。术语“处理器”或“处理电路”通常可指上述逻辑电路中的任何一个,单独地或与其他逻辑电路组合,或任何其他等效电路。包括硬件的控制单元也可以执行本公开的一个或多个技术。
这样的硬件、软件和固件可以在相同的设备内或在单独的设备内实现,以支持本公开中描述的各种操作和功能。此外,所描述的单元、模块或组件中的任何一个可以一起或单独地实现为离散但可互操作的逻辑设备。将不同的特征描述为模块或单元或引擎旨在强调不同的功能方面,并且不一定暗示这种模块或单元必须由单独的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件来执行,或者集成在公共或单独的硬件或软件组件内。
本公开中描述的技术也可以体现或编码在计算机可读介质中,例如包含指令的计算机可读存储介质。嵌入或编码在计算机可读存储介质中的指令可以使可编程处理器或其他处理器执行该方法,例如,当指令被执行时。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、磁带、磁介质、光学介质或其它计算机可读介质。

Claims (21)

1.一种用于数据处理的分布式计算系统,包括:
多个计算设备,被配置为获得流水线语句,所述流水线语句包括第一阶段语句,所述第一阶段语句限定第一阶段以包括第一子流水线并且将第二阶段指定为所述第一子流水线的结果数据的接收方,所述流水线语句还包括第二阶段语句,所述第二阶段语句限定所述第二阶段以包括第二子流水线,
其中,所述多个计算设备包括第一处理节点,所述第一处理节点被配置为至少基于通过处理所述流水线语句生成的第一流水线设置规范,配置所述第一处理节点中的所述第一子流水线,以将所述第一处理节点中的所述第一子流水线的结果数据发送到第二处理节点,以及
其中,所述多个计算设备包括所述第二处理节点,所述第二处理节点被配置为至少基于通过处理所述流水线语句生成的第二流水线设置规范,配置所述第二处理节点中的所述第二子流水线,并将所述第一处理节点中的所述第一子流水线的结果数据输入到所述第二处理节点中的所述第二子流水线。
2.根据权利要求1所述的分布式计算系统,
其中,所述第一子流水线包括一个或多个第一操作,以及
其中,所述第二子流水线包括一个或多个第二操作。
3.根据权利要求1所述的分布式计算系统,还包括:
编译器计算设备,被配置为处理所述流水线语句以生成所述第一流水线设置规范和所述第二流水线设置规范。
4.根据权利要求3所述的分布式计算系统,其中,所述编译器计算设备包括所述第二处理节点。
5.根据权利要求1所述的分布式计算系统,其中,所述流水线语句包括人类可读的文本。
6.根据权利要求1-5中任一项所述的分布式计算系统,
其中,所述第二阶段语句包括用于所述第二阶段的阶段标识符,以及
其中,为了将第二阶段指定为所述第一子流水线的结果数据的接收方,所述第一阶段语句包括作为所述第一子流水线的操作的所述第二阶段的所述阶段标识符,以及
其中,所述分布式计算系统被配置为基于在所述第一阶段语句中包括的所述第二阶段的所述阶段标识符,生成所述第一流水线设置规范,以配置所述第一处理节点中的所述第一子流水线,以将所述第一处理节点中的所述第一子流水线的结果数据发送到所述第二处理节点。
7.根据权利要求1、2或5中任一项所述的分布式计算系统,
其中,所述多个计算设备包括编译器计算设备,所述编译器计算设备被配置为获得所述流水线语句并处理所述流水线语句以生成所述第一流水线设置规范和所述第二流水线设置规范。
8.根据权利要求7所述的分布式计算系统,其中,所述编译器计算设备包括所述第二处理节点。
9.根据权利要求1-5中任一项所述的分布式计算系统,
其中,所述第一子流水线包括一个或多个第一操作,以及
其中,为了配置所述第一子流水线,所述第一处理节点被配置为实例化用于所述一个或多个第一操作的相应的运算符,并且使用输入/输出信道绑定至少一对所述运算符。
10.根据权利要求1-5中任一项所述的分布式计算系统,
其中,所述第一子流水线包括一个或多个第一操作,
其中,为了配置所述第一子流水线,所述第一处理节点被配置为实例化用于所述一个或多个第一操作的相应的运算符,以及
其中,所述运算符的最终运算符包括发送运算符,用于经由通信信道将所述第一子流水线的结果数据发送到所述第二处理节点。
11.根据权利要求1-5中任一项所述的分布式计算系统,还包括:
第三处理节点,被配置为至少基于从所述流水线语句生成的第三流水线设置规范,配置所述第三处理节点中的所述第一子流水线,以将所述第三处理节点中的所述第一子流水线的结果数据发送到所述第二处理节点。
12.根据权利要求1-5中任一项所述的分布式计算系统,
其中,所述第二处理节点被配置为至少基于从所述流水线语句生成的所述第二流水线设置规范,配置所述第二处理节点中的所述第一子流水线,以将所述第二处理节点中的所述第一子流水线的结果数据作为输入提供给所述第二处理节点中的所述第二子流水线。
13.根据权利要求1-5中任一项所述的分布式计算系统,
其中,所述第一阶段语句限定所述第一阶段以指定执行所述第一子流水线的第一一个或多个处理节点,所述第一一个或多个处理节点包括所述第一处理节点,以及
其中,所述分布式计算系统被配置为基于所述第一阶段语句生成用于所述第一处理节点的所述第一流水线设置规范,以配置所述第一处理节点中的所述第一子流水线。
14.根据权利要求13所述的分布式计算系统,
其中,所述第一阶段语句包括一个或多个语法元素,所述语法元素指定所述第一一个或多个处理节点以执行所述第一子流水线,以及
其中,所述分布式计算系统被配置为基于一个或多个所述语法元素,生成用于配置所述第一一个或多个处理节点中的每一个的流水线设置规范。
15.根据权利要求13所述的分布式计算系统,
其中,所述第二阶段语句限定所述第二阶段以指定执行所述第二子流水线的第二一个或多个处理节点,所述第二一个或多个处理节点包括所述第二处理节点,以及
其中,所述分布式计算系统被配置为基于所述第二阶段语句生成用于所述第二处理节点的所述第二流水线设置规范,以配置所述第二处理节点中的所述第二子流水线。
16.根据权利要求1-5中任一项所述的分布式计算系统,其中,所述第一阶段语句限定所述第一阶段,以指定数据结构的一个或多个第一分区,所述第一子流水线要针对所述第一分区执行。
17.根据权利要求1-5中任一项所述的分布式计算系统,其中,所述第一处理节点和所述第二处理节点中的每一个包括裸金属服务器、虚拟机、容器、外壳程序或存储引擎中的一个。
18.根据权利要求1-5中任一项所述的分布式计算系统,
其中,所述第一处理节点被配置为执行所述第一处理节点中的所述第一子流水线以生成第一结果数据,并经由通信信道将所述第一结果数据发送到所述第二处理节点,
其中,所述第二处理节点被配置为执行所述第二处理节点中的所述第二子流水线,以处理所述第一结果数据,以生成第二结果数据,并输出所述第二结果数据。
19.一种用于数据处理的方法,包括:
由通过网络连接的多个设备中的设备接收包括多个阶段的命令,其中,所述阶段中的每一个包括要由所述多个设备中的一个或多个设备来处理的一个或多个操作,并且其中,所述阶段中的所述一个或多个操作将在不同的拓扑中处理;
由所述设备并向所述多个设备中的其他设备分发所述命令,使得所述多个设备中的其他设备各自生成分布式流水线的第一子流水线,其中,所述第一子流水线绑定在所述不同的拓扑中的第一拓扑中处理的所述一个或多个操作;以及
由所述设备生成所述分布式流水线的第二子流水线,其中,所述第二子流水线绑定在所述不同的拓扑中的第二拓扑中处理的所述一个或多个操作。
20.一种用于数据处理的方法,包括:
由包括第一处理节点和第二处理节点的分布式计算系统获得流水线语句,所述流水线语句包括第一阶段语句,所述第一阶段语句限定第一阶段以包括第一子流水线,并将第二阶段指定为所述第一子流水线的结果数据的接收方,所述流水线语句还包括第二阶段语句,所述第二阶段语句限定所述第二阶段以包括第二子流水线;
至少基于从所述流水线语句生成的第一流水线设置规范,配置所述第一处理节点中的所述第一子流水线,以将所述第一处理节点中的所述第一子流水线的结果数据发送到第二处理节点;以及
至少基于从所述流水线语句生成的第二流水线设置规范,配置所述第二处理节点中的所述第二子流水线,以将所述第一处理节点中的所述第一子流水线的结果数据输入到所述第二处理节点中的所述第二子流水线。
21.一种计算机可读存储介质,所述计算机可读存储介质编码有指令,所述指令使一个或多个可编程处理器实现根据权利要求1-18中任一项所述的分布式计算系统。
CN202110776076.3A 2020-07-09 2021-07-08 用于数据处理的分布式计算系统和方法以及存储介质 Pending CN113918223A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063049920P 2020-07-09 2020-07-09
US63/049,920 2020-07-09
US17/179,149 US11848980B2 (en) 2020-07-09 2021-02-18 Distributed pipeline configuration in a distributed computing system
US17/179,149 2021-02-18

Publications (1)

Publication Number Publication Date
CN113918223A true CN113918223A (zh) 2022-01-11

Family

ID=79173222

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110776076.3A Pending CN113918223A (zh) 2020-07-09 2021-07-08 用于数据处理的分布式计算系统和方法以及存储介质

Country Status (3)

Country Link
US (1) US11848980B2 (zh)
CN (1) CN113918223A (zh)
WO (1) WO2022009006A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093161A (zh) * 2023-10-19 2023-11-21 之江实验室 一种基于光收发芯片的内存管理系统、方法、介质及设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4261684A1 (en) * 2022-04-14 2023-10-18 Leica Microsystems CMS GmbH A multi-core processor system and a computer-implemented method for image processing
WO2023198451A1 (en) * 2022-04-14 2023-10-19 Leica Microsystems Cms Gmbh A multi-core processor system and a computer-implemented method for image processing

Family Cites Families (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US7200138B2 (en) * 2000-03-01 2007-04-03 Realtek Semiconductor Corporation Physical medium dependent sub-system with shared resources for multiport xDSL system
US20130111188A9 (en) * 2003-07-24 2013-05-02 Martin Vorbach Low latency massive parallel data processing device
US7284092B2 (en) * 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US7664928B1 (en) * 2005-01-19 2010-02-16 Tensilica, Inc. Method and apparatus for providing user-defined interfaces for a configurable processor
US20090031104A1 (en) * 2005-02-07 2009-01-29 Martin Vorbach Low Latency Massive Parallel Data Processing Device
US8194690B1 (en) * 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
US8429384B2 (en) * 2006-07-11 2013-04-23 Harman International Industries, Incorporated Interleaved hardware multithreading processor architecture
US8074053B2 (en) * 2006-07-11 2011-12-06 Harman International Industries, Incorporated Dynamic instruction and data updating architecture
US8001540B2 (en) * 2006-08-08 2011-08-16 International Business Machines Corporation System, method and program product for control of sequencing of data processing by different programs
US20080320284A1 (en) * 2007-06-21 2008-12-25 Jason Grzywna Virtual serial-stream processor
US8615770B1 (en) * 2008-08-29 2013-12-24 Nvidia Corporation System and method for dynamically spawning thread blocks within multi-threaded processing systems
GB0907559D0 (en) * 2009-05-01 2009-06-10 Optos Plc Improvements relating to processing unit instruction sets
US8495643B2 (en) * 2009-06-30 2013-07-23 International Business Machines Corporation Message selection based on time stamp and priority in a multithreaded processor
US8555265B2 (en) * 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US9680750B2 (en) * 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
CN102223418B (zh) 2011-06-27 2013-08-21 中国科学院计算技术研究所 基于动态流水线网络服务器的分布式Cache系统及其工作方法
EP3407547B1 (en) * 2011-08-17 2020-01-22 Nicira, Inc. Hierarchical controller clusters for interconnecting different logical domains
US9595074B2 (en) * 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
US8990827B2 (en) * 2011-10-11 2015-03-24 Nec Laboratories America, Inc. Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels
CA2887022C (en) * 2012-10-23 2021-05-04 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US9424228B2 (en) * 2012-11-01 2016-08-23 Ezchip Technologies Ltd. High performance, scalable multi chip interconnect
US9450881B2 (en) * 2013-07-09 2016-09-20 Intel Corporation Method and system for traffic metering to limit a received packet rate
US10382527B2 (en) * 2013-10-16 2019-08-13 International Business Machines Corporation Performing optimized collective operations in an irregular subcommunicator of compute nodes in a parallel computer
JP6311164B2 (ja) * 2013-12-23 2018-04-18 インテル・コーポレーション 統合コンポーネント相互接続
US9612840B2 (en) * 2014-03-28 2017-04-04 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline
US9712606B2 (en) * 2014-05-21 2017-07-18 Nasdaq Technology Ab Efficient and reliable host distribution of totally ordered global state
US10079779B2 (en) * 2015-01-30 2018-09-18 Nicira, Inc. Implementing logical router uplinks
US10162405B2 (en) * 2015-06-04 2018-12-25 Intel Corporation Graphics processor power management contexts and sequential control loops
US10719321B2 (en) * 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11016770B2 (en) * 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11126433B2 (en) * 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10768936B2 (en) * 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
AU2016273909B2 (en) * 2015-12-16 2018-03-08 Accenture Global Solutions Limited Data pipeline architecture for cloud processing of structured and unstructured data
US10334058B2 (en) * 2015-12-21 2019-06-25 Amazon Technologies, Inc. Matching and enforcing deployment pipeline configurations with live pipeline templates
US20170178384A1 (en) * 2015-12-21 2017-06-22 Jayashree Venkatesh Increasing Thread Payload for 3D Pipeline with Wider SIMD Execution Width
US10204396B2 (en) * 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10949251B2 (en) * 2016-04-01 2021-03-16 Intel Corporation System and method to accelerate reduce operations in graphics processor
US20170300361A1 (en) * 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization
US20170364844A1 (en) * 2016-06-16 2017-12-21 Vmware, Inc. Automated-application-release-management subsystem that supports insertion of advice-based crosscutting functionality into pipelines
JP7034924B2 (ja) * 2016-08-22 2022-03-14 オラクル・インターナショナル・コーポレイション 動的系統トラッキング、再構成、およびライフサイクル管理のためのシステムおよび方法
US10296327B2 (en) * 2016-10-15 2019-05-21 Vmware, Inc. Methods and systems that share resources among multiple, interdependent release pipelines
US11301262B2 (en) * 2016-11-16 2022-04-12 Vmware, Inc. Policy enabled application-release-management subsystem
US10452426B2 (en) * 2016-11-16 2019-10-22 Vmware, Inc. Methods and systems for configuration-file inheritance
US10474674B2 (en) * 2017-01-31 2019-11-12 Splunk Inc. Using an inverted index in a pipelined search query to determine a set of event data that is further limited by filtering and/or processing of subsequent query pipestages
US10761896B2 (en) * 2017-02-22 2020-09-01 Cisco Technology, Inc. System and method of lightweight decentralized NFV orchestration
US10310861B2 (en) * 2017-04-01 2019-06-04 Intel Corporation Mechanism for scheduling threads on a multiprocessor
EP3607494A4 (en) * 2017-04-07 2020-11-11 Intel Corporation SYSTEMS AND METHODS FOR PROVIDING DEEP STACKED AUTOMATED PROGRAM SYNTHESIS
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
US11360808B2 (en) * 2017-04-09 2022-06-14 Intel Corporation Efficient thread group scheduling
US10282812B2 (en) * 2017-04-09 2019-05-07 Intel Corporation Page faulting and selective preemption
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US11094029B2 (en) * 2017-04-10 2021-08-17 Intel Corporation Abstraction layers for scalable distributed machine learning
US10192351B2 (en) * 2017-04-17 2019-01-29 Intel Corporation Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method
US10672175B2 (en) * 2017-04-17 2020-06-02 Intel Corporation Order independent asynchronous compute and streaming for graphics
US10290141B2 (en) * 2017-04-17 2019-05-14 Intel Corporation Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices
US10719902B2 (en) * 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US10824938B2 (en) * 2017-04-24 2020-11-03 Intel Corporation Specialized fixed function hardware for efficient convolution
US10497084B2 (en) * 2017-04-24 2019-12-03 Intel Corporation Efficient sharing and compression expansion of data across processing systems
US10402933B2 (en) * 2017-04-24 2019-09-03 Intel Corporation Adaptive smart grid-client device computation distribution with grid guide optimization
US10417734B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks
US11093822B2 (en) * 2017-04-28 2021-08-17 Intel Corporation Variable precision and mix type representation of multiple layers in a network
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US20180314933A1 (en) * 2017-04-28 2018-11-01 Intel Corporation Accelerated decision trees on data center clusters
US10410115B2 (en) * 2017-04-28 2019-09-10 Intel Corporation Autonomous machines through cloud, error corrections, and predictions
US10346166B2 (en) * 2017-04-28 2019-07-09 Intel Corporation Intelligent thread dispatch and vectorization of atomic operations
US11488008B2 (en) * 2017-05-05 2022-11-01 Intel Corporation Hardware implemented point to point communication primitives for machine learning
US11373266B2 (en) * 2017-05-05 2022-06-28 Intel Corporation Data parallelism and halo exchange for distributed machine learning
US11106998B2 (en) * 2017-05-10 2021-08-31 Petuum Inc System with hybrid communication strategy for large-scale distributed deep learning
US10733010B2 (en) * 2017-05-11 2020-08-04 Vmware, Inc. Methods and systems that verify endpoints and external tasks in release-pipeline prior to execution
US10057373B1 (en) * 2017-05-15 2018-08-21 Palantir Technologies Inc. Adaptive computation and faster computer operation
US10698625B2 (en) * 2017-05-15 2020-06-30 Accenture Global Solutions Limited Data pipeline architecture for analytics processing stack
US10462213B2 (en) * 2017-05-18 2019-10-29 Bank Of America Corporation Block chain encoding with fair delay for distributed network devices
US10572255B2 (en) * 2017-06-29 2020-02-25 Texas Instruments Incorporated Stream engine with element promotion and decimation modes
WO2019051658A1 (en) * 2017-09-13 2019-03-21 Intel Corporation INCREMENTAL NETWORK QUANTIFICATION
US10445098B2 (en) * 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
GB2569274B (en) * 2017-10-20 2020-07-15 Graphcore Ltd Synchronization amongst processor tiles
US11710028B2 (en) * 2017-12-30 2023-07-25 Intel Corporation Efficient convolution in machine learning environments
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11016802B2 (en) * 2018-01-26 2021-05-25 Nvidia Corporation Techniques for ordering atomic operations
US11178213B2 (en) 2018-02-28 2021-11-16 Vmware, Inc. Automated configuration based deployment of stream processing pipeline
US10812332B2 (en) * 2018-02-28 2020-10-20 Vmware Inc. Impartial buffering in stream processing
US10831550B2 (en) * 2018-03-27 2020-11-10 Oracle Financial Services Software Limited Computerized control of execution pipelines
US10678444B2 (en) * 2018-04-02 2020-06-09 Cisco Technology, Inc. Optimizing serverless computing using a distributed computing framework
US10826786B2 (en) * 2018-04-11 2020-11-03 Nvidia Corporation Fast multi-scale point cloud registration with a hierarchical gaussian mixture
US10810064B2 (en) * 2018-04-27 2020-10-20 Nasdaq Technology Ab Publish-subscribe framework for application execution
US10795729B2 (en) * 2018-04-28 2020-10-06 Cambricon Technologies Corporation Limited Data accelerated processing system
US11363093B2 (en) * 2018-05-01 2022-06-14 Oracle International Corporation Multi-stage pipelining for distributed graph processing
US11256548B2 (en) * 2018-05-03 2022-02-22 LGS Innovations LLC Systems and methods for cloud computing data processing
US10685283B2 (en) 2018-06-26 2020-06-16 Sas Institute Inc. Demand classification based pipeline system for time-series data forecasting
CN109086407A (zh) 2018-08-01 2018-12-25 华东师范大学 面向分布式内存数据库的多流水线调度方法
US11138009B2 (en) * 2018-08-10 2021-10-05 Nvidia Corporation Robust, efficient multiprocessor-coprocessor interface
US11151769B2 (en) * 2018-08-10 2021-10-19 Intel Corporation Graphics architecture including a neural network pipeline
US11061942B2 (en) 2018-09-07 2021-07-13 Graywell, Inc. Unstructured data fusion by content-aware concurrent data processing pipeline
US11093250B2 (en) * 2018-09-29 2021-08-17 Intel Corporation Apparatus and method for gang invariant operation optimizations using dynamic evaluation
US10725942B2 (en) * 2018-11-09 2020-07-28 Xilinx, Inc. Streaming platform architecture for inter-kernel circuit communication for an integrated circuit
US11212079B2 (en) * 2018-11-12 2021-12-28 Cisco Technology, Inc. Seamless rotation of keys for data analytics and machine learning on encrypted data
US10929175B2 (en) * 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
US20200160185A1 (en) * 2018-11-21 2020-05-21 Nvidia Corporation Pruning neural networks that include element-wise operations
US10776164B2 (en) * 2018-11-30 2020-09-15 EMC IP Holding Company LLC Dynamic composition of data pipeline in accelerator-as-a-service computing environment
US20200175396A1 (en) * 2018-12-04 2020-06-04 Intel Corporation Deterministic neural networking interoperability
US20200193221A1 (en) * 2018-12-17 2020-06-18 At&T Intellectual Property I, L.P. Systems, Methods, and Computer-Readable Storage Media for Designing, Creating, and Deploying Composite Machine Learning Applications in Cloud Environments
US20200204618A1 (en) * 2018-12-24 2020-06-25 Nimbella Corp. Method and system for addressing and executing serverless functions
US10762668B2 (en) * 2018-12-28 2020-09-01 Intel Corporation Context-aware compression with quantization of hierarchical transform matrices
US10832371B2 (en) * 2018-12-28 2020-11-10 Intel Corporation Unified architecture for BVH construction based on hardware pre-sorting and a parallel, reconfigurable clustering array
US10762686B2 (en) * 2018-12-28 2020-09-01 Intel Corporation Apparatus and method for a hierarchical beam tracer
US11221876B2 (en) * 2018-12-30 2022-01-11 Paypal, Inc. Scheduling applications in CPU and GPU hybrid environments
US11144417B2 (en) * 2018-12-31 2021-10-12 Texas Instruments Incorporated Debug for multi-threaded processing
US10635431B1 (en) * 2019-01-09 2020-04-28 Bank Of America Corporation Dynamically updating source code from a cloud environment
US11144286B2 (en) * 2019-01-14 2021-10-12 Microsoft Technology Licensing, Llc Generating synchronous digital circuits from source code constructs that map to circuit implementations
GB2582144B (en) * 2019-03-11 2021-03-10 Graphcore Ltd Execution Unit Comprising Processing Pipeline for Evaluating a Plurality of Types of Functions
CN109918391B (zh) 2019-03-12 2020-09-22 威讯柏睿数据科技(北京)有限公司 一种流式事务处理方法及系统
US11281496B2 (en) * 2019-03-15 2022-03-22 Intel Corporation Thread group scheduling for graphics processing
US11816500B2 (en) * 2019-03-15 2023-11-14 Intel Corporation Systems and methods for synchronization of multi-thread lanes
US11119820B2 (en) * 2019-03-15 2021-09-14 Intel Corporation Local memory sharing between kernels
EP3938890A1 (en) * 2019-03-15 2022-01-19 Intel Corporation Architecture for block sparse operations on a systolic array
US11036545B2 (en) * 2019-03-15 2021-06-15 Intel Corporation Graphics systems and methods for accelerating synchronization using fine grain dependency check and scheduling optimizations based on available shared memory space
US11640537B2 (en) * 2019-04-08 2023-05-02 Intel Corporation Mechanism to perform non-linear functions in a machine learning accelerator
US11238048B1 (en) * 2019-07-16 2022-02-01 Splunk Inc. Guided creation interface for streaming data processing pipelines
TWI768547B (zh) * 2020-11-18 2022-06-21 瑞昱半導體股份有限公司 管線式電腦系統與指令處理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093161A (zh) * 2023-10-19 2023-11-21 之江实验室 一种基于光收发芯片的内存管理系统、方法、介质及设备
CN117093161B (zh) * 2023-10-19 2024-01-26 之江实验室 一种基于光收发芯片的内存管理系统、方法、介质及设备

Also Published As

Publication number Publication date
US20220014584A1 (en) 2022-01-13
WO2022009006A1 (en) 2022-01-13
US11848980B2 (en) 2023-12-19

Similar Documents

Publication Publication Date Title
CN113918223A (zh) 用于数据处理的分布式计算系统和方法以及存储介质
CN108510082B (zh) 对机器学习模型进行处理的方法及装置
Scolati et al. A Containerized Big Data Streaming Architecture for Edge Cloud Computing on Clustered Single-board Devices.
US10061858B2 (en) Method and apparatus for processing exploding data stream
US9323619B2 (en) Deploying parallel data integration applications to distributed computing environments
US7257816B2 (en) Digital data processing apparatus and methods with dynamically configurable application execution on accelerated resources
Alpdemir et al. Service-based distributed querying on the grid
US20220138195A1 (en) User defined functions for database query languages based on call-back functions
WO2020233584A1 (zh) 混合语言任务执行方法、装置及集群
JP2019505885A (ja) サブグラフインターフェースの生成
WO2022052973A1 (zh) 一种模型处理方法、装置、设备及计算机可读存储介质
EP4049131A1 (en) Modifying program modules in running applications
WO2023124543A1 (zh) 用于大数据的数据处理方法和数据处理装置
CN112860238A (zh) 一种数据处理方法、装置、计算机设备及存储介质
US20150356131A1 (en) Accessing an external table in parallel to execute a query
Kamburugamuve et al. Twister: Net-communication library for big data processing in hpc and cloud environments
CN113448678A (zh) 应用信息生成方法、部署方法及装置、系统、存储介质
Cai et al. Deployment and verification of machine learning tool-chain based on kubernetes distributed clusters: This paper is submitted for possible publication in the special issue on high performance distributed computing
US20230418681A1 (en) Intelligent layer derived deployment of containers
Lienen et al. fpgaDDS: An Intra-FPGA Data Distribution Service for ROS 2 Robotics Applications
Cieslik et al. PaPy: Parallel and distributed data-processing pipelines in Python
Chan et al. High-level abstractions for message-passing parallel programming
US9442782B2 (en) Systems and methods of interface description language (IDL) compilers
WO2024093745A1 (zh) 一种容器集群管理方法及装置
CN113312429B (zh) 区块链中的智能合约管理系统、方法、介质和产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40067472

Country of ref document: HK