CN111782371B - 基于dag交互的流式计算方法与装置 - Google Patents
基于dag交互的流式计算方法与装置 Download PDFInfo
- Publication number
- CN111782371B CN111782371B CN202010622403.5A CN202010622403A CN111782371B CN 111782371 B CN111782371 B CN 111782371B CN 202010622403 A CN202010622403 A CN 202010622403A CN 111782371 B CN111782371 B CN 111782371B
- Authority
- CN
- China
- Prior art keywords
- dag
- data
- node
- description information
- job
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 33
- 230000003993 interaction Effects 0.000 title claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 28
- 238000010586 diagram Methods 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 62
- 230000002776 aggregation Effects 0.000 claims description 23
- 238000004220 aggregation Methods 0.000 claims description 23
- 238000006243 chemical reaction Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 7
- 230000004931 aggregating effect Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 21
- 238000007726 management method Methods 0.000 description 13
- 238000013500 data storage Methods 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 4
- 230000003936 working memory Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开涉及一种基于DAG交互的流式计算方法与装置,涉及数据处理与云计算领域。一种基于有向无环图DAG交互的流式计算方法包括:根据由属于第一类型集合的DAG节点组成的第一DAG节点图,生成第一DAG作业流描述信息;通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将第一DAG作业流描述信息转换为第二DAG作业流描述信息;将第二DAG作业流描述信息封装为DAG执行包,DAG执行包包括第二DAG作业流描述信息和第二DAG作业流描述信息中的节点的运算逻辑;以及将DAG执行包发送到作业运行集群。
Description
技术领域
本公开涉及数据处理与云计算,具体地,涉及一种基于DAG交互的流式计算方法与装置。
背景技术
流式计算是一种不同于批量计算的计算方式,它可以很好的对大规模连续数据在不断变化的运动过程中实时的进行分析,提取有用的信息,并将计算结果迅速的传递给下游节点。用户通过配置批间隔(batch interval)、检查点(checkpoint)等信息,通过拖拽的方式组成作业流执行的DAG后,借助SparkStreaming微批(microbatch)的思想处理DAG图,使之转化为可执行的程序逻辑,之后提交到计算集群执行。此外,在当前的实时作业流计算方案中,DAG中的每个节点采用分散式管理,即每一个节点都包含自己的封装逻辑,通过节点描述的字段信息进行区分。
然而,随着数据量的增加和日益增加的计算精度和实时度需求,这样的配置逐渐产生了问题。一方面,由于SparkStreaming将流视为批的特例以及其依赖于时间间隔的底层逻辑,SparkStreaming实际上是一个近实时的计算框架。虽然可以解决一部分的流式计算业务,但是对于某些数据量大、对实时性和精度要求高的计算场景,例如event level的场景和有状态的计算场景下,SparkStreaming的计算精度和性能就会有所下降,以及对于计算在多个机器上分布、数据传输存在延时的场景,SparkStreaming的运行场景无法满足客户的需求。另一方面,DAG中每个节点的程序都封装在不同的计算逻辑中,因此在复杂的业务逻辑中,作业流及其节点的初始化和相关类加载势必会带来较大的网络和时间开销,影响系统性能。
发明内容
根据本公开的一方面,提供一种基于有向无环图DAG交互的流式计算方法,包括:根据由属于第一类型集合的DAG节点组成的第一DAG节点图,生成第一DAG作业流描述信息;通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将所述第一DAG作业流描述信息转换为第二DAG作业流描述信息;将所述第二DAG作业流描述信息封装为DAG执行包,所述DAG执行包包括第二DAG作业流描述信息和第二DAG作业流描述信息中的节点的运算逻辑;以及将所述DAG执行包发送到作业运行集群。
根据本公开的另一方面,还提供一种基于有向无环图DAG交互的流式计算装置,其特征在于,包括:作业生成单元,被配置成根据由属于第一类型集合的DAG节点组成的第一DAG节点图,生成第一DAG作业流描述信息;作业处理单元,被配置成通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将所述第一DAG作业流描述信息转换为第二DAG作业流描述信息;以及作业提交单元,被配置成将所述第二DAG作业流描述信息封装为DAG执行包,并且将所述DAG执行包发送到作业运行集群,其中,所述DAG执行包包括第二DAG作业流描述信息和第二DAG作业流描述信息中的节点的运算逻辑。
根据本公开的另一方面,还提供一种电子设备,包括:处理器;以及存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据上述的基于有向无环图DAG交互的流式计算方法。
根据本公开的另一方面,还提供一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行根据上述的流式计算方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机指令,所述计算机指令在由处理器执行时,实现根据上述的流式计算方法。
根据本公开的一个方面,基于有向无环图DAG交互的流式计算方法能够改善流式计算的处理效率。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素:
图1是根据本公开的实施例的用于基于DAG交互的流式计算的示例性方法的流程图;
图2是根据本公开的实施例的用于基于DAG交互的流式计算的示例性系统架构;
图3A-3C是根据本公开的实施例的示例性业务数据流通图;
图4是根据本公开的实施例的示例性底层元数据流通图;
图5是根据本公开的实施例的示例性作业提交阶段运行以及数据流通的示意图;
图6是根据本公开的实施例的示例性作业远程提交方法的流程图;
图7是根据本公开的实施例的示例性作业本地提交方法的流程图;
图8是根据本公开的实施例的用于基于DAG交互的流式计算的装置的框图;以及
图9是根据本公开的实施例的用于基于DAG交互的流式计算的示例性计算设备的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个要素与另一要素区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
本公开针对一种公有云场景下面向企业的前端可视化编程平台,能够实现用户侧零代码的解决方案并且实现大量数据的实时流式处理,减少分布式的影响,提高计算精度。具体地,本公开针对一种基于有向无环图(Directed Acyclic Graph,DAG)可视化交互的流式计算方案。
现目前,流式计算的主要处理框架有以下几个:
①Storm:Twitter公司开源的一种分布式实时大数据处理框架,属于真正的流式处理,具有低延迟、高吞吐的计算特性,但是不具备状态管理功能,由于每条数据都会触发计算,因此计算性能会受到限制;
②SparkStreaming:Spark是UC Berkeley AMP lab开源的类Hadoop MapReduce的一种通用并行框架,将弹性分布式数据集(Resilient Distributed Datasets,RDD)作为底层的数据结构。SparkStreaming是基于SparkRDD的一种流式计算框架,采用微批(microbatch)的思想,将无界数据流通过batch interval在时间维度切分成有界数据,将其转换成底层RDD的计算,具有高性能、高吞吐的计算特征。然而,由于SparkStreaming的计算模型依然依赖离线计算框架,因此一些场景下实时性能并不高。
③Flink:Flink是现目前流式计算比较受欢迎的一种分布式引擎,能够在无边界和有边界数据流上进行有状态的计算。在Flink的技术理念中,天然的认为数据是一种无界流,但是通过加入窗口,从而可以进行有界流的计算。Flink不仅具备了Spark和Storm的一些计算特征之外,还支持event time来控制窗口时间,支持乱序时间下的数据容错处理,在计算上保证了exactly-once语义,具有高性能、高吞吐和低延迟的特征。虽然Flink的计算框架非常流行,但是借助Flink API进行开发的过程中,需要进行问题抽象,并将其每一步的计算逻辑需要借助API转化为Flink的底层算子的计算逻辑,对于开发人员的要求较高,代码逻辑也会非常繁琐,在一定程度上会降低开发效率。
具体地,在流式计算方面,由于Flink将批计算视为流式计算的特例,并且内部存在对于延时的容错和纠错机制,因而在数据量大、场景分布复杂的实时计算场景更加适用。
下面结合图1,对本公开的示例性方法进行描述。
在步骤S11中,根据DAG节点图,生成DAG作业流描述信息。为了方便和为了区分,可以将此处DAG节点图称为第一DAG节点图,并且将针对第一DAG节点图所生成的DAG作业流描述信息称为第一DAG作业流描述信息。为了方便叙述,使用“第一类型集合”这一术语,用于包括第一DAG节点图中的节点可以属于的类型。
接下来,在步骤S12中,通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将所述第一DAG作业流描述信息转换为第二DAG作业流描述信息。第二DAG作业流描述信息是适于由Flink执行的DAG信息,并且因此属于第二类型集合的DAG节点是适于Flink的节点类型。
在步骤S13中,将第二DAG作业流描述信息封装为DAG执行包,所述DAG执行包包括所述第二DAG作业流描述信息和所述第二DAG作业流描述信息中的节点的运算逻辑。具体的,可以对在步骤S12中生成的适于Flink的第二作业流信息进行进一步处理,以生成用于提交运行的程序包。生成用于提交运行的程序包的过程可以通过所述第二DAG作业流描述信息封装为DAG执行包来实现。
在S14中,将程序包提交到作业运行集群。在作业运行集群可以进行流式计算的执行。
通过上述方法步骤:流式计算的处理效率能够得到有效改善。
下面将描述根据本公开的示例性方法的一些变体。
属于第一类型集合的DAG节点至少包括数据源型(Source)、数据转换型(Transform)、数据分析型(Analytic)和目的端型(Sink)。根据一些实施例,所述属于第一类型集合的DAG节点至少包括数据源型、数据转换型、数据关联型(Join)节点、数据聚合型(Aggregator)和目的端型,其中,数据关联型节点和数据聚合型节点属于数据分析型节点的两种不同类型。这将在下文参照图3对第一类型集合的DAG节点给出更详细的描述。
第一DAG节点图可以是通过用户对DAG节点的输入形成的。具体地,根据一些实施例,用第一DAG节点图是通过用户对所述属于第一类型集合的DAG节点的拖拽形成的。由此,实现了方便高效的可视化编程。在这样的实施方式中,用户通过对不同类型的DAG节点进行拖拽,形成用户特定的有向无环图,以实现所需的业务逻辑。可选地,除了接收DAG节点图,还接收用户输入的配置信息。
作业流描述信息对DAG节点进行描述。第一DAG作业流描述信息包括作业流的ID、作业流名称,作业流中每个插件的详细信息等。对于下文将描述的转换后的作业流描述信息或者第二DAG作业流描述信息,还包括针对Flink流式计算的配置。在作业流描述文件中,按照DAG节点的类型进行分类。不同类型的节点拥有各自的描述信息。根据一些实施例,第一DAG描述信息可以采用json(JavaScript对象标记法,JavaScript Object Notation)格式,并且第二DAG作业流描述信息也可以采用json格式。json是一种轻量级的数据交换格式,其具有直观、简洁和清晰的层次结构的优点,易于阅读和编写,同时也易于机器解析和生成。
根据一些实施例,所述第一DAG作业流描述信息与所述第二DAG作业流描述信息采用相同的数据封装,以实现复杂业务逻辑下前后端的业务逻辑能够共享数据信息,保证DAG描述信息的完整可靠。根据一种实施方式,可以统一将数据封装成DataRecord的数据结构,从而统一作业流中的数据信息。DataRecord可以包括数据的类型、数据的格式和数据中每个字段的详细信息。数据的描述信息可以根据DataRecord的形式序列化写进整个DAG的描述信息中。
第一DAG描述信息可以通过消息队列进行传递,并通过从消息队列订阅来加载第一DAG描述信息。例如,加载配置信息通过对采用DataRecord形式的数据信息进行反序列化,得到数据的元信息后,完成数据的转换。可选地,除了作业流数据之外,还可以加载并解析对作业流数据进行描述的底层元数据。可选地,将第二DAG作业流描述信息发送到作业提交模块可以包括通过消息队列将适于Flink执行的DAG信息发送到作业提交模块。
生成的DAG执行包可以包括针对不同类型节点的第二DAG作业流描述信息和节点的运算逻辑。在一些实施例中,针对所述第二DAG作业流描述信息中所有的不同节点类型,仅生成一个DAG执行包。这极大地减少了提交业务量,并且有助于远程提交方式的实现。
上述提交到作业运行集群的步骤S14可以包括提交到相对于提交模块远程定位的作业运行集群,也可以包括提交到相对于提交模块本地定位的作业运行集群。作业运行集群可以是yarn。在这样的情况下,可以利用twill对程序包的提交进行管理和资源分配。具体地,可以通过twill模块来实现将所述第二DAG作业流描述信息封装为DAG执行包和/或将所述DAG执行包发送到作业运行集群的步骤。
在本公开中,如上所述,基于DAG交互的流式计算方法是基于Flink计算引擎设计和实现的。整体的设计大致分为两大部分,分别是作业流执行图生成、解析与适配过程与作业的调度管理运行过程。步骤S11-S12对应于作业流执行图生成、解析与适配过程,将用户生成的作业流执行DAG图传递给后端。后端通过解析生成的作业流运行的DAG图,利用DAG中各个节点的类型来确定Flink中的算子类型,从而将作业流运行的DAG转化为Flink执行的DAG。步骤S13-S14对应于生成作业流执行图后的作业调度执行过程。此外,在一些实施例中,在作业调度执行过程中,还包括对底层元数据进行记录和存储,这将在下文结合图4进行详细描述。根据一些实施例,对底层元数据进行记录和存储包括收集DAG作业流运行的指标信息,通过counter和gauge进行指标计算,并且存储计算后的指标信息。这实现了对运行指标信息的统一管理。指标信息可以按照作业流名称或作业流ID进行存储。根据一些实施例,对底层元数据进行记录和存储还包括从作业运行集群接收并存储DAG作业流运行的流通数据元信息,从而实现了对流通数据元信息的统一管理。
需要说明的是,在这里对步骤的描述中,消息队列的加入是为了减轻不同模块的耦合程度,但本公开不限于此,本公开的思想也适用于其他常见的不依赖于消息队列的消息与数据传输方法。
图2示出了本公开的示例性系统架构200。
如图2所示,示例性系统架构包括:DAG生成模块210,用于执行步骤S11中描述的方法;DAG处理模块220,用于执行步骤S12中描述的方法;作业提交模块230,用于执行步骤S13和S14中描述的方法;作业运行集群240,用于作业运行;消息队列250,用于对DAG生成模块210、DAG处理模块220和作业提交模块230进行解耦;指标采集系统260,用于可选地对运行中的指标进行计算;以及数据存储系统270,用于持久化运行数据等。
模块的划分及命名仅为示例性的。例如,DAG处理模块220根据其功能也可以被称为DAG加载、解析和处理模块。作业提交模块230可以被称为程序提交模块或者业务提交模块。作业提交模块230和作业运行集群240可以合并为作业提交运行模块,或称为程序提交运行模块。作业运行集群240可以称为程序运行集群、业务运行集群等。作业提交模块230可以位于本地,而作业运行集群240可以位于远程。或者,作业提交模块230和作业运行集群240可以共同定位。指标采集系统260可以被称为指标系统或指标处理系统。如本领域人员理解的,这里模块的划分仅为叙述方便和功能性表示,而非架构上的限制。
在上文描述的步骤S12处,DAG生成模块210可以将第一DAG描述信息发布到消息队列250。在这样的实施例中,DAG处理模块220通过从消息队列250订阅话题(topic),加载生成的第一DAG描述信息。
在上文描述的步骤S13处,作业提交模块230可以例如通过从消息队列订阅,获得生成的适于Flink的作业流信息。作业提交模块230可以包括用于对资源进行统一管理的模块。具体地,在作业运行集群240是yarn的情况下,资源管理模块可以是用于简化Yarn上应用程序开发的项目Apache Twill,以下称为twill。作业提交模块230对程序进行打包,并且然后将打包的作业提交至twill。twill对作业包进行统一管理。例如,twill的执行模块在接收到打包程序后,解压程序包,利用配置信息,配置程序运行的环境,然后通过Fink run的方式将业务作业提交到集群240中。
此外,如将在下文参考图4详细描述的,对于底层元数据,DAG处理模块还会可选地经由消息队列250,将指标信息提交到指标采集系统260。指标采集系统260对指标信息进行计算,并且将计算出的指标持久化在数据存储系统270中。作业提交模块230还将作业流数据元信息提交到数据存储系统270。此外,在作业运行之后,运行的日志信息也被持久化在数据存储系统270中。
接下来,参照图3A-图3C对DAG在Flink中的作业流数据流通进行描述,并且具体地说明了遍历DAG将DAG节点与Flink算子适配封装设计的过程。
图3A是DAG描述信息适配过程的流程图。首先,在S31中,对生成的来自用户侧的DAG节点描述信息进行解析。这一步骤可以由DAG处理模块220完成。根据一个实施例,来自用户侧的DAG包括四种常见节点类型,数据源型(Source)、数据转换型(Transform)、数据分析型(Analytic)和目的端型(Sink)。参考图3B,框310是来自用户侧的DAG节点图的一个示例。
在S32处,将属于第一类型集合的DAG节点中的不同的DAG节点适配成Flink算子。
根据一些实施例,所述属于第一类型集合的DAG节点至少包括数据源端节点、数据转换节点、数据关联节点、数据聚合节点和目的端节点,并且,所述将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点包括将所述属于第一类型集合的DAG节点中的不同类型的节点以相同的数据结构分别适配成相应的Flink算子。这样的DAG节点类型集合涵盖了用户友好且完善的编程逻辑。
在本公开中,对上述节点类型到Flink的算子的适配进行了设计。图3C示出了根据本实施例的不同DAG节点类型的流通图,其中数据关联节点、数据聚合节点被统称为数据分析型节点。
根据一些实施例,将所述属于第一类型集合的DAG节点中的数据源端节点适配成相应的Flink算子包括,对于数据源端节点:加载数据源端节点的配置信息和描述信息;初始化数据源端节点对象;以及指配一个Flink流对象。由此,对DAG图中的初始节点进行了转换与适配。
节点的配置信息可以从用户输入获得。在DAG执行图中,数据源端节点的个数确定了流式计算中初始化流对象的个数。
根据一些实施例,将所述属于第一类型集合的DAG节点中的数据转换节点适配成相应的Flink算子包括:加载所述数据转换节点的配置信息和描述信息;初始化数据转换节点对象;将所述数据转换节点对象中的数据转换逻辑封装到相应的Flink算子中;按照所述数据转换节点的代码逻辑,对所述相应的Flink算子进行数据转换;以及将经过数据转换的Flink算子传递给下游节点。由此,实现了数据转换节点的适配逻辑。节点的配置信息可以从用户输入获得。
数据关联型节点和数据聚合型节点属于数据分析型节点的两种不同类型。根据一些实施例,将所述属于第一类型集合的DAG节点中的数据关联节点适配成相应的Flink算子包括:加载所述数据关联节点的配置信息和描述信息;初始化数据关联节点对象;找出对与所述数据关联节点相关的数据流进行关联操作的关联键;以及根据所述关联键,对数据流中的数据进行归并。由此,实现了便于Flink执行的对数据进行关联的逻辑。节点的配置信息可以从用户输入获得。
根据一些实施例,将所述属于第一类型集合的DAG节点中的数据聚合节点适配成相应的Flink算子包括:加载所述数据聚合节点的配置信息和描述信息;初始化数据聚合节点对象;找出对与所述数据聚合节点相关的数据流进行聚合操作的聚合键;以及根据所述聚合键,对数据流中的数据进行聚合。由此,实现了便于Flink执行的对数据进行聚合操作的逻辑。
找出对流信息做聚合操作的聚合键发生在数据流进行聚合之前。对数据流中的数据进行聚合发生在数据流进行聚合之后。在数据聚合节点与Flink算子的适配过程中,还需要考虑加窗的问题。可以使用滚动窗口进行加窗。替选地,加窗是通过配置方式加载进来的。节点的配置信息可以从用户输入获得。
目的端节点是一个比较特殊的节点类型。目的端节点既是作业流数据流通的终端,也是元数据的写入点。根据一些实施例,将所述属于第一类型集合的DAG节点中的目的端节点适配成相应的Flink算子包括:加载所述目的端节点的配置信息和描述信息;初始化目的端节点对象;将所述目的端节点对象封装成可运行对象,放入线程池中;在DAG节点遍历完毕后,触发所述线程池中的所述目的端节点对象;以及将数据写入所述目的端节点对象。由此,对作业流数据的终端进行了设计,并且使得Flink的执行业务数据更加完整。节点的配置信息可以从用户输入获得。
在步骤S33,经过上述适配过程,生成Flink算子的DAG执行图。参考图3B,框330是转换获得的适配成Flink算子的DAG执行图的一个示例。为了方便和区分,在本文中,适配成Flink算子的DAG执行图也被称为第二DAG节点图。第二DAG节点图由常见的适于Flink引擎的DAG节点类型组成。为了方便和区分,适于Flink引擎的DAG节点类型的集合可以被称为第二节点类型集合。根据一些实施例,第二节点类型集合可以包括数据流(DataStream)节点、分流(split)节点、数据映射(map)节点、扁平映射(flat map)节点、简单数据流(SimpleDataStream)节点、合并(union)节点、数据目的端节点等,但是本公开不限于此。第二节点类型集合可以包括适于由Flink引擎执行的各种节点类型。
除了不同的DAG节点到Flink算子的适配过程之外,本公开还对底层元数据的流通与储存进行了统一设计。将参考图4进行详细描述DAG在Flink中的底层元数据流通。
底层的元数据包含整个作业流的指标信息和数据元信息。底层的元数据采用key-value(键-值,或简称kv)形式存储。当作业流在Flink上完成计算之后,会进行指标信息和数据元信息的写入。
作业提交模块230将作业流运行的指标信息通过序列化过程后,发布到消息队列250。指标信息包括例如各个节点的输入、输出数据量、作业的执行时间、作业流的错误信息等统计信息。
指标采集系统260在订阅到消息之后,解析消息内容,根据不同的数据信息,确定指标的计算方式。本公开中提供两种计算方式,分别是Counter和Gauge。其中Counter是指单调递增的指标求和,作为示例可以用来表示服务的请求数、已完成的任务数、错误发生的次数等。Gauge是离散型的指标量度,用于样本数据可以任意变化的指标,例如温度或者内存使用率,或者当前并发请求的数量等。
在完成各项指标计算之后,指标采集系统260按照作业流的名称或作业流ID、指标名称和时间戳信息形成当前指标的key,并且在数据存储系统270中对指标采用如上所述的kv形式进行存储。
关于作业流的流通数据元信息,当提交到作业流运行集群上的作业流程序运行完毕之后,作业流的流通数据元信息会直接存入到存储系统270中,其中数据名称、数据ID和时间戳构成存储信息的key值。
下面参考图5描述作业流提交阶段运行的详细过程以及数据流通。如上所述,作业流提交系统获取适配后的DAG执行信息。根据一些实施例,DAG处理模块将节点信息与Flink算子进行适配之后,将作业流执行信息发布到消息队列250中,此后,作业提交模块230通过从消息队列订阅消息相关的话题,从消息队列接收执行信息。在其他实施方式中,也可以不通过消息队列,从DAG处理模块230直接接收经处理的DAG执行信息。
作业提交模块230对接收的执行信息进行解析,确定流式计算的程序的执行入口。
随后,作业提交模块230将主程序、DAG节点程序打包。作业提交模块230可以包括用于对资源进行统一管理的模块。具体地,在作业运行集群240是yarn的情况下,资源管理模块可以是用于简化Yarn上应用程序开发的项目Apache Twill,以下称为twill。作业提交模块可以将整个作业程序包提交到twill模块,由twill对程序包进行统一的资源分配和程序管理,并随后提交到作业运行集群。例如,twill的执行模块在接收到打包程序后,解压程序包,利用配置信息,配置程序运行的环境,然后通过Fink run的方式将业务作业提交到集群240中。
根据不同的实施例,作业运行集群相对于作业提交模块可以位于本地,也可以位于远程。根据作业运行集群定位不同,提交的方法也会不同,这将在下文参考图5进行详细描述。
具体地,DAG处理模块在解析DAG后,将作业执行图发布到消息队列中。作业提交模块订阅相关话题(topic)的消息,通过解析、提取消息中的有效执行信息,打包作业程序。由于每个作业流逻辑的需求不同,运行实例不同,并且需要分配的资源大小也不同,考虑到作业流执行的异构性,统一管理、运行程序包,将作业流作业提交到集群中,启动程序运行,其中程序运行的各类指标通过消息队列经过指标采集系统计算之后,持久化在存储系统中。程序中的作业流数据的元信息和程序运行的日志信息也会被持久化在存储系统中,供下游的监控数据服务系统使用。
在现有技术中,一般采用DAG节点分开管理、分别有独立的接口的方式,将每个节点类型的描述信息与相应的节点执行逻辑相结合,并且按照DAG节点类型分别封装。这样的独立管理方式便于编程的分工协作,但是这样的结构导致在提交到运行集群时,由于DAG的不统一,需要各个DAG节点独立提交,因而在远程提交的场景下会造成很大的开销和缓慢的预加载时间。此外,对于Java开发的应用程序,程序类加载的机制依托JVM的双亲委派模型,在作业流逻辑繁杂的场景中,不恰当的类加载操作会导致jar包冲突等问题。
为了解决该问题,由于计算过程涉及有限个DAG节点的参与,对于DAG交互的流式计算场景,以加速程序的初始化,提升计算效率。
具体地,根据本公开的一个实施例,将Flink引擎需要用到的不同类型的节点的节点执行逻辑,采用统一的类依赖,封装在统一的代码框架下。因此,在形成程序包时,能够将不同类型的节点的作业流描述信息与不同类型的节点的运算逻辑封装在一起,而不再需要按照节点独立封装。通过这样的设计,可以将DAG执行包或者程序包作为一个完整的jar包提交到集群上,由此能够减少远程提交任务时的包拷贝次数和网络开销,加速程序初始化的过程,并且在网络错误传输失败的场景下,可以对完整的包进行断点续传,从而增加架构的容错能力。
基于Flink计算集群和提交系统是否在一个集群,并且具体地,基于作业运行集群240相对于作业提交模块230是否位于本地,在接收到程序之后,可以通过远程提交方式和本地提交方式两种方式,将程序提交至运行集群:
接下来,参照图6描述根据一个实施例的远程提交方式的具体步骤。在Flink计算集群和提交模块不在一个集群的情况下,能够使用远程提交方式。
在步骤S61,作业提交模块通过从例如消息队列订阅消息相关的话题,从消息队列接收与执行信息相关的消息。
在步骤S62,对接收的消息进行解析,提取DAG执行信息。
在步骤S63,对提取的DAG执行信息进行打包。根据一些实施例,打包的执行信息被提交到twill进行统一管理。
在步骤S64,资源分配步骤。根据一些实施例,资源分配步骤由twill进行。根据一些实施例,twill按照作业流逻辑的复杂程度,选取网络环境中最优的执行机器和yarn上的执行队列。
在步骤S65,进行程序执行环境的初始化。根据一些实施例,twill模块通过ssh的方式,将程序运行的所需的jar包、配置信息等拷贝到资源环境中,从而给程序构造一个本地的执行环境。根据一些实施例,DAG中不同节点被封装在统一的代码框架下,因此DAG执行信息可以作为一个完整的JAR包提交。
在步骤S66,实现程序的提交运行。根据一些实施例,由twill模块利用Flink run的方式,将作业流程序最终提交到在步骤S64中所选择的、yarn上的相应队列中用于执行。
在步骤S67,进行运行日志的回传和存储。根据一些实施例,在程序执行之后,将程序运行的日志信息通过端口转发的方式,回传到消息队列,并且通过消息队列最终持久化在存储系统中。
下面参照图7描述根据一个实施例的本地提交方式的具体步骤。在Flink计算集群和提交系统在一个集群的情况下,能够使用本地提交方式。
在步骤S71,作业提交模块通过从例如消息队列订阅消息相关的话题,从消息队列接收与执行信息相关的消息。
在步骤S72,对接收的消息进行解析,提取DAG执行信息。
在步骤S73,对提取的DAG执行信息进行打包。
在步骤S75,进行程序执行环境的初始化。在一个实施方式中,将程序运行的需要的配置文件、jar包等下载到本地的一个临时目录下。
在步骤S66,实现程序的提交运行。根据一些实施例,利用Flink run的方式将程序提交到运行集群中。
在步骤S67,进行运行日志的回传和存储。根据一些实施例,在程序运行过程中将程序运行日志发布到消息队列,随后通过kafka log append将日志打到控制台,并持久化在存储系统中。
结合图6和图7描述了两种程序提交运行机制,尤其是远程提交的实现,拓宽了使用场景,减少了分布式程序运行代价。
此外,twill的引入能对程序包进行统一的抽象和管理,在复杂架构情况下,优于直接提交到yarn。也就是说twill模块的引入一方面可以统一管理程序的运行资源和环境,另一方面可以减轻在yarn上开发、运行分布式程序的复杂程度。
图8是示出根据一个示例性实施例的用于基于DAG交互的流式计算的装置的框图。
根据该示例性实施例的用于基于DAG交互的流式计算的装置800可以包括:作业生成单元801、作业处理单元802、以及作业提交单元803。其中,作业生成单元801被配置成根据由属于第一类型集合的DAG节点组成的第一DAG节点图,生成第一DAG作业流描述信息;作业处理单元802被配置成通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将所述第一DAG作业流描述信息转换为第二DAG作业流描述信息;以及作业提交单元被配置成将所述第二DAG作业流描述信息封装为DAG执行包,并且将所述DAG执行包发送到作业运行集群,其中,所述DAG执行包包括第二DAG作业流描述信息和第二DAG作业流描述信息中的节点的运算逻辑。由此,能够实现高效的流式计算。
在一些实施例中,所述作业运行集群相对于所述作业提交单元远程定位,以实现远程提交场景。在一些实施例中,为了减轻作业运行集群的负担,所述作业提交单元还包括twill模块,并且其中,将所述第二DAG作业流描述信息封装为DAG执行包的步骤和/或将所述DAG执行包发送到作业运行集群的步骤是通过所述twill模块来完成的。在一些实施例中,为了实现系统架构的多样性,所述作业生成单元、所述作业处理单元和所述作业提交单元通过消息队列彼此解耦。
应当理解,前述结合图1-7对方法步骤进行的描述,同样适用于图8中执行相应方法步骤的单元,这里不再赘述。
根据本公开的一个方面,还提供一种电子设备,可以包括:处理器;以及存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述的用于基于DAG交互的流式计算的方法。
根据本公开的另一方面,还提供一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行上述的用于基于DAG交互的流式计算的方法。
参见图9所示,现将描述计算设备2000,其是可以应用于本公开的各方面的电子设备的示例。计算设备2000可以是被配置为执行处理和/或计算的任何机器,可以是但不限于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数字助理、机器人、智能电话、车载计算机或其任何组合。上述计算方法可以全部或至少部分地由计算设备2000或类似设备或系统实现。
计算设备2000可以包括(可能经由一个或多个接口)与总线2002连接或与总线2002通信的元件。例如,计算设备2000可以包括总线2002、一个或多个处理器2004、一个或多个输入设备2006以及一个或多个输出设备2008。一个或多个处理器2004可以是任何类型的处理器,并且可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。输入设备2006可以是能向计算设备2000输入信息的任何类型的设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或遥控器。输出设备2008可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。计算设备2000还可以包括非暂时性存储设备2010或者与非暂时性存储设备2010连接,非暂时性存储设备可以是非暂时性的并且可以实现数据存储的任何存储设备,并且可以包括但不限于磁盘驱动器、光学存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁介质,光盘或任何其他光学介质、ROM(只读存储器)、RAM(随机存取存储器)、高速缓冲存储器和/或任何其他存储器芯片或盒、和/或计算机可从其读取数据、指令和/或代码的任何其他介质。非暂时性存储设备2010可以从接口拆卸。非暂时性存储设备2010可以具有用于实现上述方法和步骤的数据/程序(包括指令)/代码。计算设备2000还可以包括通信设备2012。通信设备2012可以是使得能够与外部设备和/或与网络通信的任何类型的设备或系统,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备和/或芯片组,例如蓝牙TM设备、1302.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算设备2000还可以包括工作存储器2014,其可以是可以存储对处理器2004的工作有用的程序(包括指令)和/或数据的任何类型的工作存储器,并且可以包括但不限于随机存取存储器和/或只读存储器设备。
软件要素(程序)可以位于工作存储器2014中,包括但不限于操作系统2016、一个或多个应用程序2018、驱动程序和/或其他数据和代码。用于执行上述方法和步骤的指令可以被包括在一个或多个应用程序2018中,并且上述计算方法可以通过由处理器2004读取和执行一个或多个应用程序2018的指令来实现。更具体地,上述计算方法中,步骤S101~步骤S103可以例如通过处理器2004执行具有步骤S101~步骤S103的指令的应用程序2018而实现。此外,上述计算方法中的其它步骤可以例如通过处理器2004执行具有执行相应步骤中的指令的应用程序2018而实现。软件要素(程序)的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质(例如上述存储设备2010)中,并且在执行时可以被存入工作存储器2014中(可能被编译和/或安装)。软件要素(程序)的指令的可执行代码或源代码也可以从远程位置下载。
还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现特定元件。例如,所公开的方法和设备中的一些或全部可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
还应该理解,前述方法可以通过服务器-客户端模式来实现。例如,客户端可以接收用户输入的数据并将所述数据发送到服务器。客户端也可以接收用户输入的数据,进行前述方法中的一部分处理,并将处理所得到的数据发送到服务器。服务器可以接收来自客户端的数据,并且执行前述方法或前述方法中的另一部分,并将执行结果返回给客户端。客户端可以从服务器接收到方法的执行结果,并例如可以通过输出设备呈现给用户。
还应该理解,计算设备2000的组件可以分布在网络上。例如,可以使用一个处理器执行一些处理,而同时可以由远离该一个处理器的另一个处理器执行其他处理。计算系统2000的其他组件也可以类似地分布。这样,计算设备2000可以被解释为在多个位置执行处理的分布式计算系统。例如,计算设备2000可以实现为云平台的一部分。该云平台抽象云的硬件(例如,服务器)和软件资源的底层功能。资源可以包括在远离计算设备2000的服务器上执行计算机处理时可以使用的应用和/或数据。资源还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络的订户网络提供的服务。
根据本公开实施例的技术方案,能够提高流式计算的效率,并且改善用户体验。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
Claims (18)
1.一种基于有向无环图DAG交互的流式计算方法,包括:
根据由属于第一类型集合的DAG节点组成的第一DAG节点图,生成第一DAG作业流描述信息;
通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将所述第一DAG作业流描述信息转换为第二DAG作业流描述信息;
将所述第二DAG作业流描述信息封装为DAG执行包,所述DAG执行包包括所述第二DAG作业流描述信息和所述第二DAG作业流描述信息中的节点的运算逻辑;以及,
将所述DAG执行包发送到作业运行集群,
其中,所述属于第一类型集合的DAG节点至少包括数据源端节点、数据转换节点、数据关联节点、数据聚合节点和目的端节点,并且所述将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点包括将所述属于第一类型集合的DAG节点中的不同类型的节点以相同的数据结构分别适配成相应的Flink算子,并且
所述方法还包括针对所述第二DAG作业流描述信息中所有的不同节点类型,仅生成一个DAG执行包。
2.根据权利要求1所述的方法,其中,将所述属于第一类型集合的DAG节点中的数据源端节点适配成相应的Flink算子包括:
加载所述数据源端节点的配置信息和描述信息;
初始化数据源端节点对象;以及,
指配一个Flink流对象。
3.根据权利要求1或2所述的方法,其中,将所述属于第一类型集合的DAG节点中的数据转换节点适配成相应的Flink算子包括:
加载所述数据转换节点的配置信息和描述信息;
初始化数据转换节点对象;
将所述数据转换节点对象中的数据转换逻辑封装到相应的Flink算子中;
按照所述数据转换节点的代码逻辑,对所述相应的Flink算子进行数据转换;以及
将经过数据转换的Flink算子传递给下游节点。
4.根据权利要求1或2所述的方法,其中,将所述属于第一类型集合的DAG节点中的数据关联节点适配成相应的Flink算子包括:
加载所述数据关联节点的配置信息和描述信息;
初始化数据关联节点对象;
找出对与所述数据关联节点相关的数据流进行关联操作的关联键;以及
根据所述关联键,对数据流中的数据进行归并。
5.根据权利要求1或2所述的方法,其中,将所述属于第一类型集合的DAG节点中的数据聚合节点适配成相应的Flink算子包括:
加载所述数据聚合节点的配置信息和描述信息;
初始化数据聚合节点对象;
找出对与所述数据聚合节点相关的数据流进行聚合操作的聚合键;以及
根据所述聚合键,对数据流中的数据进行聚合。
6.根据权利要求1或2所述的方法,其中,将所述属于第一类型集合的DAG节点中的目的端节点适配成相应的Flink算子包括:
加载所述目的端节点的配置信息和描述信息;
初始化目的端节点对象;
将所述目的端节点对象封装成可运行对象,放入线程池中;
在DAG节点遍历完毕后,触发所述线程池中的所述目的端节点对象;以及
将数据写入所述目的端节点对象。
7.根据权利要求1所述的方法,其中,所述第一DAG作业流描述信息与所述第二DAG作业流描述信息采用json格式。
8.根据权利要求1所述的方法,其中,所述第一DAG作业流描述信息与所述第二DAG作业流描述信息采用相同的数据封装。
9.根据权利要求1所述的方法,还包括从作业运行集群接收DAG作业流运行的指标信息,通过counter和gauge进行指标计算,并且存储计算后的指标信息。
10.根据权利要求1所述的方法,还包括从作业运行集群接收并存储DAG作业流运行的流通数据元信息。
11.根据权利要求1所述的方法,其中,所述第一DAG节点图是通过用户对所述属于第一类型集合的DAG节点的拖拽形成的。
12.一种基于有向无环图DAG交互的流式计算装置,其特征在于,包括:
作业生成单元,被配置成根据由属于第一类型集合的DAG节点组成的第一DAG节点图,生成第一DAG作业流描述信息;
作业处理单元,被配置成通过将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点,将所述第一DAG作业流描述信息转换为第二DAG作业流描述信息;以及
作业提交单元,被配置成将所述第二DAG作业流描述信息封装为DAG执行包,并且将所述DAG执行包发送到作业运行集群,其中,所述DAG执行包包括第二DAG作业流描述信息和第二DAG作业流描述信息中的节点的运算逻辑,
其中,所述属于第一类型集合的DAG节点至少包括数据源端节点、数据转换节点、数据关联节点、数据聚合节点和目的端节点,并且所述将属于第一类型集合的DAG节点适配成适于Flink引擎的属于第二类型集合的DAG节点包括将所述属于第一类型集合的DAG节点中的不同类型的节点以相同的数据结构分别适配成相应的Flink算子,并且
所述装置还包括针对所述第二DAG作业流描述信息中所有的不同节点类型,仅生成一个DAG执行包。
13.根据权利要求12所述的装置,其中,所述作业运行集群相对于所述作业提交单元远程定位。
14.根据权利要求12所述的装置,其中,所述作业提交单元还包括twill模块,并且其中,将所述第二DAG作业流描述信息封装为DAG执行包的步骤和/或将所述DAG执行包发送到作业运行集群的步骤是通过所述twill模块来完成的。
15.根据权利要求12所述的装置,其中,所述作业生成单元、所述作业处理单元和所述作业提交单元通过消息队列彼此解耦。
16.一种电子设备,包括:
处理器;以及
存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-11中任一项所述的方法。
17.一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行根据权利要求1-11中任一项所述的方法。
18.一种计算机程序产品,包括计算机指令,所述计算机指令在由处理器执行时,实现根据权利要求1-11中任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010622403.5A CN111782371B (zh) | 2020-06-30 | 2020-06-30 | 基于dag交互的流式计算方法与装置 |
KR1020210028051A KR102528210B1 (ko) | 2020-06-30 | 2021-03-03 | Dag 상호 작용을 기반으로 한 스트리밍 컴퓨팅 방법 및 장치 |
EP21161178.5A EP3933591A1 (en) | 2020-06-30 | 2021-03-08 | Stream computing method and apparatus based on dag interaction |
US17/197,804 US20210406068A1 (en) | 2020-06-30 | 2021-03-10 | Method and system for stream computation based on directed acyclic graph (dag) interaction |
JP2021037990A JP7197620B2 (ja) | 2020-06-30 | 2021-03-10 | Dagインタラクションに基づくストリーミングコンピューティング方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010622403.5A CN111782371B (zh) | 2020-06-30 | 2020-06-30 | 基于dag交互的流式计算方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782371A CN111782371A (zh) | 2020-10-16 |
CN111782371B true CN111782371B (zh) | 2024-05-14 |
Family
ID=72761485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010622403.5A Active CN111782371B (zh) | 2020-06-30 | 2020-06-30 | 基于dag交互的流式计算方法与装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210406068A1 (zh) |
EP (1) | EP3933591A1 (zh) |
JP (1) | JP7197620B2 (zh) |
KR (1) | KR102528210B1 (zh) |
CN (1) | CN111782371B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328458B (zh) * | 2020-11-27 | 2023-07-25 | 杭州安恒信息技术股份有限公司 | 基于flink数据引擎的数据处理方法、装置 |
CN112506497B (zh) * | 2020-11-30 | 2021-08-24 | 北京九章云极科技有限公司 | 一种数据处理方法和数据处理系统 |
CN112417226B (zh) * | 2020-12-02 | 2024-01-30 | 江苏赛融科技股份有限公司 | 基于dag变换的大数据处理方法 |
CN112506737A (zh) * | 2020-12-02 | 2021-03-16 | 杭州玳数科技有限公司 | 一种全链路监控flink实时作业健康状况的方法 |
CN112632082B (zh) * | 2020-12-30 | 2024-06-07 | 中国农业银行股份有限公司 | 一种创建Flink作业的方法及装置 |
CN112732370B (zh) * | 2020-12-31 | 2024-02-02 | 中国工商银行股份有限公司 | 业务流程调整方法及装置 |
CN112965994B (zh) * | 2021-03-31 | 2022-05-03 | 杭州海康威视数字技术股份有限公司 | 一种Flink框架的顺序写方法、装置及电子设备 |
CN113326131B (zh) * | 2021-06-03 | 2023-03-21 | 深信服科技股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113656369A (zh) * | 2021-08-13 | 2021-11-16 | 辽宁华盾安全技术有限责任公司 | 一种大数据场景下的日志分布式流式采集及计算方法 |
CN114356178B (zh) * | 2022-01-12 | 2024-01-19 | 平安科技(深圳)有限公司 | 交互内容的配置方法、装置、终端设备及存储介质 |
CN114490763B (zh) * | 2022-01-24 | 2024-07-26 | 全知科技(杭州)有限责任公司 | 一种单机高性能批流一体数据处理系统 |
CN114610765B (zh) * | 2022-03-14 | 2024-05-03 | 平安国际智慧城市科技股份有限公司 | 流计算方法、装置、设备及存储介质 |
CN114610294B (zh) * | 2022-05-09 | 2022-08-09 | 湖南星河云程信息科技有限公司 | 仿真实验效能指标并发计算控制方法、装置和计算机设备 |
CN115334152B (zh) * | 2022-09-16 | 2023-03-28 | 北京向量栈科技有限公司 | 提交结构化机器学习计算任务到计算集群的方法 |
CN116050713A (zh) * | 2023-03-13 | 2023-05-02 | 深圳迅策科技有限公司 | 一种指标计算方法、装置、电子设备及计算机程序产品 |
CN117472553B (zh) * | 2023-12-28 | 2024-05-03 | 中移(苏州)软件技术有限公司 | 一种工作流处理方法、装置、处理设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445926A (zh) * | 2018-11-09 | 2019-03-08 | 杭州玳数科技有限公司 | 数据任务调度方法及数据任务调度系统 |
RO133453A2 (ro) * | 2017-12-28 | 2019-06-28 | Siemens Aktiengesellschaft | Motor de procesare a semnalelor şi evenimentelor |
CN110532072A (zh) * | 2019-07-24 | 2019-12-03 | 中国科学院计算技术研究所 | 基于微内核操作系统的分布式流式数据处理方法及系统 |
CN110990059A (zh) * | 2019-11-28 | 2020-04-10 | 中国科学院计算技术研究所 | 一种用于倾斜数据的流式计算引擎运行方法及系统 |
US10628217B1 (en) * | 2017-09-27 | 2020-04-21 | Amazon Technologies, Inc. | Transformation specification format for multiple execution engines |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10404787B1 (en) * | 2015-04-06 | 2019-09-03 | EMC IP Holding Company LLC | Scalable distributed data streaming computations across multiple data processing clusters |
US9344751B1 (en) * | 2015-05-08 | 2016-05-17 | Istreamplanet Co. | Coordination of fault-tolerant video stream processing in cloud-based video streaming system |
US10672156B2 (en) * | 2016-08-19 | 2020-06-02 | Seven Bridges Genomics Inc. | Systems and methods for processing computational workflows |
US10261767B2 (en) * | 2016-09-15 | 2019-04-16 | Talend, Inc. | Data integration job conversion |
US11573965B2 (en) * | 2016-09-15 | 2023-02-07 | Oracle International Corporation | Data partitioning and parallelism in a distributed event processing system |
US10891326B2 (en) * | 2017-01-05 | 2021-01-12 | International Business Machines Corporation | Representation of a data analysis using a flow graph |
CN109710215B (zh) * | 2018-12-25 | 2022-05-27 | 福建南威软件有限公司 | 分布式流计算的可视化流程处理引擎及其使用方法 |
CN109726216A (zh) * | 2018-12-29 | 2019-05-07 | 北京九章云极科技有限公司 | 一种基于有向无环图的数据处理方法和处理系统 |
CN111309752B (zh) * | 2019-11-26 | 2023-04-25 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
-
2020
- 2020-06-30 CN CN202010622403.5A patent/CN111782371B/zh active Active
-
2021
- 2021-03-03 KR KR1020210028051A patent/KR102528210B1/ko active IP Right Grant
- 2021-03-08 EP EP21161178.5A patent/EP3933591A1/en not_active Withdrawn
- 2021-03-10 JP JP2021037990A patent/JP7197620B2/ja active Active
- 2021-03-10 US US17/197,804 patent/US20210406068A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628217B1 (en) * | 2017-09-27 | 2020-04-21 | Amazon Technologies, Inc. | Transformation specification format for multiple execution engines |
RO133453A2 (ro) * | 2017-12-28 | 2019-06-28 | Siemens Aktiengesellschaft | Motor de procesare a semnalelor şi evenimentelor |
CN109445926A (zh) * | 2018-11-09 | 2019-03-08 | 杭州玳数科技有限公司 | 数据任务调度方法及数据任务调度系统 |
CN110532072A (zh) * | 2019-07-24 | 2019-12-03 | 中国科学院计算技术研究所 | 基于微内核操作系统的分布式流式数据处理方法及系统 |
CN110990059A (zh) * | 2019-11-28 | 2020-04-10 | 中国科学院计算技术研究所 | 一种用于倾斜数据的流式计算引擎运行方法及系统 |
Non-Patent Citations (2)
Title |
---|
基于Flink的任务调度策略;何贞贞;于炯;李梓杨;国冰磊;;计算机工程与设计;20200516(05);全文 * |
流式处理框架发展综述;戚红雨;;信息化研究;20191220(06);全文 * |
Also Published As
Publication number | Publication date |
---|---|
KR20220002070A (ko) | 2022-01-06 |
JP2022013649A (ja) | 2022-01-18 |
US20210406068A1 (en) | 2021-12-30 |
JP7197620B2 (ja) | 2022-12-27 |
KR102528210B1 (ko) | 2023-05-02 |
EP3933591A1 (en) | 2022-01-05 |
CN111782371A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782371B (zh) | 基于dag交互的流式计算方法与装置 | |
JP7210713B2 (ja) | オンデマンドコード実行システムにおける実行環境についての効率的な状態メンテナンス | |
US10447772B2 (en) | Managed function execution for processing data streams in real time | |
US20230004434A1 (en) | Automated reconfiguration of real time data stream processing | |
Sajjad et al. | Spanedge: Towards unifying stream processing over central and near-the-edge data centers | |
Khriji et al. | Design and implementation of a cloud-based event-driven architecture for real-time data processing in wireless sensor networks | |
Grover et al. | Data Ingestion in AsterixDB. | |
US9251205B2 (en) | Streaming delay patterns in a streaming environment | |
US8756335B2 (en) | Estimating load shed data in streaming database applications | |
US9524184B2 (en) | Open station canonical operator for data stream processing | |
US20140089373A1 (en) | Dynamic stream processing within an operator graph | |
CN106537347B (zh) | 用于分发和处理流的系统和方法 | |
US20180248772A1 (en) | Managing intelligent microservices in a data streaming ecosystem | |
CN112181393A (zh) | 前后端代码生成方法、装置、计算机设备及存储介质 | |
WO2023278574A1 (en) | Streaming analytics using a serverless compute system | |
US20220283878A1 (en) | Dependency-based data routing for distributed computing | |
US9158784B2 (en) | Compressing tuples in a streaming application | |
EP2690554A2 (en) | A method of operating a system for processing data and a system therefor | |
Munige | Near Real-Time Processing of Voluminous, High-Velocity Data Streams for Continuous Sensing Environments | |
US20240202207A1 (en) | Distributed function data transformation system | |
Michael et al. | Blue Danube: A Large-Scale, End-to-End Synchronous, Distributed Data Stream Processing Architecture for Time-Sensitive Applications | |
Li et al. | A quick response data collection and management system for digital twin production line based on cloud-fog-edge computing collaboration | |
Sun et al. | Formal Modeling and Verification of Kafka Producer-Consumer Communication in Mediator | |
Jarfors et al. | Bandwidth reductions gains through Edge Computing in connected cars | |
Apel et al. | Architectural Backbone Evaluation for Data Stream Processing within the WINNER DataLab A Project Focused Point of View |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |