CN105190543B - 针对循环数据流的基于可到达性的协调 - Google Patents
针对循环数据流的基于可到达性的协调 Download PDFInfo
- Publication number
- CN105190543B CN105190543B CN201380066229.9A CN201380066229A CN105190543B CN 105190543 B CN105190543 B CN 105190543B CN 201380066229 A CN201380066229 A CN 201380066229A CN 105190543 B CN105190543 B CN 105190543B
- Authority
- CN
- China
- Prior art keywords
- data
- vertex
- data flow
- item
- time
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
各实施例提供了与涉及现实世界***(诸如社交网络***、路标/GPS***等)的数据的大规模集合一起工作的技术。该技术使用协调时钟协议执行增量、迭代和交互并行计算,其应用于在循环图形中调度计算和管理诸如存储器和网络资源等的资源,循环图形包括从在数据集合中的差异上执行计算的差分数据流模型得到的那些。
Description
背景技术
大多数数据流计算是非循环的,意味着图形中的操作可以按线性次序排序使得每个操作的输入来自“前一次”操作的输出。非循环图形相对容易调度,因为按线性次序运行操作确保了全部操作使它们的输入可用。然而,另一方面,循环图形难以调度,因为它们不需要是确保它们的输入在操作运行前被完全形成的顶点上的次序;这样的图形通常需要问题相关的知识来有效地调度。
在典型的增量数据流***中,增量数据流***被优化以处理对输入的小的改变。因此,对于针对最初数据的改变,增量数据流***处理每个改变来产生输出。同时,对于典型的迭代数据流***,迭代数据流***可使用增量数据流程序的输出并将其馈送返回到其输入,以产生有效的固定点的循环。最后,如果它汇聚,所馈送回的对输入的改变将不对输出作出改变,并且迭代数据流***将终止。然而,传统增量和迭代计算在输入发生改变时不兼容。在这样的情形中,对输入的每个改变需要被迭代数据流***重新处理。即,随着数据集合随时间改变,传统***必须再次重新重头运行程序,而不考虑程序是否被表示为数据流图形,以数据并行方式执行、声明性地写等。
发明内容
在此描述的技术高效地执行增量、迭代和交互并行计算,其应用于在循环图形中调度计算和管理诸如存储器和网络资源等的资源,循环图形包括从在数据集合中的差异上执行计算的差分数据流模型得到的那些。在此讨论的技术运用在使用协调时钟协议的分布式设置中。
提供本发明内容是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。例如术语“技术”可指代上述上下文和通篇文档中所准许的***、方法、计算机可读指令、模块、算法、硬件逻辑(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑器件(CPLD))和/或技术。
附图说明
参考附图来描述详细描述。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同的附图中使用相同的附图标记指示类似或相同的项。
图1是描绘针对循环数据流的基于可到达性的协调的各实施例可在其中操作的示例环境的框图。
图2是根据至少一个实施例,计算具有针对循环数据流的基于可到达性的协调的图形的相连接的组件的示例程序。
图3是根据各实施例的示出示例过程的数据流图形,该示例过程依照针对循环数据流的基于可到达性的协调用于执行相连接的组件。
图4是根据各实施例的描绘示例体系结构的框图,该示例体系结构可执行针对循环数据流的基于可到达性的协调的操作。
图5是根据一些实施例的描绘示例程序的图,该程序用于针对循环数据流的基于可到达性的协调。
图6A、6B、6C和6D是根据各实施例的,示出采用协调时钟的示例***中的信息流状态图。
图7A和7B是根据各实施例的,示出采用协调时钟的示例循环***中的信息流的状态图。
图8是根据各实施例的,描绘协调时钟的示例应用以标识可运行工作的图。
图9是根据各实施例,描绘示例过程的图,该过程用于针对循环数据流的基于可到达性的协调。
具体实施方式
概览
各实施例提供适应于解决在分布式迭代计算中遇到的至少三个类型的问题的技术。如在此进一步描述的,各实施例提供了协议,通过该协议服务将:1)可删除分布式终端,2)可控制资源调度,以及3)可控制垃圾收集和/或压缩。因此,在至少一个实施例中,针对循环数据流的基于可到达性的协调是在单机/多处理器环境中实现。同时,在至少一个实施例中,针对循环数据流的基于可到达性的协调在网络分布式环境中实现。网络分布式环境可包括一个或多个类型的计算资源,计算资源的类型可包括计算、联网和/或存储设备。网络分布式环境还可被称为云计算环境。
针对循环数据流的基于可到达性的协调支持实现差分数据流模式的高效增量和迭代数据并行计算。各实施例采用分散式协调时钟协议,通过该协议分布式处理器可通过循环数据流图形来高效跟踪全局计算的进程。该进程信息允许处理器作出有效的本地调度决策、通过压缩更新来回收存储,以及并行地处理输入数据的多个时期而不合并结果。
针对循环数据流的基于可到达性的协调技术能够高效处理数据,包括非迭代或复杂迭代算法,其可被编程以在可缩放分布式实现中随新输入的到达而自动更新。针对循环数据流的基于可到达性的协调有效地执行增量和/或批量迭代的处理任务。在此描述的技术可像包括多个嵌套循环的强力连接的组件那样计算并增量地更新分析的输出。这些技术使用处理器的群集跨现实世界输入流获得这些任务的子第二更新等待时间。
涉及现实世界***(诸如社交网络***或地图/GPS***)的数据的大规模集合上的计算,可被建模成数据流图形。在各实现中,在此描述的针对循环数据流的基于可到达性的协调在处理随时间改变的数据时包括以下方案:数据流绘图、声明性编程,和数据并行性。
程序的数据流图形表示是影响并发性和流水线化的一种途径。因为一个函数(例如,数据流顶点)的输出是下一个的输入,它们一被上游顶点产生就用作下游顶点处理输入,因此,两个顶点可以同时执行。声明性计算机编程是用于数据流类型执行的另一方法,它可被计算机编程人员采用来指定算子之间的依赖性,所述算子用于清除从程序到数据流图形的映射。数据并行化是另一种方法,它提供了在数据流图形中并行运行每个顶点的多个副本的一种途径。对于合适的算法,将数据切片成各分区使得每个并行顶点实例可独立处理其自己的分区是可能的。因此,在此描述的针对循环数据流的基于可到达性的协调可包括:将计算建模为数据流图形,使用声明性编程语言来写用于计算的程序,并将该计算用数据并行性进行并行化,以及管理涉及随时间改变的现实世界***的数据的集合。
在此描述的技术实现能够增量地更新包括任意嵌套迭代的大规模数据并行计算的可缩放分布式执行平台。例如,随着从24小时滑动窗获取连续到来的推文(tweet),该技术能够实时地计算并维持推特(TWITTER)的消息收发图形的相连的组件结构。***采用经由基于可能循环的图形(其顶点表示版本化的集合上的操作)上的数据流的可缩放分布式实现的差分数据流计算模式。不同于现有的批量***,其中每个顶点被期望运行若干秒或分钟,所描述的技术采用较细粒度通信和协调技术,其中许多顶点被期望运行若干微妙且一些根本不运行。在此描述的技术设计协调的开销的实质减小,同时维持精确的分布式状态信息。状态信息包括,***必须接下来调度数据流图形中的哪个顶点。***可根据调度来执行工作,以通过顶点执行时间中的多个数量级的减少来有助于***性能。在一些实施例中,协调时钟可管理计算,其中数据流图形可以是不是功能上的数据并行的意义上的“算子”的合成的顶点。
所描述的框架和分布式协议概述了以允许独立处理器作出关于调度和资源管理的有效本地决策的方式的差分数据流计算的过程。在各实施例中,在不同顶点版本之间的差分数据流图形次序依赖性的结构,允许***确定那个版本可继续接收更新。轻量的非阻挡协议允许处理器交换关于处理动作的最小的量的信息,以便使***中的其它处理器保持当前关于***的待办更新。所采用的差分数据流方法使用输入记录的小的集合进行细粒度的顶点调用。以此方式,***展示批量处理器的高的吞吐量,同时响应于输入中的改变,并用通常与流处理器相关联的低等待时间在处理器之间传播更新。参考图1-8进一步描述各个实施例。
说明性环境
图1显示了其中针对循环数据流的基于可到达性的协调的各实施例可操作的示例环境100。在一些实施例中,环境100的各个设备和/或组件包括可相互通信以及经由一个或多个网络104与外部设备通信的分布式计算资源102。
例如,网络104可包括诸如因特网之类的公共网络、诸如机构和/或个人内联网的专用网络、或专用和公共网络的某种组合。网络104还可包括任何类型的有线和/或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMax网络、移动通信网络(如3G、4G等等)或它们的任意组合。网络104可利用通信协议,包括基于分组的和/或基于数据报的协议,如网际协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。而且,网络104还可包括便于网络通信和/或形成网络的硬件基础的若干设备,如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干设备等等。
在一些实施例中,网络104可进一步包括能够实现到无线网络的连接的设备,诸如无线接入点(WAP)。各实施例支持通过WAP的连接性,WAP经由各个电磁频率(例如,无线电频率)来发送和接收数据,包括支持电气和电子工程师协会(IEEE)802.11标准(例如,802.11g、802.11n等)和其他标准的WAP。
在各个实施例中,分布式计算资源102包括设备106(1)-106(Z).各实施例支持以下场景:其中设备106可包括一个或多个可在群集中操作或在其他分组的配置中操作以共享资源、平衡负载、提升性能、提供故障转移支持或冗余或出于其他目的的计算设备。虽然示出为桌面计算机,但是设备106可包括多种多样的设备类型并不限于特定类型的设备。设备106可包括任何类型的具有连接到存储器110的一个或多个处理器108的计算设备。设备106可包括但不限于:台式计算机、服务器计算机、个人计算机、膝上型计算机、平板计算机、可穿戴计算机、植入计算设备、电信设备、车载计算机、启用网络的电视、瘦客户机、终端、个人数据助理(PDA)、游戏控制台、游戏设备、工作站、媒体播放器、个人录像机(PVR)、机顶盒、相机、用于包括在计算设备内的集成组件、家用电器、或任何其他类型的处理设备。
在一些实施例中,如有关设备106(N)所示、存储器110可存储可由处理器108执行的指令,指令包括操作***112、针对循环数据流的基于可到达性的协调的框架114、以及可由处理单元108加载并执行的其他模块、程序或应用。作为替代或除此之外,本文所述的功能可至少部分地由一个或多个硬件逻辑组件来执行。例如,但非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑器件(CPLD)等。
在各实施例中,用于针对循环数据流的基于可到达性的协调的框架114包括差分数据流协议116和协调时钟协议118以及潜在的其它工具。存储器110是计算机可读存储介质的示例,并且可包括易失性存储器、非易失性存储器,和/或其它持久和/或辅助计算机可读存储介质。因此,存储器110包括有形和/或物理形式的介质,该介质被包括在设备和/或作为设备的一部分或外置于设备的硬件组件中,该介质包括但不限于:随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、光卡或其它光存储介质、磁带盒、磁带、磁盘存储、磁卡或其他磁存储设备或介质、固态存储器设备、存储阵列、网络附连存储、存储区域网络、主计算机存储或任何其它存储存储器、存储设备,和/或可用于存储并维护供计算设备访问的信息的存储介质。然而,所涵盖的存储110和所描述的计算机可读存储介质由此不包括单独由所传播的信号本身组成的通信介质。
尽管图1描绘了差分数据流协议116和协调时钟118作为用于针对循环数据流的基于可到达性的协调的框架114的部分,各实施例不是如此限制的,并且在一些情况中,差分数据流协议116或协调时钟118可作为与框架114进行通信或访问公共数据的分开的模块进行操作。
在所示的实施例中,存储110包括数据存储120,诸如数据库、数据仓库、或其他类型的结构化或非结构化数据存储。在某些实施例中,数据存储120包括带有一个或多个表、索引、所存储的过程等的关系数据库以实现数据访问。数据存储120可存储数据以用于对存储器110中所存储的和/或由处理器108执行的进程、应用、组件、和/或模块的操作。例如,数据存储120可存储版本数据、迭代数据、时钟数据,和可由框架114存储和访问的其它状态数据。
设备106还可包括一个或多个输入/输出(I/O)接口122,以允许设备106与其它设备进行通信,诸如用户输入***设备(例如,键盘、鼠标、笔、游戏控制器、语音输入设备、触摸输入设备、姿势输入设备等)和/或输出***设备(例如,显示器、打印机、音频扬声器、触觉输出等)。设备106还可包括一个或多个网络接口124以实现经由网络104在计算设备106与其他联网设备(诸如其他设备106)之间进行通信。这样的网络接口124可包括一个或多个网络接口控制器(NIC)或其他类型的用于经由网络发送和接收通信的收发机设备。
说明性数据流
共同待审和共同转让的第13/468,726号名为“差分数据流”的申请解释了针对循环数据流增量算子的基于可到达性的协调,描述的它们的内部状态以及用于从输入计算输出的规则。
图2提供了示例程序来计算图形的相连的组件。如图2示出的,这样的程序可使用声明性风格来写,但是***没有这样限制。
如图2所示,采用的数据抽象是记录的强类型多个组,称为集合。集合支持各种声明性数据并行操作,诸如Select、Join和GroupBy(选择、联结和由…分组)。为执行这些操作之一,数据流算子被应用到一个或多个集合,其产生新集合,新集合是执行该操作的结果。从输入集合开始,这些算子的随后的应用导致数据流图形。可通过注册能够响应集合的改变的一个回调(图2中的PrintOutput)来观察任何集合。程序员通过调用其OnNext操作以相加或相减记录的任意多个组来更新输入集合,且***通过数据流图形来传播它们的结果,确保全部集合(和回调)反映经修改的输入。传到OnNext的每组更新被称为输入时期(inputepoch);OnNext是非阻挡的,因此程序员可引入工作的重叠时期。
一旦对输出集合的一组结果改变可用,则针对循环数据流的基于可到达性的协调以时期次序调用每个输出回调。更细节地考虑图2中的代码,LocalMin方法将两个类型分别为Node和Edge的集合作为输入。它首先使用节点名(node.id)和边的源(edge.srcId)作为相应的关键,来沿着第二集合中的边传播第一集合中的标签以将这两者结合。所得到的经传播的标签与初始标签结合,并且每个节点的最小值被返回。效果是将标签和图形转换成新标签,其中每个节点假定其邻居中的最小值。注意Min是显式地数据并行,首先根据关键(所示示例中的‘id’)来分组其输入,随后每组输出一个记录,这里对应于组中的最小值node.label的记录。在所示的示例中,“id”是Join产生的每个候选标签的属性,并且它是在图形中唯一地标识顶点的整数。
显著语言构造针对循环数据流的基于可到达性的协调引入是集合上的固定点算子。FixedPoint算子利用将集合映射到相同类型的集合的函数f,并导致对应于将f无穷次应用到源集合的集合。它用被用作循环的主体的函数f的数据流图形(其可包括进一步的嵌套循环)来产生循环数据流图形。图2中的ConnectedComponents操作使用围绕LocalMin操作的FixedPoint来重复更新节点的邻近的标签,贯穿图形充满(flood)标签,并最终确定对称图形的相连接的组件。如果到计算的输入是对称图形,即如果对于输入中的每条边(u、v),它还包括(v,u),该查询的结果将为标记,其中每个顶点得到其相连的组件中的任何顶点的最小标签。
因为标签沿着有向边传播,如果图形不对称,每个顶点将接收一个标签,该标签是最小ID顶点的ID,可经图形中有向路径到达该顶点。在计算有向图形的强连接组件(SCC)时该属性被采用。
同时,图3将图2的示例程序的表示示为差分数据流图形300。差分数据流程序被构建为有向图形,其顶点是算子。该图形可包含对应于如图3中所示的程序循环的循环。为跨输入时期和循环迭代来跟踪计算的进程,每个顶点v具有相关联的逻辑时间的域Tv。逻辑时间可以是整数的元组,其由表示时期的整数和表示迭代的整数构成。
概念性地,对于Tv中的每个不同的时间,顶点v“存储”对应于它的每个输入边的不同的集合。这些集合所表示的大的且常常冗余的量的数据被***概括并存储为一组差异,其每一个是指示记录r、可以是负整数的整数δ,以及逻辑时间t的元组{r,δ,t}。差异被构建使得在时间t时集合中的记录r的出现次数等于在所存储的时间s≤t处的差异中的其δ值的和。注意,如在此使用的,s≤t可代表部分排序的组并且不需要表示完全排序的组。
该计算通过对与特定顶点相关联的差异的更新的循环来展开,其中一更新是全部具有相同时间的一组差异。在图3的该讨论中,“边”和“节点”指计算中的数据记录的集合,其中“输入”、“输出”和“算子”对应于数据流图形的结构。在计算的一个“步骤”期间,顶点在其输入302上消费更新,存储包含在更新中的差异,并将其它内部状态按需要修改,并根据算子的语义在其输出304上产生更新。只要未处理的更新留在***中,计算就继续。
各种顶点,诸如所示出的选择操作306和区分操作308可在循环之外的逻辑时间消费输入302,尽管在其它实例中替换和/或附加的或更少的操作可在循环之外的逻辑时间消费输入302。差分数据流图形300示出两个循环入口顶点310和312,在诸如已经执行的选择306和区分308的任何预先循环操作之后,输入通过这两个顶点进入循环。
逻辑时间是整数的元组,其中第一整数指示输入的时期,且每个后续的整数指示包含顶点的逐渐更深入嵌套的循环索引。例如,在图3中,在所有顶点的时间具有至少一个坐标(对应于输入时期),且循环内部的顶点(Concat314(连接)、Join316(联结)、Concat(连接)318、Min320(最小),和Increment322(增量))具有附加的时间坐标。
例如,******到数据流图形中来影响固定点迭代324的三个算子,修改与差异相关联的时间。这些对应于循环ingress(入口)310和/或312、increment322(增量)和循环egress(出口)326,且它们分别添加、递增、和移除输入时间的整数坐标。Ingress310和312以及egress326变换时间的“类型”,操纵整数的数量,其中increment322维持相同时间类型但严格地递增最后的坐标,其对应于循环索引。***产生的差分数据流图形每一个具有这样的属性:每个循环包含增量顶点。该结构对于推理关于全局计算的状态以用于使用如下结合图4讨论的协调时钟的资源调度是有用的。
差分数据流包括***内部使用的逻辑时间的概念,由此时间是任意点阵的成员。不像传统增量数据流中的时间,***使用的逻辑时间形成偏序,且***中使用的差异在连续时间上在两个集合之间是不需要的。在实际中,时间的这个更复杂的概念通常使得***存储的各组差异相对于对应的集合的组而言更稀疏-并因此更紧凑,特别是存在固定点循环时(其常逐渐聚合到固定点并在后面的迭代中更少改变)。事实上,在很多时间,根本不需要存储差异,在此情况中***可跳过那些时间而不作任何工作。跳过工作的能力需要相比非循环数据流所需的更复杂的调度规程,且跨分布式工作器的更新过程的高效协调是图4和图5的主题。
说明性逻辑体系结构
图4是根据各实施例的描述示例体系结构的框图,该示例体系结构可执行用于循环数据流的基于可到达性的协调的操作。图4示出了两个示例计算设备400,其可执行分布式资源102(例如图1中所示的设备106)的操作。计算设备400可包括一个或多个处理器,诸如执行以任何合适的编程语言编写的用以执行本文所描述的各种功能的计算机可执行的、处理器可执行的和/或机器可执行的指令的处理器108。
如所示,***将差分数据流计算机跨运行在群集中的不同机器上的示例过程402(1)和402(2)进行映射。在各实现中,处理器的数量可以是比所示的两个大多个数量级的数量。每个处理器包含使用线程实现的几个工作器404(1)-404(N)(通常每个处理器核一个)。每个所示的数量流顶点406具有数据并行实现,其意味着发送给算子的每个差异可根据其记录的一些功能(称为关键功能)来划分。如上所述,在一些实施例中,协调时钟可管理计算,其中数据流图形可以是不是功能的数据并行的意义上的“算子”的合成的顶点。每个算子输入可使用不同关键函数。为实现并行,***将每个顶点406的计算状态划分成多个不联结的碎片408(1)-408(N),其中数量是群集中工作器404的总的数量,并且每个工作器负责图形中每个顶点的一个碎片。作为结果,每个顶点406跨整个群集被划分。同一碎片408用同一关键处理到顶点406的输入,且算子可独立处理映射到不同关键的记录。每个工作器404包含本地调度器410,其一次独立调度一个顶点碎片,基于资源管理策略决定调度哪一个(如果有)。
当碎片408产生新差异时,该差异可能需要被转移到不同工作器404。单向信道412实现该数据流边。单向信道412可选地排序并连接全部工作器对404。数据交换通过发送方碎片将目标关键函数应用到每个输出记录并选择去往接收方碎片的合适信道来获得。两个不同处理中的工作器之间的信道被复用到诸如TCP连接,且用于针对循环数据流的基于可到达性的协调的技术自动生成序列化代码用于套接通信。进程内信道使用键入的存储器内缓冲,且不必要将差异进行串行化。无状态算子的链被融合到函数调用的流水线中。
本地协调时钟414(1)-414(N)通知每个工作器的调度和资源管理决策。每个处理具有一个协调时钟并将协调时钟协议复用到用于数据交换的相同套接。在替换实施例中,每个工作器具有一个协调时钟或整个群集共享单个协调时钟。在这些替代实施例中,更新协议保持相同,且不同通信机制被用来向工作器散布结果。
程序以三阶段运行:首先,工作器404之间的通信信道412例如被库代码建立;其次,数据流图形,诸如图3所示的一个,被例如通过执行对图2中所示的Main功能中的的ConnectedComponents函数的调用来构建;并接着,数据被呈现给输入图形节点。***用对应输出数据来异步触发回调,且只要新数据时期被引入程序就无限地执行,在全部的输入已经关闭并且待办差异的全局组为空时才终止。至少一个实现使用“单程序多数据”(SPMD)部署策略,其中构建图形的程序运行在每个设备400上。每个工作器404可使数据进入每个输入顶点406(时期没有完成直到它已经被每个工作器关闭),并且编程者以SPMD知晓方式加载数据,划分数据进入和跨参与过程402的结果收集。
图5是根据各实施例,描绘针对循环数据流程序的基于可到达性的协调(其在固定点循环中执行MapReduce,并在其完成时发起回调)的示例的图。循环数据流程序可运行在单个机器上。然而,在单个机器实现中,性能可能受到在单个机器上的独立处理核的数量的限制。此外,性能可能受到单个机器中的存储器的量的限制。程序跨机器的群集的分布执行避免了单个机器的限制。然而,归因于中央主机处理,跨机器的群集的分布执行引入了等待时间的问题。
***将该程序500渲染成数据流图形502,其中每个循环是一个算子,并沿边记录流。算子508和510的每一个作为协同例程来操作,该协同例程拉取其输入504、执行差分数据流算法,并产生记录作为其输出512。在不需要采用协调时钟的单机器实现中,***例如通过划分与每个算子相关联的关键空间来将图形分成碎片,并将每个碎片指定到不同处理器核。在GroupBy 510之前的数据交换使用共享存储缓冲器来实现。主循环接着在锁定步骤中通过算子508和510来进行,如果合适就重复,直到全部工作已经完成。
为在分布式***中而不是单个机器中高效使用循环数据流,用TCP套件代替共享存储缓冲器是不够的,因为工作器频繁访问全局共享状态。例如,考虑布尔变量allDone,如果且仅如果全部工作器已经终止才为真。随着它们在非活动和活动状态之间转换,工作器将更新allDone变量,并在非活动时考虑allDone变量以确定它们是否可以终止。与诸如使用中央主机处理来同步作出决定的Haloop、Twister和Spark的其它迭代MapReduce方法相反,在此描述的***避免了在每次发生工作器变得不活动时同步联系主机的等待时间(其将限制具有很小的迭代或增量更新的程序的最大性能)。如在此描述的针对循环数据流的基于可到达性的协调,通过采用线程的异步和分散式独立调度来获得微秒(例如,50、200、800等)的而不是在其它方法中的几秒或几分钟的等待时间,来使得在分布式***中高效使用差分数据流。
为获得低等待时间,分布式***被设计为异步和分散式***。每个工作器的每个线程独立调度,且当线程接收新数据时,这触发在接收方的计算。为了使其可行,并获得微秒的迭代等待时间,***采用针对分布式终端的特定协议。此外,可由***的全局视图来回答几个资源管理问题。例如,有个简单的二进制问题“群集中全部工作器都终止了吗?”。然而,为了计算聚集,工作器也可能想要知道直到时间t时它是否已经看见它的全部输入。此外,为压缩其历史状态,工作器可能想要知道其状态的子集是否有效地“冻结”,意指状态的子集不能在任何将来的点改变。
因此,除了终端以外,分布式终端协议使用时间的指示。如在此描述的,时间的指示是基于上面描述的并且由协调时钟表示的逻辑时间,其为概述要以针对循环数据流计算的基于可到达性的协调来完成的剩余工作的复制的数据结构。协调时钟以下参考图6A、6B、6C和6D来描述。
说明性状态
图6A、6B、6C和6D是根据各实施例的,示出采用协调时钟的***中的信息流状态图。
每个过程参考其自身的根据协调时钟协议118创建的协调时钟602来作出资源管理决策。每个过程在它们被产生时向记录添加一时戳,例如使用符号(时期、迭代)使得(1,37)意味着记录在第1时期,第37次迭代产生。时钟602提供从顶点名称606和时间608到待办记录610的记数的映射条目604。图6呈现了具有三个算子A 612、B 614和C 616的程序,其中B 614和C 616在A612的输出上进行操作。
在图6所示的示例中,具体而言在图6A,算子A 612接收记录618,其为具有版本(1,37)的串“three little pigs”(三只小猪)。在该初始状态,其中计数610被设为+1,时钟602指示有待办记录用于由顶点606(在此情况中顶点A)在时间608(在此情况中时间(1,37))处理。
如图6B所示,给定顶点A 612执行串词例化(tokenization)功能,顶点A 612在时间620通过以下来消费记录618:将串“three little pigs”词例化为其组成的单词,并产生三个记录622、624和626,每个针对顶点B 614和C616。即,顶点A 612产生每个单词的记录以传递到顶点B 614和C 616用于在其上的具有相同版本628仍在该循环的迭代37中在时期1中的操作。
如图6C所示,时钟协议指示在顶点A 612的操作产生概述处理记录618的效果的时钟更新630。时钟更新630指示现在有顶点B在(1,37)的更多的三个未处理的记录632、顶点C在(1,37)的更多的三个未处理的记录634,以及顶点A在(1,37)的少一个的未处理的记录636。
如图6D所示,***将这个更新广播到所有处理,以在638用于对它们的本地时钟的分量级附加。因此,如针对图6所示的处理中的时钟602所示,在时间(1,37)对应于顶点A的条目604(1)的记数610以落到零。同时在时间(1,37)对应于顶点B的条目604(2)的记数610指示+3,意指三个待办记录对于在顶点B的操作可用,并且在时间(1,37)对应于顶点C的条目604(3)的记数610指示+3,意指三个待办记录对于在顶点C的操作可用。
当计算正在运行时,“最早”时钟条目可能特别有用。当针对最早的时钟条目之一的时钟记数610落到零时,这指示那个顶点的全部先前数据在那个时间被“冻结”并将不改变。例如,如果最早的条目之一对应于一个聚集,该***可标识其全部输入已被接收,并可产生正确结果。图形结构的这个知识允许***在时钟条目上施加因果次序,从而如果在X处理记录可导致在Y的一组记录改变,那么顶点-时间对X在因果次序中领先于顶点-时间对Y。该***可施加因果次序,因为算子从不在它们的输入“之前”的时间产生输出,且全部的循环严格增加时间的最后的坐标,其表示迭代。因此,***标识何时确定的顶点-时间对,例如A-(1,37),已稳定,且在处理中的顶点的全部时钟计数610落到零时***可安全地终止处理。换言之,***使用图形的结构来确定因果次序,因为如果没有时钟条目604具有因果地在其之前的计数610,那么算子的全部的输入已经来到。
因果次序还允许***执行垃圾收集。由于有状态的算子将包含在时钟里的最早顶点-时间对的组之前的许多时间,并且因为存储在那些顶点-时间对处的值现在冻结,***可将它们合并到单个时间。这节省了存储器并使得可能用长期运行的滑动窗来操作。
此外,开销是可忽略的,因为时钟更新可通过将与每个时间相关联的权重求和来被批量进行,并被承载在消息交换上。
图7A和7B是根据各实施例的,示出采用协调时钟602的循环***中的信息流的状态图。为简化,我们忽略一些在图6中提供的注释以突出显示图7中的循环操作。然而,普通技术人员可以理解发生在图7中的类似或相同处理和更新和在图6中发生的一样。
图7示出了具有连接成循环的W 702、X 704、Y 706和+708四个算子的数据流图形。四个算子具有对应的时钟条目710,其类似于图6的时钟条目604,指示待办工作。***可使用时钟条目710来向前看并预计算子W 702、X 704、Y 706和+708可导致在将来发生。具体而言,如果没有可导致数据的某子集的改变的待办工作,该***可用该子集完成的知识来处理数据的那个子集。
如图7A所示,数据通过顶点W702进入该循环,W702将记录传递到算子X704。为了简化,在算子X704示出时钟条目710(1),其是类似在类似+1的610的记数处的608的时间(1,37)。***可使用图形的结构来指出这可能造成什么改变。如上所述,***可依赖的数据流图形的结构有两个主要属性:1)这些算子之一从不导致记录的版本回退,意味着对于示出示例来说,算子在时间(1,37)时在记录上操作时将不会产生(0,37)或(1,36)。记录的版本总保持相同或在一些情况下提升,并且2)当图形中有循环时,必须有些导致版本增加的事物,以避免处于相同版本的记录到达那个算子无限多次。这将意味着X可导致对其自身的改变并将不处理该改变。
如图7A所示,在算子X704的条目710(1)中在时间(1,37)的计数+1表示的待办记录可导致算子Y706的一些记录610在不早于(1,37)的时间(如条目710(2)所示),且类似地算子+708的一些记录610在不早于(1,37)的时间,如条目710(3)所示并如分别在计数710(2)和710(3)中示出为被“?”所标记。
由于顶点W、X、Y和+构成循环,***必须引入使得遍历了整个循环的记录以因果次序前进的顶点。因此,对于一个循环,***创建特定算子,其增加版本,并且在循环中特定顶点“+”递增迭代数。
如图7B所示,顶点+708使得迭代数在W702递增。这意味着在W702,条目710(4)指示将被产生的最早时间608是(1,38)。尽管在那个顶点计数610还不知道(如“?”表示),“+”算子708递增通过它的记录的最后坐标,其为循环中的迭代的数量。W702还可为X704在不早于(1,38)的时间产生记录,但是由于迟于在X704的最早记录(比较时钟条目710(1)),***不需要注意其终止传播的该事实。具有确定时钟条目710的***可标识它们形成了表示可到达性的偏序。
图8是根据各实施例的,描绘协调时钟协议118的示例应用以标识可运行工作的图。
在800,每个点表示***中在相同顶点-时间对的一个或多个记录。黑点代表待办记录,其工作仍要被完成,而白点表示已完成的工作,是先前被处理且现在“冻结”的记录。虚线802圈出一组“最小”顶点-时间对,其代表直到特定时间具有其全部输入的算子。这些最小时间,有时称为最小反链,包括没有活动的前导者数据流算子的数据流算子。这些算子是可运行工作的前线,且***可用它们将产生正确输出的知识来运行这些算子。从使用协调时钟协议118来获得已知且预见的未来操作所构建的数据流图形(如参考图6和图7讨论的)中,***可推断当前待办工作以及可能的未来待办工作。由于图形的结构和永不及时返回及在围绕循环前进时总是严格增长的属性,***可作出这个推断。
如在800所示,在这个依赖关系图形中,有偏序而没有循环。箭头代表有向无环图,其无环性确保有至少一个最小元素——在该组工作组中没有前导者的元素。在800处示出的示例中,虚线802圈出五个最小元素804、806、808、810和812,它们是***已经确定全部的数据已经到手并且因此***可以选择那些五个工作片段之一来用操作将会正确的全部知识来执行的工作位。这提供了调度算法以将待办工作安排到这个图形结构中,以标识一组最小元素,并从该组选择以操作。
取决于是否减少的等待时间或高吞吐量驱动该***,该***提供至少两个变型。例如在800所示的数据流图形可具有贯穿图形的许多不同版本。该***可被设置来在更早的输入版本上执行在图形中稍候的条目,意味着针对这些条目的结果被尽快返回(低等待时间)。或者,***可被设置以针对更加新的输入版本执行在图形中更早的条目,其可确保在这些顶点的每一个上将有更多工作要做并且因此导致更高吞吐量。
在一些实施例中,虚线右面的元素可用负计数(归因于处理无序)来暂时表示。用负计数表示的元素指示有特定附加工作要由那个元素来做。然而,虚线以内的元素将不用负计数表示,因为它们将永不接收另一输入来将它们的计数增加到零。
针对循环数据流的基于可到达性的协调的第三应用是垃圾收集和压缩。随着程序执行,点可改变——一些可能消失而新的可能出现。白点814、816和818表示已经消失的元素,它们在可运行工作的前线之前,并且表示因果过去。这些白点表示在计算的执行中已存在于某点处的条目604。这些可以是与它们相关的一些数据值,由一些算子内的某状态表示。然而,***已经标识这些条目现在冻结并将永不改变。响应于标识这个,***可以向下压缩那些条目以存在于单个版本中而不对后续结果有负面影响。例如,当***正运行在输入的版本100上,不再能够改变的版本间的区别也不再重要,且***可为全部那些冻结的版本保持单个经压缩的表示。
考虑来自图6的短语分隔示例,“three little pigs”示例,如果输入是正在计数单词数的程序的部分,在输入的版本一处***可能已经看见单词“three”100次了,在版本二处***可能已经看见单词“three”多了更多的50次了,而在版本三处***可能已经看见单词“three”多两倍了。以前,三个版本计数的每个将被作为分开的记录存储在存储器中。假定这些三个条目被冻结,***可用单个条目(单词“three”具有计数+152)来代替它们。这将用于表示程序中单词“three”的存储器的量减少为先前表示的三分之一。
该***可使用时钟中的信息来标识一组时间,在该组时间特定算子中的状态可改变,因此以某待办工作开始,表示***正在监视元素820处的状态,并且表示元素820代表来自图7的顶点W而元素812代表来自图7的顶点X。从在顶点X处具有待办工作片段+1,***知晓在W的最早的改变将为(1,38)。可能有多个这样的时间经由通过图形的不同路线存在。压缩应用将那个时间(1,38)呈现给W,其控制W可改变的最早时间。该***检查全部已知时间并基于结果计数来确定是否将条目前进到未来时间以压缩。当多个冻结时间可被前进到相同未来时间时,该***可压缩。因此,如参考上面的“three little pigs”示例所讨论的,***可考虑具有与那些时间相关联的计数零的全部条目,将那些的条目的权重加在一起。当***识别在时间T1的针对条目的+1计数和在时间T2针对相同条目的-1计数时,特定优势情况发生。在那个情况中,***可将T1和T2两者都前进到T3,权重抵偿为(+1)+(-1)=0且***可删除那个条目。
然而,归因于差分数据流,不是全部的先前的记录可被压缩。假设记录在批次1的5个迭代的每一个处改变,且记录在批次2的前4个迭代处改变。当在批次2的迭代4处有改变时,***需要使用批次2的全部的版本1-3和批次1的版本1-4来确定在批次2的第四迭代处做什么计算。因此,***不压缩批次2的迭代1、2和3,因为它将在批次2的迭代4使用它们的值。然而,当***到达批次3的迭代4时,在它需要使用来自批次2的版本1-4的值和来自批次1的版本1-4的值以确定做什么计算时,来自批次2的版本1-4和来自批次1的版本1-4的值的一些子集可被压缩以最小化存储器并处理。此外,***可标识没有工作要做,直至第3批次的第4迭代。即,第3批次的第1到第3迭代不需要任何处理。通过维持第3批次的从第1到第3迭代的记录和先前记录之间的差异,尽管先前记录的一些可被压缩,***可标识对那些迭代没有工作需要做。
如果没有集合可以改变的时间,那么集合将在计算过程中再也不被访问,且***可丢弃冻结集合的全部状态。因此,例如,***已经标识了全部的工作已经移到图形的后面的阶段且已经标识没有更多数据将流过顶点814,那么***可将顶点814完全关闭以用于垃圾收集。
在各实施例中,***采用乘积网格,它由整数元组定义,例如,(0,3)<(7,7)和(3,0)<(7,7)但(0,3)<(3,0),(3,0)<(0,3),或(3,0)=(0,3)均不为真。作为示例,数据状态是(1,8),且数据可改变的可能时间是(4,20)和(7,6)的信息被接收。时间(4,20)和(7,6)是可达到的。在各实施例中,可达到的时间源于协调时钟协议118。对于每个时间项,***采用数据状态和可达到的组中时间的最小上界。因此,***通过采用元组中每个位置的最大值的来将每个状态坐标与每个对应的可达到的坐标进行比较以确定哪个更少。因此,将数据状态坐标(1,8)与可达到坐标(4,20)进行比较,所得到的最小上界是(4,20),因为4>1且20>8。接着,将数据状态坐标(1,8)与可达到坐标(7,6)进行比较,所得到的最小上界是(7,8),因为7>1且8>6。因此,***可用最小上界(4,20)和(7,8)来标识联结到可到达时间的状态。通过采用元组中每个位置的最小值,最小上界可被组合以获得最大下界。因此,将最小上界(4,20)与(7,8)进行比较,所得到的最大下界是(4,8),因为4<7且8<20。基于这些计算,***可将状态(1,8)前进到(4,8)。
此外,给定第二数据状态,(2,8),***可执行如上所述的计算并确定第一数据状态(1,8)和第二数据状态(2,8)两者将产生的最大下界是(4,8)。这指示了第一和第二数据状态可一起被压缩。然而,给定第三数据状态(6,8),第三数据状态需要是可区分的并且不能被压缩。理论上这是因为改变仍可在可到达时间(4,20)发生,意味着可在第4版本中有改变。因此,尽管第三数据状态(6,8)代表第6版本,它仍可改变,因为输入可从不同版本无序来到。当跨数据集操作时间的滑动窗口时,在一些状态可能需要被区分时压缩特别有用。例如,随着三十天窗口前进以收集新数据且不考虑陈旧数据,来自不再在窗口内的日子的陈旧数据可被压缩,尽管它们的关键保留直到与其相关联的全部值达到零。
说明性过程
图9是描绘示例过程的流程图,该过程用于针对循环数据流的基于可到达性的协调。示例过程的操作在单独的框中示出,并且参考这些框来概括。这些过程被示为逻辑框流,其每个框可表示可用硬件、软件或其组合实现的一个或多个操作。在软件的上下文中,这些操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,这些指令在由一个或多个处理器执行时使得一个或多个处理器执行既定操作。一般而言,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的次序并不旨在解释为限制,并且任何数量的所述操作可以按任何次序执行、按任何次序进行组合、细分成多个子操作、和/或并行执行,以实现所描述的过程。
在图9所示的示例中,过程900包括由一个或多个装置106中的工作器节点执行的操作。
在902,工作器节点接收输入。例如,如果***在涉及现实世界***(诸如类似TWITTER的社交网络***)的数据的大规模集合上操作,输入可表示24小时时间段的推文,其可包括关于两百万以上的用户的信息。作为另一个示例,如果***在涉及现实世界***(诸如全球定位***GPS)的数据的大规模集合上操作,工作器可存储道路网络,连同关于每段道路的长度和道路连接端点的信息。在此示例中,流数据可包括来自GPS接收器的一些样本,其指示(在当前交通情况中)沿一段道路行进花费多久。
不像并行计算的其它方法,每个节点接收数据输入的离散片段或碎片,而不是接收至少也被其它节点部分接收到的数据输入的副本。
在904,***在每个节点接收数据输入单元时递增其记数。例如,给定TWITTER数据,关于热门话题集、在特定时间被讨论的最受欢迎的话题的信息可能是有用的。计数可为每个作为输入接收的井号标签(hashtag)进行递增。在GPS示例中,计数可针对来自作为输入接收的道路片段中的每个GPS读数进行递增。
在906,节点在输入上进行操作。在TWITTER数据的情况中,例如,来自30分钟窗口的话题可通过推文数量来排名。在GPS示例中,***可使用诸如所有对最短路径的迭代算法来计算两端点之间的最快路线。接收新GPS读数可使得所估计的沿道路片段行进的时间改变。***可考虑新估计,并计算源和目的地对之间的经更新的优选路线。
在908,节点提供操作的输出。例如,来自30分钟窗口的最顶上的10个TWITTER话题可被输出,且在一些实例中被显示。在GPS示例中,源和目的地对之间的优选路线可被输出,且在一些实例中被显示。
因此***可演示这样的列表和对应的计数如何随时间演进。该滑动窗口使用针对循环数据流的基于可到达性的协调的能力来添加和移除记录,且图形用户界面(GUI)可更新一组“活动秒”并将那些发送到计算。在TWITTER示例中,***可将这些与推文时戳联结,以制成一组“活动推文”,其可形成到增量MapReduce类计算的输入。此外,***可使用双重嵌套的迭代算法来计算图形的强力连接的组件(SCC)。在TWITTER示例中,***可计算所提及的图形的SCC,其中如果第一人向第二人“at”一些推文,或转推第二人的张贴之一,那么边是从第一人到第二人形成的。
针对循环数据流的基于可到达性的协调是用于交互数据分析的强制性工具。例如,如果TWITTER提及图形上的滑动窗向前移动一秒,现存迭代方法将全部再次重新评估每个组件,并浪费很多时间重新计算那些没有改变的事物导致成上百万的改变的记录。相反,在此描述的技术提供增量和迭代计算的组合,使能够向前移动滑动窗并获得准确的评估,同时改变样本数据集当中少于100个记录。
在至少一个实现中,第二示例可表示向用户提供驾驶引导的互联网服务。这样的服务的至少一个实施例结合存储为有向图的路网,其中各边表示用它们的距离和(诸如限速、道路等级、收费价格等)的其它元数据注释的道路的片段。该图中的顶点表示道路片段的端点。端点可以是被路网覆盖的道路的尽头和/或两个或更多片段之间的联结,其用它们的维度、经度以及在一些实例中的其它元数据来注释。该路网中的任何两点之间的最短路线可通过以下来被确定:预先计算网络中全部的位置对之间的最短路径、使用执行算法的多实例的循环数据流程序来计算加权有向图形中的单源最短路径,所述算法诸如Bellman-Ford算法,Dijkstra算法的被修改来解决负边权重的另一个变体,或其它这样的算法。在大的路网上的这些路径的最初计算是计算密集的,并产生大量状态,其可使用类似图3的数据流程序来产生,其中关于边长和每条路径中的前导者的附加信息被保留。响应于计算的执行,计算的状态可被存储在数据中心中的计算机的分布式群集中。
计算了那个状态,将有助于更新所计算的路线来反映关于交通情况的实时信息。传感器网络,诸如具有GPS接收器的移动设备,可记录在主要的情况中沿道路片段行进花费的时间,并使用诸如蜂窝电话网络或附近的wifi网络的网络来将此数据发送到数据中心。
在数据中心,数据聚集组件,其可能是循环数据流图形中的预循环节点,可组合来自多个装备了GPS的传感器的读数以更新沿着道路片段行进花费的估计时间。
所更新的估计可改变一个或多个源-目的地对之间的优选路线,例如绕行特定位置的拥挤交通。执行循环数据流图形的***可使用差分数据流技术,如共同待审和共同转让的申请序列号为第13/468,726号名为“差分数据流”的申请中所描述的,以确定减少的对状态的改变的集合以在群集中的多个过程之间进行通信。
基于可到达性的协调确保在状态的新版本已经基于更新的估计收敛时全部过程可检测。基于可到达性的协调提供改变,改变可在需要若干轮协调的大量迭代中发生,以在短时间中传播遍布群集。基于可到达性的协调还可被用来基于新估计用经更新的版本接合状态先前的版本,其允许大量新估计被添加到***,而不使得程序的存储器消耗随时间增加。
针对循环数据流的基于可到达性的协调可用于大量长期运行的流/滑动窗计算,其中老数据最终可被压缩。在交互设置中,基于可到达性的协调被用于调度,以及压缩为GUI控件的先前设置生成的一些状态,尽管针对循环数据流的基于可到达性的协调还可保持滑动窗以外的状态驻留在存储器中,使得它可被交互查询。
结语
虽然已经用对结构特征和/或方法动作专用的语言描述了各项技术,但是应该理解,所附权利要求不必限于所述的特征或动作。相反,这些特征和动作是作为实现这些技术的示例形式而描述的。
上述所有方法和过程可以用由一个或多个通用计算机或处理器执行的软件代码模块来具体化,并且可经由这些软件代码模块来完全自动化。这些代码模块可以存储在任何类型的计算机可执行存储介质或其他计算机存储设备中。这些算法中的某些或全部可另选地用专用计算机硬件来具体化。
除非另外具体声明,否则在上下文中可以理解并一般地使用条件语言(诸如“能”、“能够”、“可能”或“可以”)表示特定实施例包括而其他实施例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示对于一个或多个实施例需要特征、元素和/或步骤,或者一个或多个实施例必然包括用于决定的逻辑、具有或不具有用户输入或提示、在任何特定实施例中是否要包括或要执行这些特征、元素和/或步骤。
除非另外具体声明,应理解联合语言(诸如短语“X、Y或Z中至少一个”)表示项、词语等可以是X、Y或Z中的任一者、或其组合。
本文所述和/或附图中描述的流程图中任何例行描述、元素或框应理解成潜在地表示包括用于实现该例程中具体逻辑功能或元素的一个或多个可执行指令的代码的模块、片段或部分。替换实现被包括在本文描述的示例的范围内,其中各元素或功能可被删除,或与所示出或讨论的顺序不一致地执行,包括基本上同步地执行或按相反顺序执行,这取决于所涉及的功能,如本领域技术人也将理解的。
应当强调,可对上述实施例作出许多变型和修改,其中的元素如同其他可接受的示例那样应被理解。所有这样的修改和变型在此旨在包括在本公开的范围内并且由以下权利要求书保护。
Claims (11)
1.一种针对数据流的方法,包括:
通过以下跟踪计算的进展:
将要在计算中被处理的多个数据项的每一个与数据流图形的数据流顶点相关联,所述数据流图形表示单个程序,所述数据流顶点包括一个函数的输出和下一个函数的输入;
将要在计算中被处理的多个数据项的每一个与时戳相关联,所述时戳对应于其中数据项在所述计算中被创建的次序;
存储与每个数据项相关联的顶点-时间对,所述顶点-时间对包括数据流顶点和所述时戳;以及
对与每个顶点-时间对相关联的要被处理的数据项的数量进行计数;以及
由至少一个处理器进行通信,所述处理器异步发送一个或多个消息,所述消息包括与至少一个顶点-时间对相关联的多个要被处理的数据项。
2.如权利要求1所述的方法,其特征在于,所述多个数据项的一个数据项包括一记录且所述数据流图形的数据流顶点包括数据流算子。
3.如权利要求1或2所述的方法,其特征在于,对要被处理的数据项的数量进行计数包括:
响应于所述多个数据项的一个数据项被数据流图形顶点消费,为那个顶点从要被处理的数据项的数量中减一;以及
响应于所述多个数据项的一个数据项被产生用于数据流图形顶点,为那个顶点向要被处理的数据项的数量加一。
4.如权利要求1所述的方法,其特征在于,编码其它信息的所述时戳包括以下至少一个:优先级信息或安全信息。
5.一种数据流***,包括:
用于跟踪计算的进展的装置,包括:
用于将要在计算中被处理的多个数据项的每一个与数据流图形的数据流顶点相关联的装置,所述数据流图形表示单个程序,所述数据流顶点包括一个函数的输出和下一个函数的输入;
用于将要在计算中被处理的多个数据项的每一个与时戳相关联的装置,所述时戳对应于其中数据项在所述计算中被创建的次序,所述顶点-时间对包括数据流顶点和所述时戳;
用于存储与每个数据项相关联的顶点-时间对的装置;以及
用于对与每个顶点-时间对相关联的要被处理的数据项的数量进行计数的装置;以及
用于由至少一个处理器进行通信的装置,所述处理器异步发送一个或多个消息,所述消息包括与至少一个顶点-时间对相关联的多个要被处理的数据项。
6.如权利要求5所述的***,其特征在于,所述多个数据项的一个数据项包括一记录且所述数据流图形的数据流顶点包括数据流算子。
7.如权利要求5或6所述的***,其特征在于,用于对要被处理的数据项的数量进行计数的装置包括:
用于响应于所述多个数据项的一个数据项被数据流图形顶点消费为那个顶点从要被处理的数据项的数量中减一的装置;以及
用于响应于所述多个数据项的一个数据项被产生用于数据流图形顶点为那个顶点向要被处理的数据项的数量加一的装置。
8.如权利要求5所述的***,其特征在于,编码其它信息的所述时戳包括以下至少一个:优先级信息或安全信息。
9.一种数据流***,包括:
连接到网络的用于异步发送消息的多个处理器;
存储数据的多个存储器,所述数据包括:
至少一个数据流算子的图形;
与每个数据流算子相关联的未处理的记录的队列,每个未处理的记录具有时戳;
从一版本到针对所述***中的所述一版本的多个未处理的记录的映射,其中所述一版本包括数据流算子-时戳对。
10.如权利要求9所述的***,其特征在于,版本的因果次序被用于确定作为以下之一要采取的下一个行动:
执行对应于时钟中的版本的数据流算子,或
阻挡直至消息被接收。
11.如权利要求9所述的***,其特征在于,版本的因果次序被用于确定计算状态的将不再改变的部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/717,488 | 2012-12-17 | ||
US13/717,488 US9832068B2 (en) | 2012-12-17 | 2012-12-17 | Reachability-based coordination for cyclic dataflow |
PCT/US2013/075790 WO2014099995A1 (en) | 2012-12-17 | 2013-12-17 | Reachability-based coordination for cyclic dataflow |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105190543A CN105190543A (zh) | 2015-12-23 |
CN105190543B true CN105190543B (zh) | 2019-07-23 |
Family
ID=49958675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380066229.9A Active CN105190543B (zh) | 2012-12-17 | 2013-12-17 | 针对循环数据流的基于可到达性的协调 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9832068B2 (zh) |
EP (1) | EP2932377B1 (zh) |
CN (1) | CN105190543B (zh) |
WO (1) | WO2014099995A1 (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9165035B2 (en) | 2012-05-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Differential dataflow |
JP6005533B2 (ja) * | 2013-01-17 | 2016-10-12 | 株式会社東芝 | 記憶装置および記憶方法 |
CN105164639B (zh) * | 2013-04-23 | 2018-11-09 | 起元科技有限公司 | 控制由计算***执行的任务 |
US9467526B2 (en) * | 2014-01-15 | 2016-10-11 | Microsoft Technology Licensing, Llc | Network communication using intermediation processor |
US9268597B2 (en) * | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
CN104267939B (zh) * | 2014-09-17 | 2017-08-29 | 华为技术有限公司 | 一种业务处理的方法、装置及*** |
US11126598B1 (en) * | 2014-11-06 | 2021-09-21 | Ab Initio Technology Llc | Techniques for performing lifecycle operations on a data store |
US10015106B1 (en) | 2015-04-06 | 2018-07-03 | EMC IP Holding Company LLC | Multi-cluster distributed data processing platform |
US10509684B2 (en) | 2015-04-06 | 2019-12-17 | EMC IP Holding Company LLC | Blockchain integration for scalable distributed computations |
US10812341B1 (en) | 2015-04-06 | 2020-10-20 | EMC IP Holding Company LLC | Scalable recursive computation across distributed data processing nodes |
US10791063B1 (en) | 2015-04-06 | 2020-09-29 | EMC IP Holding Company LLC | Scalable edge computing using devices with limited resources |
US10706970B1 (en) | 2015-04-06 | 2020-07-07 | EMC IP Holding Company LLC | Distributed data analytics |
US10541938B1 (en) | 2015-04-06 | 2020-01-21 | EMC IP Holding Company LLC | Integration of distributed data processing platform with one or more distinct supporting platforms |
US10541936B1 (en) * | 2015-04-06 | 2020-01-21 | EMC IP Holding Company LLC | Method and system for distributed analysis |
US10776404B2 (en) * | 2015-04-06 | 2020-09-15 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct computational frameworks |
US10425350B1 (en) | 2015-04-06 | 2019-09-24 | EMC IP Holding Company LLC | Distributed catalog service for data processing platform |
US10496926B2 (en) | 2015-04-06 | 2019-12-03 | EMC IP Holding Company LLC | Analytics platform for scalable distributed computations |
US10404787B1 (en) * | 2015-04-06 | 2019-09-03 | EMC IP Holding Company LLC | Scalable distributed data streaming computations across multiple data processing clusters |
US10515097B2 (en) * | 2015-04-06 | 2019-12-24 | EMC IP Holding Company LLC | Analytics platform for scalable distributed computations |
US10505863B1 (en) * | 2015-04-06 | 2019-12-10 | EMC IP Holding Company LLC | Multi-framework distributed computation |
US10860622B1 (en) | 2015-04-06 | 2020-12-08 | EMC IP Holding Company LLC | Scalable recursive computation for pattern identification across distributed data processing nodes |
US10528875B1 (en) | 2015-04-06 | 2020-01-07 | EMC IP Holding Company LLC | Methods and apparatus implementing data model for disease monitoring, characterization and investigation |
US10511659B1 (en) * | 2015-04-06 | 2019-12-17 | EMC IP Holding Company LLC | Global benchmarking and statistical analysis at scale |
WO2016183542A1 (en) | 2015-05-14 | 2016-11-17 | Walleye Software, LLC | Computer data system position-index mapping |
US10243848B2 (en) | 2015-06-27 | 2019-03-26 | Nicira, Inc. | Provisioning logical entities in a multi-datacenter environment |
US10929417B2 (en) * | 2015-09-11 | 2021-02-23 | International Business Machines Corporation | Transforming and loading data utilizing in-memory processing |
US10410129B2 (en) * | 2015-12-21 | 2019-09-10 | Intel Corporation | User pattern recognition and prediction system for wearables |
US10656861B1 (en) | 2015-12-29 | 2020-05-19 | EMC IP Holding Company LLC | Scalable distributed in-memory computation |
US10382529B2 (en) | 2016-01-29 | 2019-08-13 | Nicira, Inc. | Directed graph based span computation and configuration dispatching |
US10885118B2 (en) * | 2017-05-12 | 2021-01-05 | Futurewei Technologies, Inc. | Incremental graph computations for querying large graphs |
US10243846B2 (en) | 2017-05-15 | 2019-03-26 | Nicira, Inc. | Defining routing domain for distributed packet processing |
CN107247624B (zh) * | 2017-06-05 | 2020-10-13 | 安徽大学 | 一种面向Key-Value***的协同优化方法及*** |
US10887235B2 (en) * | 2017-08-24 | 2021-01-05 | Google Llc | Method of executing a tuple graph program across a network |
US10198469B1 (en) | 2017-08-24 | 2019-02-05 | Deephaven Data Labs Llc | Computer data system data source refreshing using an update propagation graph having a merged join listener |
US10599482B2 (en) | 2017-08-24 | 2020-03-24 | Google Llc | Method for intra-subgraph optimization in tuple graph programs |
US10642582B2 (en) | 2017-08-24 | 2020-05-05 | Google Llc | System of type inference for tuple graph programs method of executing a tuple graph program across a network |
CN108037973B (zh) * | 2017-12-20 | 2021-11-16 | 苏州优圣美智能***有限公司 | 一种与数据处理工具交互的数据流建模和处理*** |
CN108536537B (zh) * | 2018-03-29 | 2019-05-28 | 北京白山耘科技有限公司 | 一种进程资源回收方法及装置 |
CN108600195B (zh) * | 2018-04-04 | 2022-01-04 | 国家计算机网络与信息安全管理中心 | 一种基于增量学习的快速工控协议格式逆向推断方法 |
US10153978B1 (en) | 2018-05-04 | 2018-12-11 | Nefeli Networks, Inc. | Distributed anticipatory bidirectional packet steering for software network functions |
CN110515680B (zh) * | 2018-05-21 | 2024-04-09 | 吕纪竹 | 一种实时判断大数据自身给定延迟重复性的方法 |
CN110909305B (zh) * | 2018-09-17 | 2024-04-09 | 吕纪竹 | 一种实时判断数据流变化同向性及其程度的方法 |
CN111158890A (zh) * | 2020-01-20 | 2020-05-15 | 北京一流科技有限公司 | 控制任务集中的任务并行的***及其方法 |
US11088902B1 (en) | 2020-04-06 | 2021-08-10 | Vmware, Inc. | Synchronization of logical network state between global and local managers |
US11088919B1 (en) | 2020-04-06 | 2021-08-10 | Vmware, Inc. | Data structure for defining multi-site logical network |
US11381456B2 (en) | 2020-04-06 | 2022-07-05 | Vmware, Inc. | Replication of logical network data between global managers |
US11258669B2 (en) * | 2020-07-14 | 2022-02-22 | Vmware, Inc. | Differential dataflow approach for computing grouping membership in network controllers |
US11343227B2 (en) | 2020-09-28 | 2022-05-24 | Vmware, Inc. | Application deployment in multi-site virtualization infrastructure |
CN112699124B (zh) * | 2020-12-30 | 2022-05-17 | 罗普特科技集团股份有限公司 | 一种基于分布式多存储服务的循环存储方法和*** |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742738A (en) | 1988-05-20 | 1998-04-21 | John R. Koza | Simultaneous evolution of the architecture of a multi-part program to solve a problem using architecture altering operations |
CA2078315A1 (en) | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
JPH05257709A (ja) | 1992-03-16 | 1993-10-08 | Hitachi Ltd | 並列化判別方法およびそれを用いた並列化支援方法 |
US6370685B1 (en) | 1999-01-06 | 2002-04-09 | Intel Corporation | Data-flow method of analyzing definitions and uses of L values in programs |
US6473776B2 (en) * | 1999-04-16 | 2002-10-29 | International Business Machines Corporation | Automatic prunning for log-based replication |
US6526418B1 (en) * | 1999-12-16 | 2003-02-25 | Livevault Corporation | Systems and methods for backing up data files |
US6772415B1 (en) | 2000-01-31 | 2004-08-03 | Interuniversitair Microelektronica Centrum (Imec) Vzw | Loop optimization with mapping code on an architecture |
US6820256B2 (en) | 2000-12-13 | 2004-11-16 | Microsoft Corporation | System and method for whole-system program analysis |
US7263694B2 (en) | 2001-10-26 | 2007-08-28 | International Business Machines Corporation | Directed non-cyclic graph walking system for data processing and analysis in software application |
US7415716B2 (en) * | 2003-01-17 | 2008-08-19 | International Business Machines Corporation | Component integrator |
US20050080714A1 (en) * | 2003-09-30 | 2005-04-14 | Cmarket, Inc. | Method and apparatus for combining items in an on-line charitable auction or fund raising event |
US7451297B2 (en) | 2005-06-01 | 2008-11-11 | Microsoft Corporation | Computing system and method that determines current configuration dependent on operand input from another configuration |
US7651593B2 (en) * | 2005-12-19 | 2010-01-26 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US20100121935A1 (en) * | 2006-10-05 | 2010-05-13 | Holt John M | Hybrid replicated shared memory |
US8176470B2 (en) | 2006-10-13 | 2012-05-08 | International Business Machines Corporation | Collaborative derivation of an interface and partial implementation of programming code |
US8141049B2 (en) | 2007-03-14 | 2012-03-20 | Nec Laboratories America, Inc. | System and method for scalable flow and context-sensitive pointer alias analysis |
US8056065B2 (en) | 2007-09-26 | 2011-11-08 | International Business Machines Corporation | Stable transitions in the presence of conditionals for an advanced dual-representation polyhedral loop transformation framework |
US8537160B2 (en) * | 2008-03-05 | 2013-09-17 | Microsoft Corporation | Generating distributed dataflow graphs |
US8291054B2 (en) * | 2008-05-27 | 2012-10-16 | International Business Machines Corporation | Information processing system, method and program for classifying network nodes |
US8225074B2 (en) | 2008-10-02 | 2012-07-17 | Nec Laboratories America, Inc. | Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator |
US8555265B2 (en) | 2010-05-04 | 2013-10-08 | Google Inc. | Parallel processing of data |
US8589867B2 (en) | 2010-06-18 | 2013-11-19 | Microsoft Corporation | Compiler-generated invocation stubs for data parallel programming model |
KR101872748B1 (ko) | 2011-01-14 | 2018-06-29 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 콜렉션에 대한 변경 관리 방법 |
US9170846B2 (en) | 2011-03-29 | 2015-10-27 | Daniel Delling | Distributed data-parallel execution engines for user-defined serial problems using branch-and-bound algorithm |
US20130067443A1 (en) | 2011-09-07 | 2013-03-14 | Kevin D. Howard | Parallel Processing Development Environment Extensions |
US9165035B2 (en) | 2012-05-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Differential dataflow |
-
2012
- 2012-12-17 US US13/717,488 patent/US9832068B2/en active Active
-
2013
- 2013-12-17 WO PCT/US2013/075790 patent/WO2014099995A1/en active Application Filing
- 2013-12-17 EP EP13821555.3A patent/EP2932377B1/en active Active
- 2013-12-17 CN CN201380066229.9A patent/CN105190543B/zh active Active
-
2017
- 2017-11-24 US US15/821,880 patent/US10171284B2/en active Active
Non-Patent Citations (1)
Title |
---|
"Composable Incremental and Iterative Data-Parallel Computation with Naiad";Frank Mcsherry 等;《http://reseach.microsoft.com/pubs/174076/naiad.pdf》;20121009;第1-20页 |
Also Published As
Publication number | Publication date |
---|---|
US20180097684A1 (en) | 2018-04-05 |
US20140172939A1 (en) | 2014-06-19 |
US9832068B2 (en) | 2017-11-28 |
WO2014099995A1 (en) | 2014-06-26 |
CN105190543A (zh) | 2015-12-23 |
EP2932377B1 (en) | 2021-11-10 |
EP2932377A1 (en) | 2015-10-21 |
US10171284B2 (en) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105190543B (zh) | 针对循环数据流的基于可到达性的协调 | |
Mahmud et al. | Latency-aware application module management for fog computing environments | |
Shakarami et al. | A survey on the computation offloading approaches in mobile edge computing: A machine learning-based perspective | |
Jan et al. | Deep learning in big data analytics: a comparative study | |
Yang et al. | A spatiotemporal compression based approach for efficient big data processing on cloud | |
Mottola et al. | Programming wireless sensor networks: Fundamental concepts and state of the art | |
CN104205095B (zh) | 用于连续图更新和计算的平台 | |
CN104049575B (zh) | 在过程控制***中收集并且向大数据机器递送数据 | |
US20200110761A1 (en) | System and method for providing an artificially-intelligent graph database | |
US10860660B2 (en) | Method and apparatus for crowdsourced data gathering, extraction, and compensation | |
CN107077492A (zh) | 可扩展的基于日志的事务管理 | |
Huang et al. | A time-delay neural network for solving time-dependent shortest path problem | |
CN107148617A (zh) | 日志协调存储组的自动配置 | |
Mayer et al. | Graphcep: Real-time data analytics using parallel complex event and graph processing | |
Vu et al. | Distributed adaptive model rules for mining big data streams | |
Liang et al. | Social context-aware middleware: A survey | |
Al-Jaroodi et al. | Service-oriented architecture for big data analytics in smart cities | |
Qiao et al. | A hybridized parallel bats algorithm for combinatorial problem of traveling salesman | |
Mate et al. | Efficient algorithms for finite horizon and streaming restless multi-armed bandit problems | |
Sundarakumar et al. | A heuristic approach to improve the data processing in big data using enhanced Salp Swarm algorithm (ESSA) and MK-means algorithm | |
Marin et al. | Reaching for the clouds: contextually enhancing smartphones for energy efficiency | |
Kovács et al. | Lightweight ontology in IoT architecture | |
Gong | [Retracted] Application of Artificial Intelligence Computer Intelligent Heuristic Search Algorithm | |
da Silva Veith | Quality of service aware mechanisms for (re) configuring data stream processing applications on highly distributed infrastructure | |
Kas | Incremental centrality algorithms for dynamic network analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |