CN104504143B - 一种流图优化方法及其装置 - Google Patents

一种流图优化方法及其装置 Download PDF

Info

Publication number
CN104504143B
CN104504143B CN201510003823.4A CN201510003823A CN104504143B CN 104504143 B CN104504143 B CN 104504143B CN 201510003823 A CN201510003823 A CN 201510003823A CN 104504143 B CN104504143 B CN 104504143B
Authority
CN
China
Prior art keywords
flow graph
operator
operators
sub
flow
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
Application number
CN201510003823.4A
Other languages
English (en)
Other versions
CN104504143A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510003823.4A priority Critical patent/CN104504143B/zh
Publication of CN104504143A publication Critical patent/CN104504143A/zh
Priority to EP15875166.9A priority patent/EP3229150B1/en
Priority to PCT/CN2015/098695 priority patent/WO2016107488A1/zh
Priority to US15/640,685 priority patent/US10613909B2/en
Application granted granted Critical
Publication of CN104504143B publication Critical patent/CN104504143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种流图优化方法和装置,涉及流处理领域。通过接受用户提供的流应用流图,解析该流图,构造算子节点与数据流边描述的流图,按最大原子划分规则对流图进行拆解,以得到至少一个子流图,根据合并算法对所述至少一个子流图,进行邻接算子合并,以得到优化流图。通过对用户提供的流图进行拆解和合并,实现流图计算逻辑的均衡以及减少冗余流量传输,提高了流系统资源的利用率与流应用的执行性能。

Description

一种流图优化方法及其装置
技术领域
本发明实施例涉及流处理领域,更具体地,涉及一种流图优化方法及其装置。
背景技术
流计算(Stream Computing),即实时流处理,是指将待处理数据看成数据流的形式来处理。数据流是在时间分布和数量上无限的一系列数据记录的集合体;数据元组是数据流的最小组成单元。流计算最重要的特性是能够实现计算结果的实时响应。数据的价值随着时间的流逝而降低,数据出现后必须尽快地对其进行处理,最好数据出现时便立刻对其进行处理,产生一个数据进行一次处理,而不是缓存起来成一批处理,这就是流计算的意义所在。
流计算模型图,简称流图(Streaming Graph),可用图1来表示。如图1所示,图中算子op1-op7表示算子(operator),图中边s1-s7表示数据流(stream)。其中,算子是承载业务逻辑的数据处理单元,为流计算平台分布式调度执行的最小单元,而数据流则是算子间交互的数据。
用户编写流图,将编写好的流图提交到流计算平台上,流计算平台解析流图,然后调度到不同的物理机器上分布式执行,实现不同的业务场景。当前业界主流的流计算平台为IBM InfoSphere Streams,用户在InfoSphere Streams的集成开发环境下,通过拖拽编辑,将算子和数据流边连线组成流图,然后提交部署。流图编写的好坏直接影响应用部署后的执行性能。而基于流计算平台开发应用的用户大多为市场人员,或是缺乏流式应用开发经验的工程人员,导致开发出来的流图存在计算逻辑不均衡和冗余流量传输,导致系统资源不能充分利用,流应用执行性能差。
发明内容
本发明实施例提供一种流图优化方法及装置,通过对流图进行优化再部署,提高了流处理平台资源的利用率与流应用的执行性能。
本发明实施例第一方面,提供了一种用于流计算系统的流图优化方法,所述流计算系统包括多个工作节点和主控节点,所述方法由主控节点执行,所述方法包括:
接收用户流图;
解析所述用户流图,构造算子节点与数据流边描述的流图;
按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,其中所述至少一个子流图中的任一子流图包含尽可能多的算子,且所述任一子流图只属于所述流图类型中的一种。
根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
结合第一方面所述的流图优化方法,在第一方面第一种可能的实现方式中,所述流图类型包括:脉冲式流图、分联式流图和迭代式流图;
所述脉冲式流图,包括数据流按流图算子排列顺序依次流过;其中,脉冲式流图包含脉冲式算子,所述脉冲式算子包含窗口缓存,且数据输出具有批处理特征;
所述分联式流图,包括数据流在入口算子处分流,在出口算子处汇聚;其中,分联式流图包含分联式算子,所述分联式算子为所述分联式流图的入口算子或出口算子;
所述迭代式流图,包括后继算子的输出数据流返回至前面算子作为输入流,进行迭代处理;其中,迭代式流图包含迭代式算子,所述迭代式算子为所述迭代式流图的入口算子或出口算子。
结合第一方面或第一方面第一种可能的实现方式,在第一方面第二种可能实现方式中,所述按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,包括:
遍历流图中算子,找出多种类型算子;其中,多种类型的算子包括迭代式算子、分联式算子和脉冲式算子;
从所述多种类型算子中按优先级从高到低的顺序选取用作边界算子的算子;其中,优先级从高到低的顺序依次为迭代算子、分联算子、脉冲算子;
根据所述选取的边界算子采用所述流图类型的最大原子划分规则对所述流图中算子进行划分,以得到至少一个子流图;其中,所述最大原子划分规则,包括:分裂出的子流图包含尽可能多的算子,且任一子流图只属于迭代式流图、分联式流图和脉冲式流图中的一种。
结合第一方面或第一方面第一种可能实现方式或第一方面第二种可能实现方式,在第一方面第三种可能实现方式中,所述根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后所述各个子流图的处理逻辑复杂度达到均衡,具体包括:
根据集群系统资源和算子逻辑复杂度确定合并范围;
根据合并算法在所述确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
结合第一方面第三种可能实现方式,在第一方面第四种可能实现方式中,所述根据合并算法在所述确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,具体包括:
若待合并的邻接算子为系统算子,根据合并优先级列表对所述至少一个子流图进行邻接算子合并,以得到优化流图;
若待合并的邻接算子为用户自定义算子,计算所述用户自定义算子的合并前算子相对复杂度及合并后算子相对复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得合并后算子相对复杂度小于或等于合并前算子相对复杂度的N倍,其中N大于或等于1。
结合结合第一方面或第一方面第一种可能实现方式或第一方面第二种可能实现方式或第一方面第三种可能实现方式或第一方面第四种可能实现方式,在第一方面第五种可能实现方式中,所述方法还包括:
将优化后的流图部署到工作节点中执行。
本发明实施例第二方面提供了一种用于流计算系统的流图优化装置,所述流计算系统包括多个工作节点和主控节点,所述主控节点包括:
接收模块,用于接收流图;
解析模块,用于解析所述流图,构造流图算子与数据流边描述结构;
拆解模块,用于按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图;
合并模块,用于根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少
一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后所述各个子流
图的处理逻辑复杂度达到均衡。
结合第二方面,在第二方面第一种实现方式中,所述流图类型包括:脉冲式流图、分联式流图和迭代式流图;
所述脉冲式流图,包括数据流按流图算子排列顺序依次流过;其中,脉冲式流图包含脉冲式算子,所述脉冲式算子包含窗口缓存,且数据输出具有批处理特征;
所述分联式流图,包括数据流在入口算子处分流,在出口算子处汇聚;其中,分联式流图包含分联式算子,所述分联式算子为所述分联式流图的入口算子或出口算子;
所述迭代式流图,包括后继算子的输出数据流返回至前面算子作为输入流,进行迭代处理;其中,迭代式流图包含迭代式算子,所述迭代式算子为所述迭代式流图的入口算子或出口算子。
结合第二方面或第二方面第一种实现方式中,在第二方面第二种实现方式中,所述拆解模块包括:查询单元、选择单元和拆解单元;
所述查询单元,用于遍历流图中算子,找出多种类型算子;其中,多种类型的算子包括迭代式算子、分联式算子和脉冲式算子;
所述选择单元,用于从所述多种类型算子中按优先级从高到低的顺序选取用作边界算子的算子;其中,优先级从高到低的顺序依次为迭代算子、分联算子、脉冲算子;
所述拆解单元,用于根据所述选取的边界算子采用所述流图类型的最大原子划分规则对所述流图中算子进行划分,以得到至少一个子流图;其中,所述最大原子划分规则,包括:分裂出的子流图包含尽可能多的算子,且任一子流图只属于迭代式流图、分联式流图和脉冲式流图中的一种。
结合第二方面或第二方面第一种可能实现方式或第二方面第二种可能实现方式,在第二方面第三种可能实现方式中,所述合并模块,具体用于根据集群系统资源和算子逻辑复杂度确定合并范围根据合并算法在所述确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。。
结合第二方面第三种可能实现方式,在第二方面第四种可能实现方式中,在所述根据合并算法在所述确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡,所述合并模块具体用于,
若待合并的邻接算子为系统算子,根据合并优先级列表对所述至少一个子流图进行邻接算子合并,以得到优化流图;
若待合并的邻接算子为用户自定义算子,计算所述用户自定义算子的合并前算子相对复杂度及合并后算子相对复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得合并后算子相对复杂度小于或等于合并前算子相对复杂度的N倍,其中N大于或等于1。
结合第二方面或第二方面第一种可能实现方式或第二方面第二种可能实现方式或第二方面第三种可能实现方式或第二方面第四种可能实现方式,在或第二方面第五种可能实现方式中,所述装置还包括部署模块,所述部署模块用于将优化后的流图下发部署到工作节点中执行。
根据本发明实施例提供的流图优化方法和装置,通过接受用户提供的流应用流图,解析该流图,构造流图算子与数据流描述结构,按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。通过对用户提供的流图进行拆解和合并,实现流图计算逻辑的均衡以及减少了冗余流量传输,提高了流系统资源的利用率与流应用的执行性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是流计算模型示意图;
图2A为本发明提供的流计算系统架构示意图;
图2B是本发明实施例中一种流处理平台架构示意图;
图3是本发明实施例中一种流图优化方法流程图;
图4是本发明实施例中一种流图类型示意图;
图5是本发明实施例中一种流图拆解示意图;
图6是本发明实施例中另一种流图优化方法流程图;
图7是本发明实施例中一种流图优化装置示意图;
图8是本发明实施例中一种拆解模块示意图;
图9是本发明实施例中另一种流图优化装置示意图;
图10为本发明实施例中流图优化装置的实体结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,下面描述的实施方式是本发明优选的实施方式,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供的技术方案可典型地应用于流计算系统中,图2A描述了流计算系统的基本结构,包括一个主控节点(Master)和多个工作节点(worker),主控节点主要负责调度和管理各个工作节点,而工作节点是承载实际的数据处理操作的逻辑实体,
流计算是基于流式数据处理模型进行的,在流计算系统中,业务处理逻辑通常需要转化为无回路有向图(Directed Acyclic Graph,DAG),如图4或5所示,其中算子(Operator)是业务逻辑载体,是可被流计算系统调度执行的最小单元;stream代表各Operator间的数据传输。需要说明的是,流计算系统只是本发明技术方案的一个典型应用场景,并不对本发明的应用场景构成限制,其它涉及流应用优化的应用场景,本发明实施例的技术方案均适用。
图2B是本发明实施例一种流处理平台架构示意图。
如图2B所示,一个流处理平台可包括底层的资源管理模块、任务调度模块、状态/资源监控模块、数据传输和存储模块,以及上层可运行的各种算子处理单元,套件开发的用户界面和可选用的算子库等。当然,流处理平台的架构并不仅限于图2所示的架构,还可以在图2的基础上添加或删减部分子系统或模块。用户在流系统上开发应用场景时,通过用户界面完成应用定制再将应用部署在流处理平台上实现应用的流式处理。
为了解决由缺乏流式应用开发经验的用户编写的流图存在计算逻辑不均衡和冗余流量传输的问题,本发明实施例提出了一种流图优化方法及其装置。
图3是本发明实施例一种流图优化方法流程图。S301,用户编写流式应用,开发流式应用流图,提交应用流图到流计算平台。
S302,流计算平台解析应用流图,构造流图数据描述结构。
具体的,流计算平台解析接收到的用户流图,构造流图数据描述结构,描述流图算子与数据流边的关系。
S303,拆解流图,对流图进行最大原子划分以得到子流图。
具体的,如图4所示,流图类型包括:脉冲式流图、分联式流图和迭代式流图。
脉冲式流图,如图4(a),数据流按流图算子排列顺序依次流过,是流应用最基本的处理类型;脉冲式流图中包含脉冲式算子,算子Operator1为脉冲式算子,含有窗口缓存,且数据输出具有批处理特征。
分联式流图,如图4(b),数据流在入口算子处分流,在出口算子处汇聚,分流方式包括多种方式,如复制、分发等;分联式流图中包含分联式算子,如算子Operator2、Operator3;算子Operator2为分联式流图的入口算子,算子Operator2的出流量增加,算子Operator3为分联式流图的出口算子,算子Operator3的出流量减少,算子Operator2、Operator3可作为分联式流图的边界算子。
迭代式流图,如图4(c),后继算子的输出数据流返回至前面算子作为输入流,进行迭代处理;迭代式流图中包含迭代式算子,如算子Operator4、Operator5;算子Operator4为迭代式流图的入口算子,算子Operator5为迭代式流图的出口算子,迭代式计算的中间结果在子流图内部反复传递,数据传输量大,将大量的数据流量集中在子流图内部,算子Operator4、Operator5可作为迭代式流图的边界算子。
拆解流图,对流图进行最大原子划分得到子流图,具体实现为:
如图5所示,遍历流图中算子,找出所有多种类型算子,作为备选的分裂边界集合。
从上述多种类型算子中按优先级从高到低的顺序选取边界算子;其中,优先级从高到低的顺序依次为迭代算子、分联算子、脉冲算子;对于多类型算子,如图5中算子Operator1,既是脉冲算子,又是分联算子,则作为高优先级的分联算子。
根据选取的边界算子,采用所述流图类型的最大原子划分规则对所述流图中算子进行划分,得到至少一个子流图;其中,最大原子划分规则,是指分裂出的子流图包含尽可能多的算子,但是遵守类型单一的约束,不存在流图类型的二义性,即分裂出的子流图只属于迭代式流图、分联式流图和脉冲式流图中的一种。
S304,子流图之间进行有限的邻接算子合并。
子流图之间进行有限的邻接算子合并,具体实现为:根据各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后所述各个子流图的处理逻辑复杂度达到均衡。
具体的,根据集群系统资源和算子逻辑复杂度确定合并范围;根据合并算法在所述确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
具体的,邻接算子合并基于流图拆解结果进行,需要计算两个要素:集群可用CPU核数与算子逻辑复杂度。
占用率低于M为可用核,结合用户配置,确定算子合并范围;其中,0≤M≤1,可根据集群系统资源以及算子逻辑复杂度设置,例如可以为50%;
若待合并的邻接算子为系统算子,根据合并优先级列表对所述至少一个子流图进行邻接算子合并;其中,对于系统算子,存在固定的合并优先级列表;
若待合并的邻接算子,计算所述用户自定义算子的合并前算子相对复杂度及合并后算子相对复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得合并后算子相对复杂度小于或等于合并前算子相对复杂度的N倍,其中N大于或等于1,可根据集群系统资源以及算子逻辑复杂度设置,例如可以为120%。
例如,集群中有3个工作算子,可用CPU核数分别为:3、2、3,所以总可用CPU核数为8,算子合并上限值为8,即合并后至少要保留8个实际算子;下限值为0,即不进行任何合并,尤其当系统资源足够充裕时,合并算子完全无必要,用户可根据实际情况调整上下限的合并值,以控制合并范围。
算子分为系统算子和用户自定义算子。系统算子为平台提供给用户直接使用的库算子,算子逻辑复杂度固定,所以存在固定的合并优先级列表;用户自定义算子为用户继承平台提供的开发接口自己实现的处理操作,这类算子复杂度需要经过计算后确定,计算复杂度方法包括但不限于常见的各种代码复杂度计算方法,如可用算子执行时间表征算子复杂度。
算子合并可以通过多种方式实现,包括但不限于:进程通信、线程通信、函数调用等,合并后的算子复杂度不能超邻接算子的复杂度过高,否则会造成计算负载的不均衡,例如合并后算子复杂度不超过合并前算子复杂度的120%。
算子合并为实现如下目标:
将算子间的数据传输转换成更高性能的消息交互,例如:跨网络通信变成进程间通信,进程间通信变成线程间消息传递,线程消息传递变成普通函数调用,从而减小数据传输时延导致的算子悬停与计算资源浪费的问题;
对于极高复杂度的算子,如Join、Agg、CEP等系统算子,以及复杂度很高的用户自定义算子,合并难度大,计算复杂,且优化效果很难保证,所以除非用户设定算子最小优化值,否则不优先对此类算子进行合并处理。
S305,将优化后流图部署到工作节点执行。
图6是本发明实施例另一流图优化方法流程图。
S601,接收用户流图。
具体的,用户编写流图,流计算平台接收用户提交的流图。
S602,解析用户流图,构造算子节点与数据流边描述的流图。
具体的,流计算平台解析接收到的流图,构造流图数据描述结构,描述流图算子与数据流的关系。
S603,按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,其中所述至少一个子流图中的任一子流图包含尽可能多的算子,且所述任一子流图只属于所述流图类型中的一种。
具体的,拆解过程可参照S303中拆解方法。
S604,根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
具体的,算子合并过程可参照S304中的算子合并方法。
图7是本发明实施例一种流图优化装置示意图。
如图7所示,流图优化装置100包括:接收模块101、解析模块102、拆解模块103和合并模块104;其中,
接收模块101,用于接收流图。
具体的,用户编写流图,接收模块101接收用户提交的流图。
解析模块102,用于解析所述流图,构造流图算子与数据流边描述结构。
具体的,流计算平台解析模块102解析接收到的流图,构造流图数据描述结构,描述流图算子与数据流的关系。
拆解模块103,用于按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图。
具体的,如图4所示,流图类型包括:脉冲式流图、分联式流图和迭代式流图。
脉冲式流图,如图4(a),数据流按流图算子排列顺序依次流过进行相应处理,是流应用最基本的处理类型;脉冲式流图中包含脉冲式算子,算子Operator1为脉冲式算子,含有窗口缓存,且数据输出具有批处理特征。
分联式流图,如图4(b),数据流在入口算子处分流,在出口算子处汇聚,分流方式包括多种方式,如复制、分发等;分联式流图中包含分联式算子,算子Operator2为分联式流图的入口算子,算子Operator2的出流量增加,算子Operator3为分联式流图的出口算子,算子Operator3的出流量减少,算子Operator2、Operator3可作为分联式流图的边界算子。
迭代式流图,如图4(c),后继算子的输出数据流返回至前面算子作为输入流,进行迭代处理;迭代式流图中包含迭代式算子,算子Operator4为迭代式流图的入口算子,算子Operator5为迭代式流图的出口算子,迭代式计算的中间结果在子流图内部反复传递,数据传输量大,将大量的数据流量集中在子流图内部,算子Operator4、Operator5可作为迭代式流图的边界算子。
具体的,如图8所示,拆解模块103包括查询单元1031、选择单元1032和拆解单元1033。
查询单元1031,用于遍历流图中算子,找出所有上述多种类型算子,作为备选的分裂边界集合。
选择单元1032,用于从上述多种类型算子中按优先级从高到低的顺序选取边界算子;其中,优先级从高到低的顺序依次为迭代算子、分联算子、脉冲算子;对于多类型算子,如图5中算子op1,既是脉冲算子,又是分联算子,则作为高优先级的分联算子。
拆解单元1033,用于根据选取的边界算子采用所述流图类型的最大原子划分规则对所述流图中算子进行划分,以得到至少一个子流图;其中,最大原子划分规则,是指分裂出的子流图包含尽可能多的算子,但是遵守类型单一的约束,不存在流图类型的二义性,即分裂出的子流图只属于迭代式流图、分联式流图和脉冲式流图中的一种。
合并模块104,用于根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后所述各个子流图的处理逻辑复杂度达到均衡。具体实现:
根据集群系统资源和算子逻辑复杂度确定合并范围,根据合并算法在所述确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
根据合并算法对所述至少一个子流图进行邻接算子合并,得到优化流图。
具体的,合并模块104根据集群系统资源和算子逻辑复杂度确定合并范围,进行邻接算子合并。
更具体的,邻接算子合并基于流图拆解结果进行,需要计算两个要素:集群可用CPU核数与算子逻辑复杂度。
占用率低于M为可用核,结合用户配置,确定算子合并范围;其中,0≤M≤1,可根据集群系统资源以及算子逻辑复杂度设置,例如可以为50%;
若待合并的邻接算子为系统算子,根据合并优先级列表对所述至少一个子流图进行邻接算子合并,以得到优化流图;
若待合并的邻接算子为用户自定义算子,计算所述用户自定义算子的合并前算子相对复杂度及合并后算子相对复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得合并后算子相对复杂度小于或等于合并前算子相对复杂度的N倍,其中N大于或等于1。
例如,集群中有3个工作算子,可用CPU核数分别为:3、2、3,所以总可用CPU核数为8,算子合并上限值为8,即合并后至少要保留8个实际算子;下限值为0,即不进行任何合并,尤其当系统资源足够充裕时,合并算子完全无必要,用户可根据实际情况调整上下限的合并值,以控制合并范围。
算子分为系统算子和用户自定义算子。系统算子为平台提供给用户直接使用的库算子,算子逻辑复杂度固定,所以存在固定的合并优先级列表;用户自定义算子为用户继承平台提供的开发接口自己实现的处理操作,这类算子复杂度需要经过计算后确定,计算复杂度方法包括但不限于常见的各种代码复杂度计算方法。
算子合并可以通过多种方式实现,包括但不限于:进程通信、线程通信、函数调用等,合并后的算子不能超邻接算子的复杂度过高,否则会造成计算负载的不均衡。
算子合并为实现如下目标:
将算子间的数据传输转换成更高性能的消息交互,例如:跨网络通信变成进程间通信,进程间通信变成线程间消息传递,线程消息传递变成普通函数调用,从而消除数据传输时延导致的算子悬停与计算资源浪费的问题;
对于极高复杂度的算子,如Join、Agg、CEP等系统算子,以及复杂度很高的用户自定义算子,合并难度大,计算复杂,且优化效果很难保证,所以除非用户设定算子最小优化值,否则不优先对此类算子进行合并处理。
可选的,如图9所示,流图优化装置100还包括部署模块105,用于将优化后流图部署到工作节点执行。
如图10所示,为本发明提供的流图优化装置的实体装置图,流图优化装置包括至少一个处理器1001,通信总线1002,存储器1003以及至少一个通信接口1004。
其中,通信总线1002用于实现上述组件之间的连接并通信,通信接口1004用于与外部设备连接并通信。
其中,存储器1003用于存储需要执行的程序代码,当处理器1001执行存储器1003中的程序代码时,实现如下功能:
接收用户流图;
解析所述用户流图,构造算子节点与数据流边描述的流图;
按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,其中所述
至少一个子流图中的任一子流图包含尽可能多的算子,且所述任一子流图只属于所述流
图类型中的一种。
根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡
在本发明实施例中,提供了一种流图优化方法和装置,通过接受用户提供的流应用流图,解析用户流图,构造流图算子节点与数据流边描述结构,对流图进行拆解,实现流图类型的最大原子划分,以得到至少一个子流图,根据合并算法对至少一个子流图进行邻接算子合并,得到优化流图。通过对用户提供的流图进行拆解和合并,实现流图计算逻辑的均衡以及减少了冗余流量传输,提高了流系统资源的利用率与流应用的执行性能。
本发明是参照根据本发明实施例的方法、装置的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种用于流计算系统的流图优化方法,其特征在于,所述流计算系统包括多个工作节点和主控节点,所述方法由主控节点执行,所述方法包括:
接收用户流图;
解析所述用户流图,构造算子节点与数据流边描述的流图;
按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,其中所述至少一个子流图中的任一子流图包含尽可能多的算子,且所述任一子流图只属于所述流图类型中的一种;
根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡;
其中,所述流图类型包括:脉冲式流图、分联式流图和迭代式流图;
所述脉冲式流图,包括数据流按流图算子排列顺序依次流过;其中,脉冲式流图包含脉冲式算子,所述脉冲式算子包含窗口缓存,且数据输出具有批处理特征;
所述分联式流图,包括数据流在入口算子处分流,在出口算子处汇聚;其中,分联式流图包含分联式算子,所述分联式算子为所述分联式流图的入口算子或出口算子;
所述迭代式流图,包括后继算子的输出数据流返回至前面算子作为输入流,进行迭代处理;其中,迭代式流图包含迭代式算子,所述迭代式算子为所述迭代式流图的入口算子或出口算子。
2.根据权利要求1所述的流图优化方法,其特征在于,所述按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,包括:
遍历流图中算子,找出多种类型算子;其中,多种类型的算子包括迭代式算子、分联式算子和脉冲式算子;
从所述多种类型算子中按优先级从高到低的顺序选取用作边界算子的算子,其中,优先级从高到低的顺序依次为迭代式算子、分联式算子、脉冲式算子;
根据所述用作边界算子的算子采用所述流图类型的最大原子划分规则对所述流图中算子进行划分,以得到至少一个子流图;其中,所述最大原子划分规则,包括:分裂出的子流图包含尽可能多的算子,且任一子流图只属于迭代式流图、分联式流图和脉冲式流图中的一种。
3.根据权利要求1至2中任一项所述的流图优化方法,其特征在于,所述根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后所述各个子流图的处理逻辑复杂度达到均衡,具体包括:
根据集群系统资源和算子逻辑复杂度确定合并范围;
根据合并算法在确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
4.根据权利要求3所述的流图优化方法,其特征在于,所述根据合并算法在确定的所述合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,具体包括:
若待合并的邻接算子为系统算子,根据合并优先级列表对所述至少一个子流图进行邻接算子合并,以得到优化流图;
若待合并的邻接算子为用户自定义算子,计算所述用户自定义算子的合并前算子相对复杂度及合并后算子相对复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得合并后算子相对复杂度小于或等于合并前算子相对复杂度的N倍,其中N大于或等于1。
5.根据权利要求1或2所述的流图优化方法,其特征在于,所述方法还包括:
将优化后的流图部署到工作节点中执行。
6.一种用于流计算系统的流图优化装置,其特征在于,所述流计算系统包括多个工作节点和主控节点,所述主控节点包括:
接收模块,用于接收流图;
解析模块,用于解析所述流图,构造流图算子与数据流边描述结构;
拆解模块,用于按照流图类型的最大原子划分规则对流图进行拆解,以得到至少一个子流图,其中所述至少一个子流图中的任一子流图包含尽可能多的算子,且所述任一子流图只属于所述流图类型中的一种;
合并模块,用于根据所述至少一个子流图中各个子流图的处理逻辑复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后所述各个子流图的处理逻辑复杂度达到均衡;
其中,所述流图类型包括:脉冲式流图、分联式流图和迭代式流图;
所述脉冲式流图,包括数据流按流图算子排列顺序依次流过;其中,脉冲式流图包含脉冲式算子,所述脉冲式算子包含窗口缓存,且数据输出具有批处理特征;
所述分联式流图,包括数据流在入口算子处分流,在出口算子处汇聚;其中,分联式流图包含分联式算子,所述分联式算子为所述分联式流图的入口算子或出口算子;
所述迭代式流图,包括后继算子的输出数据流返回至前面算子作为输入流,进行迭代处理;其中,迭代式流图包含迭代式算子,所述迭代式算子为所述迭代式流图的入口算子或出口算子。
7.根据权利要求6所述的流图优化装置,其特征在于,所述拆解模块包括:查询单元、选择单元和拆解单元;
所述查询单元,用于遍历流图中算子,找出多种类型算子;其中,多种类型的算子包括迭代式算子、分联式算子和脉冲式算子;
所述选择单元,用于从所述多种类型算子中按优先级从高到低的顺序选取用作边界算子的算子;其中,优先级从高到低的顺序依次为迭代式算子、分联式算子、脉冲式算子;
所述拆解单元,用于根据所述用作边界算子的算子采用所述流图类型的最大原子划分规则对所述流图中算子进行划分,以得到至少一个子流图;其中,所述最大原子划分规则,包括:分裂出的子流图包含尽可能多的算子,且任一子流图只属于迭代式流图、分联式流图和脉冲式流图中的一种。
8.根据权利要求6至7中任一项所述的流图优化装置,其特征在于,
所述合并模块,具体用于根据集群系统资源和算子逻辑复杂度确定合并范围,根据合并算法在确定的合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡。
9.根据权利要求8所述的流图优化装置,其特征在于,在所述根据合并算法在确定的所述合并范围内对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得经邻接算子合并后各个子流图的处理逻辑复杂度达到均衡,所述合并模块具体用于,
若待合并的邻接算子为系统算子,根据合并优先级列表对所述至少一个子流图进行邻接算子合并,以得到优化流图;
若待合并的邻接算子为用户自定义算子,计算所述用户自定义算子的合并前算子相对复杂度及合并后算子相对复杂度,对所述至少一个子流图进行邻接算子合并,以得到优化流图,使得合并后算子相对复杂度小于或等于合并前算子相对复杂度的N倍,其中N大于或等于1。
10.根据权利要求6或7所述的流图优化装置,其特征在于,所述装置还包括部署模块,所述部署模块用于将优化后的流图部署到工作节点中执行。
CN201510003823.4A 2015-01-04 2015-01-04 一种流图优化方法及其装置 Active CN104504143B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510003823.4A CN104504143B (zh) 2015-01-04 2015-01-04 一种流图优化方法及其装置
EP15875166.9A EP3229150B1 (en) 2015-01-04 2015-12-24 Streaming graph optimization method and apparatus
PCT/CN2015/098695 WO2016107488A1 (zh) 2015-01-04 2015-12-24 一种流图优化方法及其装置
US15/640,685 US10613909B2 (en) 2015-01-04 2017-07-03 Method and apparatus for generating an optimized streaming graph using an adjacency operator combination on at least one streaming subgraph

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510003823.4A CN104504143B (zh) 2015-01-04 2015-01-04 一种流图优化方法及其装置

Publications (2)

Publication Number Publication Date
CN104504143A CN104504143A (zh) 2015-04-08
CN104504143B true CN104504143B (zh) 2017-12-29

Family

ID=52945540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510003823.4A Active CN104504143B (zh) 2015-01-04 2015-01-04 一种流图优化方法及其装置

Country Status (4)

Country Link
US (1) US10613909B2 (zh)
EP (1) EP3229150B1 (zh)
CN (1) CN104504143B (zh)
WO (1) WO2016107488A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9100904B2 (en) * 2012-09-13 2015-08-04 First Principles, Inc. Data stream division to increase data transmission rates
CN104504143B (zh) * 2015-01-04 2017-12-29 华为技术有限公司 一种流图优化方法及其装置
CN106547522B (zh) * 2015-09-17 2020-02-14 华为技术有限公司 一种流应用优化的方法及装置
CN105354089B (zh) * 2015-10-15 2019-02-01 北京航空航天大学 支持迭代计算的流式数据处理单元及系统
CN105610992A (zh) * 2016-03-31 2016-05-25 浪潮通信信息系统有限公司 一种分布式流计算系统任务分配负载均衡方法
CN107678790B (zh) 2016-07-29 2020-05-08 华为技术有限公司 流计算方法、装置及系统
US20180203901A1 (en) 2017-01-17 2018-07-19 International Business Machines Corporation Operator fusion management in a stream computing environment
US10432462B2 (en) 2018-03-05 2019-10-01 International Business Machines Corporation Automatic selection of cut-point connections for dynamically-cut stream processing systems
FI130232B (en) * 2018-04-18 2023-05-03 Meeshkan Oy Procedure for distributed processing of information and distributed information processing system
CN108628605A (zh) * 2018-04-28 2018-10-09 百度在线网络技术(北京)有限公司 流式数据处理方法、装置、服务器和介质
US11102258B2 (en) 2018-07-10 2021-08-24 International Business Machines Corporation Stream processing without central transportation planning
CN109508412B (zh) * 2018-11-20 2019-12-20 中科驭数(北京)科技有限公司 一种时间序列处理的计算流图构建方法和装置
CN110020720B (zh) * 2019-04-01 2021-05-11 中科寒武纪科技股份有限公司 算子拼接方法及装置
CN110795265B (zh) * 2019-10-25 2021-04-02 东北大学 一种基于乐观容错方法的迭代器
CN111597211B (zh) * 2020-05-14 2023-10-20 腾讯科技(深圳)有限公司 一种数据流图处理方法、装置、设备以及可读存储介质
CN114879943A (zh) * 2022-06-30 2022-08-09 浙江大华技术股份有限公司 一种算法方案生成方法、装置以及计算机可读存储介质
CN117056068B (zh) * 2023-08-08 2024-03-19 杭州观远数据有限公司 ETL中JobEngine任务拆分方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104052811A (zh) * 2014-06-17 2014-09-17 华为技术有限公司 一种业务调度的方法、装置及系统
CN104050543A (zh) * 2014-06-30 2014-09-17 华为技术有限公司 流处理系统中的事件处理方法及流处理系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774189B2 (en) * 2006-12-01 2010-08-10 International Business Machines Corporation System and method for simulating data flow using dataflow computing system
US8291006B2 (en) * 2008-05-30 2012-10-16 International Business Machines Corporation Method for generating a distributed stream processing application
US7856544B2 (en) * 2008-08-18 2010-12-21 International Business Machines Corporation Stream processing in super node clusters of processors assigned with stream computation graph kernels and coupled by stream traffic optical links
US8490072B2 (en) * 2009-06-23 2013-07-16 International Business Machines Corporation Partitioning operator flow graphs
CN101630275B (zh) * 2009-07-31 2012-07-04 清华大学 一种实现生成循环任务配置信息的方法和装置
JP5395565B2 (ja) * 2009-08-12 2014-01-22 株式会社日立製作所 ストリームデータ処理方法及び装置
JP4959774B2 (ja) * 2009-11-30 2012-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーション生成システム、方法及びプログラム
JP4967014B2 (ja) * 2009-12-16 2012-07-04 株式会社日立製作所 ストリームデータ処理装置及び方法
US8856060B2 (en) * 2011-03-09 2014-10-07 International Business Machines Corporation Creating stream processing flows from sets of rules
US8874751B2 (en) * 2011-12-01 2014-10-28 International Business Machines Corporation Candidate set solver with user advice
US9146775B2 (en) 2012-04-26 2015-09-29 International Business Machines Corporation Operator graph changes in response to dynamic connections in stream computing applications
US8887056B2 (en) * 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
US8843524B2 (en) * 2012-09-25 2014-09-23 International Business Machines Corporation Handling out-of-sequence data in a streaming environment
US9930081B2 (en) * 2012-11-13 2018-03-27 International Business Machines Corporation Streams optional execution paths depending upon data rates
US9477733B2 (en) * 2013-03-15 2016-10-25 Uda, Lld Hierarchical, parallel models for extracting in real-time high-value information from data streams and system and method for creation of same
US9483332B2 (en) 2014-06-30 2016-11-01 Huawei Technologies Co., Ltd. Event processing method in stream processing system and stream processing system
CN104239141B (zh) * 2014-09-05 2017-07-28 北京邮电大学 数据中心中基于工作流关键路径的任务优化调度方法
CN104504143B (zh) * 2015-01-04 2017-12-29 华为技术有限公司 一种流图优化方法及其装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104052811A (zh) * 2014-06-17 2014-09-17 华为技术有限公司 一种业务调度的方法、装置及系统
CN104050543A (zh) * 2014-06-30 2014-09-17 华为技术有限公司 流处理系统中的事件处理方法及流处理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Aeolus:An Optimizer for Distributed Intra-Node-Parallel Streaming Systems;Matthias J.Sax et al;《ICDE Conference 2013》;20131231;第1280-1283页 *

Also Published As

Publication number Publication date
EP3229150A4 (en) 2017-12-06
WO2016107488A1 (zh) 2016-07-07
EP3229150A1 (en) 2017-10-11
EP3229150B1 (en) 2020-06-17
US20170300367A1 (en) 2017-10-19
CN104504143A (zh) 2015-04-08
US10613909B2 (en) 2020-04-07

Similar Documents

Publication Publication Date Title
CN104504143B (zh) 一种流图优化方法及其装置
CN107678790B (zh) 流计算方法、装置及系统
US10884795B2 (en) Dynamic accelerator scheduling and grouping for deep learning jobs in a computing cluster
US10623269B2 (en) Operator fusion management in a stream computing environment
CN104052811B (zh) 一种业务调度的方法、装置及系统
US9477512B2 (en) Task-based modeling for parallel data integration
CN113535367B (zh) 任务调度方法及相关装置
CN106547522B (zh) 一种流应用优化的方法及装置
US10509683B2 (en) Modeling resource usage for a job
US11947996B2 (en) Execution of services concurrently
CN104020994A (zh) 基于流系统的流过程定义装置和流过程定义方法
KR20190007043A (ko) 재구성가능한 분산 처리
CN109409746A (zh) 一种生产调度方法及装置
Kounev et al. Introduction to queueing petri nets: modeling formalism, tool support and case studies
Olvera-Cravioto et al. Parallel queues with synchronization
Chardet et al. Predictable efficiency for reconfiguration of service-oriented systems with concerto
CN117762591B (zh) 任务控制方法、任务控制装置、计算机设备和存储介质
Danelutto et al. A RISC building block set for structured parallel programming
CN117149378A (zh) 智能汽车操作系统的任务调度方法、装置、设备及介质
US7839849B1 (en) Formatting fields of communication packets
KR101556541B1 (ko) 고부하 경로 기반의 복합 이벤트 처리 장치 및 그 방법
US20200183737A1 (en) Coordinating processes with interfering external actions
Barbierato et al. Fluid approximation of pool depletion systems
CN111208980B (zh) 一种数据分析处理方法和系统
US12086647B2 (en) Dynamic subtask creation and execution in processing platforms

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