CN114579261A - 多语言混合流的处理方法和装置 - Google Patents
多语言混合流的处理方法和装置 Download PDFInfo
- Publication number
- CN114579261A CN114579261A CN202210466377.0A CN202210466377A CN114579261A CN 114579261 A CN114579261 A CN 114579261A CN 202210466377 A CN202210466377 A CN 202210466377A CN 114579261 A CN114579261 A CN 114579261A
- Authority
- CN
- China
- Prior art keywords
- task
- language
- jobgraph
- nodes
- processing
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims description 3
- 238000000034 method Methods 0.000 claims abstract description 189
- 230000008569 process Effects 0.000 claims abstract description 155
- 238000012545 processing Methods 0.000 claims abstract description 80
- 230000003068 static effect Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 claims description 12
- 238000005457 optimization Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000011144 upstream manufacturing Methods 0.000 claims description 7
- 238000011157 data evaluation Methods 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 238000003860 storage Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013501 data transformation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010129 solution processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本说明书实施例提供了一种多语言混合流处理的方法和装置。具体技术方案包括:依据多语言混合流生成JobGraph(工作图),所述JobGraph中的至少一个工作节点具有语言类型属性标签;依据所述JobGraph生成Execution Graph(执行图),所述Execution Graph中包含不同语言类型的任务节点;针对不同语言类型的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
Description
技术领域
本说明书一个或多个实施例涉及人工智能技术领域,尤其涉及一种多语言混合流的处理方法和装置。
背景技术
随着对数据实时性的要求越来越高,越来越多的业务更加强调时效性。例如实时推荐、风险控制、天气预测等业务。这些业务促使流计算的应用越来越普及,出现了诸如Flink、Sparkstreaming、ray reltime等流处理引擎,并逐渐应用于人工智能领域。由于诸如Java、Python等语言具有各自的优势,因此往往会在在线学习的应用中包含不同语言的处理。这就需要流处理引擎支持多语言的混合流处理,然而现有的流处理引擎大多无法支持多语言的混合流处理。
发明内容
有鉴于此,本说明书一个或多个实施例描述了一种多语言混合流的处理方法和装置,能够支持多语言的混合流处理。
根据第一方面,提供了一种多语言混合流处理的方法,包括:
依据多语言混合流生成工作图JobGraph,所述JobGraph中的至少一个工作节点具有语言类型属性标签;
依据所述JobGraph生成执行图Execution Graph,所述ExecutionGraph中包含不同语言类型的任务节点;
针对不同语言类型的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
根据本说明书实施例中一可实现的方式,所述多语言包括:动态语言和静态语言。
根据本说明书实施例中一可实现的方式,所述JobGraph中的至少一个工作节点具有语言类型属性标签包括:所述JobGraph中采用动态语言的工作节点具有动态语言属性标签。
根据本说明书实施例中一可实现的方式,该方法还包括:
任务进程从配置文件获取加载的依赖信息或模型,对上游处理进程传输的数据进行处理,将处理后的数据传输给下游任务进程。
根据本说明书实施例中一可实现的方式,动态语言的任务进程与静态语言的任务进程之间通过远程过程调用RPC进行数据传输。
根据本说明书实施例中一可实现的方式,该方法还包括:
创建优化节点对应的进程;
所述优化节点对应的进程监控至少一个任务进程的运行状态,基于所述运行状态确定所监控的任务进程执行有向有环图DCG任务或有向无环图DAG任务。
根据本说明书实施例中一可实现的方式,基于所述运行状态确定所监控的任务进程执行有向有环图DCG任务或有向无环图DAG任务包括:
基于所述运行状态以及预设的运行状态与目的任务进程之间的对应关系,确定所监控任务进程的运行状态对应的目的任务进程,触发目的任务进程执行任务处理,其中所述目的任务进程为所述所监控任务进程的其中一个上游任务进程。
根据本说明书实施例中一可实现的方式,所监控任务进程为数据评估进程,所述目的任务进程为数据校准进程;和/或,
所监控任务进程为基于模型的决策进程,所述目的任务进程为建模进程。
根据第二方面,提供了一种多语言混合流处理的装置,包括:
工作图生成单元,被配置为依据多语言混合流生成工作图JobGraph,所述JobGraph中的至少一个工作节点具有语言类型属性标签;
执行图生成单元,被配置为依据所述JobGraph生成执行图Execution Graph,在所述ExecutionGraph中不同语言的处理被划分为不同的任务节点;
任务创建单元,被配置为针对不同语言的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
根据第三方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第一方面的方法。
本说明书实施例提供的多语言混合流的处理方法和装置,在JobGraph中区分工作节点的语言类型,以针对不同语言的任务节点创建独立的任务进程,每个任务进程执行完相应的处理任务后可以直接传递数据至下一任务进程,相比较现有技术中父子进程中子进程执行完相应的处理任务后需要先返回父进程再由父进程传递数据至下一任务进程的方式,减少了额外的数据序列化处理,因此具有更高的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本说明书实施例所基于的流处理引擎的系统架构图;
图2示出了本说明书实施例提供的多语言混合流处理的方法流程图;
图3示出了本说明书实施例提供的DAG任务的实例图;
图4示出了本说明书实施例提供的DCG任务的实例图;
图5示出了本说明书实施例提供的多语言混合流处理的装置示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
首先需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
如前所述,由于诸如Java、Python等语言具有各自的优势,因此往往会在在线学习的应用中包含不同语言的处理。例如,使用Python语言实现建模和基于模型的决策,使用Java语言实现诸如数据解析、数据校准、数据评估、数据转化等数据处理。但是目前,传统的流处理引擎大多无法支持多语言的混合流处理。以Python和Java语言混合流为例,由于流处理引擎无法区分不同语言的任务,因此所有任务进程均针对Java语言。个别流处理引擎为了实现混合流处理,需要在Java进程中使用fork方式创建Python子进程。由Python子进程执行诸如建模的处理,后续数据处理仍回到JVM进程中处理。
举个例子,存在任务进程A->B->C,若任务进程A和C均使用Java语言,任务进程B使用Python语言,则在Java任务进程A进行处理后发现任务进程B为python语言类型,则使用fork方式创建Python子进程B,任务进程A作为B的父进程。作为子进程的任务进程B处理完后需要再返回到任务进程A,由任务进程A传递数据到任务进程C。这种方式主要存在以下缺陷:
1)由于任务进程之间的数据传输是需要进行序列化处理的,所谓序列化(Serialization)是将数据转换为可以存储或传输的形式的过程,任务进程之间的数据传输都需要进行序列化,包括父子进程之间。因此这种父子进程的方式引入了额外的序列化处理(主要反映在子进程处理完的数据需要再返回到父进程),也就带来了额外的性能开销。
2)在Java进程内部fork Python子进程的方式会出现找不到类、依赖冲突等问题。
针对于此,本说明书实施例提供了一种全新的思路。为了方便对本说明书实施例的理解,首先对本说明书实施例所基于的系统架构进行简单描述。如图1中所示,该系统架构主要包括客户端(Client)、JM(JobManager,管理节点)和TM(TaskManager,工作节点)。
其中,Client负责接收DataStream(即数据流,通常是应用程序),本说明书实施例中涉及的主要是多语言混合流。然后Client依据DataStream生成JobGraph(工作图),JobGraph中包含有工作节点以及工作节点之间的流向关系,然后将JobGraph提交给JM。
JM负责调度工作节点,依据JobGraph生成ExecutionGraph(执行图),ExecutionGraph可以看做是JobGraph的并行化版本。ExecutionGraph包括任务节点以及任务节点之间的流向关系。也就是说,JM将整个作业切分成多个Task(处理任务),然后发送到不同的TM上。
TM通常存在多个,负责提供计算资源从而对接收到的Task进行处理。
其中,JM会负责TM的注册,当创建一个TM时,TM会主动和JM建立RPC连接,JM会将TM的注册信息保存在本地,之后维持对TM的心跳检测。
应该理解,图1中的Client、JM和TM的数目仅仅是示意性的。根据实现需要,可以具有任意数目的Client、JM和TM。
图2示出了本说明书实施例提供的多语言混合流处理的方法流程图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行,该装置、设备、平台、设备集群均应用于图1所示系统架构。如图2所示,该方法包括:
步骤202,依据多语言混合流生成JobGraph,JobGraph中的至少一个工作节点具有语言类型属性标签。
步骤204,依据JobGraph生成执行图Execution Graph,Execution Graph中包含不同语言类型的任务节点。
步骤206,针对不同语言类型的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
本说明书实施例的核心思路在于,在JobGraph中区分工作节点的语言类型,以针对不同语言的任务节点创建独立的任务进程,每个任务进程执行完相应的处理任务后可以直接传递数据至下一任务进程,相比较现有技术中父子进程中子进程执行完相应的处理任务后需要先返回父进程再由父进程传递数据至下一任务进程的方式,减少了额外的数据序列化处理,因此具有更高的性能。
下面结合实施例对上述各步骤进行详细描述。首先对上述步骤202即“依据多语言混合流生成JobGraph,JobGraph中的至少一个工作节点具有语言类型属性标签”。
本步骤202可以由流处理引擎中的Client执行。用户可以通过Client输入DataStream。其中,用户可以是编程用户或者是算法用户等等,用户将需要实现的一些功能或逻辑对应的应用程序输入流处理引擎的Client。本说明书实施例中涉及的应用程序为多语言混合流(即代码流)的形式,即其中至少包括两种语言实现的处理。
本说明书实施例中所涉及的语言指的是用户在编写应用程序时所使用的编程语言。上述多语言可以包括动态语言和静态语言。其中,动态语言又称为弱类型语言,是运行时才能确定数据类型的语言。比如Php、Asp、JavaScript、Python、Perl等等。静态语言又称为强类型语言,是编译时变量的数据类型就可以确定的语言。比如Java、C、C++、C#等。
用户在编写应用程序时,通常会根据不同语言的特点和优势,针对不同的处理采用不同的语言。例如,建模和基于模型的决策等处理逻辑采用诸如Python等动态语言实现,数据源获取、数据解析、数据校准、数据评估、数据转化等数据处理采用诸如Java等静态语言实现。
Client首先根据DataStream生成StreamGraph(数据流图),StreamGraph通过类来表示程序的拓扑结构。然后Client进一步优化StreamGraph,将其中多个符合条件的节点chain(约束)在一起作为一个节点,生成JobGraph,目的是为了减少数据在节点之间流动所需要的传输消耗。
本说明书实施例中,生成的JobGraph中至少一个工作节点具有语言类型属性标签。由于通常应用程序在编写时底层语言大多采用静态语言,会有部分特别地采用动态语言,因此作为其中一种实现方式,可以将JobGraph中采用动态语言的节点进行语言属性标签的标注。例如,可以将JobGraph中执行建模和基于模型的决策的工作节点标注出Python标签。静态语言则采用默认的方式,例如默认未标注的语言为Java语言。
作为另一种可实现的方式,可以在JobGraph中对所有节点都标注语言类型属性标签,即对采用动态语言的节点和静态语言的节点都分别标注语言属性标签。
通常DataStream中会包含有处理逻辑所采用的语言类型信息,因为用户在编程过程中会调用相应语言的接口,例如toPythonstream()、toJavastream()等,因此Client能够从DataStream中获知各处理逻辑对应的语言类型信息,并在生成JobGraph时,对处理逻辑对应的工作节点进行语言类型属性的标注。
接下来对于步骤204即“依据JobGraph生成执行图Execution Graph”。
本步骤204可以由流处理引擎中的JM执行。
Client将在上面步骤202中生成的JobGraph输入JM,JM根据JobGraph生成Execution Graph。Execution Graph可以看做是JobGraph的并行化版本。Execution Graph的节点为任务节点,对应不同的处理任务,在本说明书实施例中,由于JobGraph中的工作节点对语言类型进行了区分,因此基于JobGraph生成的Execution Graph也就包含了不同语言类型的任务节点。
下面结合实施例对上述步骤206即“针对不同语言类型的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务”进行详细描述。
JM生成Execution Graph后,将各任务节点对应的Task(处理任务)分发到TM上执行。TM负责提供具体的计算资源对Task进行处理。由于本说明书实施例中,ExecutionGraph中包含不同语言类型的任务节点,使得TM能够清楚地区分各语言的Task。在具体执行时,可以针对不同语言类型的任务节点分别创建独立的任务进程,而不再采用父子进程的方式。
具体地,TM对各Task进行语言类型的识别,分别针对各语言类型的Task,分别创建对应语言的任务进程。例如,针对Java任务节点,启动Java worker(是基于Java的独立进程);针对Python任务节点,启动Python Worker(是基于Python的独立进程)。Java worker和Python Worker相互独立,两者之间的数据传输采用RPC方式。
举个例子,如图3中所示,假设DataStream对应的各处理任务包括:
Source(数据源)任务,用于从数据源读取数据,例如读取一条数据或批数据。
Parse(数据解析)任务,用于基于预设的规则对数据进行解析。
Calibrate(数据校正)任务,用于对数据进行预处理和校正。
Model(建模)任务,用于建立模型。
Solve(基于模型的决策)任务,用于基于模型进行决策,例如基于模型算法进行求解,得到决策结果。
Evaluate(数据评估)任务,用于对决策结果进行效果评估。
Convert(数据转化)任务,用于对评估结果进行结构转换,转换为标准结构。
Sink(存储)任务,用于对最终的数据进行存储。
其中,Parse任务、Calibrate任务、Model任务、Solve任务、Evaluate和Convert任务均属于Transform(数据转换)逻辑。Model任务和Solve任务采用的是Python语言,其他任务采用的均为Java语言。
TM分别针对Source任务、Parse任务、Calibrate任务、Evaluate和Convert任务分别创建Java Worker,针对Model任务和Solve任务分别创建Python Worker。也就是说,处理Python的任务不再作为Java进程的子进程,而作为独立的进程。Worker之间的通信通过RPC(Remote Procedure Call,远程过程调用)实现。这种情况下,Python Worker处理完可以将数据传输给下一个Python Worker或者直接传输给下一个Java Worker。而不必首先回到其所在的父进程Java Worker再做下一个Worker的数据传输,避免了额外的序列化处理,提高了性能。
并且,对于Python等动态语言均采用独立的进程,而无需在静态语言的进程中进行动态加载,也避免了复杂依赖情况下出现的找不到类、依赖冲突等问题,提高了系统的稳定性。
另外,上述的Python Worker能够从配置文件中获取加载的依赖信息或模型,从而实现模型的动态加载。同时充分利用了动态语言的特性,在调度时解决了复杂依赖情况下静态语言难以热部署的问题。
对于传统的流处理引擎而言,只支持DAG(Directed Acyclic Graph,有向无环图)任务,例如图3中所示,每个worker只能够顺次执行。若其中一个worker处理失败,则整个处理即失败。例如,Solve处理失败,则只能丢掉处理过的数据。本说明书实施例可以支持DAG任务,但为了提高鲁棒性,提供了更优选的方式以支持DCG(Directed Cycline Graph,有向有环图)任务。
具体地,TM可以创建优化节点对应的进程,例如命名为OptBroker。该OptBroker监控至少一个worker的运行状态,基于运行状态确定所监控的worker执行DCG任务还是DAG任务。
OptBroker在实现对worker进行监控时,可以与其所监控的worker建立通信,每个被监控的worker(即OptBroker所监控的worker)上报运行状态至OptBroker。其中,被监控的worker可以是需要进行回溯处理的worker,具体哪些worker需要被监控可以由用户定义于配置文件中,OptBroker从配置文件获取被监控的任务节点信息,从而监控这些任务节点对应的worker。
更进一步地,配置文件中可以进一步包含运行状态与worker之间的对应关系。在该对应关系中,运行状态对应的worker包括被监控worker以及回溯的目的worker。其中,回溯的目的worker为被监控worker的其中一个上游worker。
以图4中为例,预先按照“被监控worker-运行状态-回溯的目的worker”的格式设置如下对应关系:
Solve-state1-Model;
Evaluate-state2-Calibrate。
OptBroker负责监控Solve进程和Evaluate进程的运行状态。
若Solve进程上报运行状态state1,则说明Solve进程的处理需要回溯至Model进程重新调整模型,OptBroker触发Model进程重新执行建模处理,这就形成了DCG;否则继续向下游的Evalute进程执行,即DAG。
若Evaluate进程上报运行状态state2,则说明Evaluate进程的评估处理出现异常,需要回溯至Calibrate进程重新进行数据校正,OptBroker触发Calibrate进程重新执行数据校正处理,这就形成了DCG;否则继续向下游的Convert进程执行,即DAG。
作为其中一种可实现的方式,上述的运行状态可以采用错误码的形式,即预先定义各worker的异常处理对应的错误码。
显然这种同时支持DCG和DAG任务的方式,能够提升整个任务流程的容错能力和效果,提升鲁棒性。
根据以上技术方案可以看出,本说明书各个实施例可以具备以下优点:
1)提供了一种针对多语言混合流的处理机制,解决了现有流处理引擎无法支持多语言混合流处理的缺陷。
2)在JobGraph中区分工作节点的语言类型,以针对不同语言的任务节点创建独立的任务进程,每个任务进程执行完相应的处理任务后可以直接传递数据至下一任务进程,减少了额外的数据序列化处理,使得流处理引擎具有更高的性能。
3)对动态语言均采用独立的进程,而无需在静态语言的进程中进行动态加载,避免了复杂依赖情况下出现的找不到类、依赖冲突等问题,提高了流处理引擎的稳定性。
4)动态语言的处理进程能够从配置文件中获取加载的依赖信息或模型,从而实现模型的动态加载。同时充分利用了动态语言的特性,在调度时解决了复杂依赖情况下静态语言难以热部署的问题。
5)能够同时支持DCG和DAG任务,提升了整个任务流程的容错能力和效果,提升鲁棒性。
可以理解的是,实施本说明书实施例的任一方法或产品并不一定需要同时达到以上所述的所有优点。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
根据另一方面的实施例,提供了一种多语言混合流处理的装置。图5示出了本说明书实施例提供的多语言混合流处理的装置示意性框图。可以理解,该装置可以通过任何具有计算、处理能力的装置、设备、平台和设备集群来实现。如图5所示,该装置500包括:工作图生成单元502、执行图生成单元504和任务创建单元506。其中各组成单元的主要功能如下:
工作图生成单元502,被配置为依据多语言混合流生成JobGraph,JobGraph中的至少一个工作节点具有语言类型属性标签。
工作图生成单元502可以设置于流处理引擎的Client中。
执行图生成单元504,被配置为依据JobGraph生成Execution Graph,在ExecutionGraph中不同语言的处理被划分为不同的任务节点。
执行图生成单元504可以设置于流处理引擎的JM中。
任务创建单元506,被配置为针对不同语言的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
任务创建单元506可以设置于流处理引擎的TM中。
其中,上述的多语言可以包括动态语言和静态语言。其中,动态语言又称为弱类型语言,是运行时才能确定数据类型的语言。比如Php、Asp、JavaScript、Python、Perl等等。静态语言又称为强类型语言,是编译时变量的数据类型就可以确定的语言。比如Java、C、C++、C#等。
作为其中一种可实现的方式,JobGraph中执行建模和基于模型的决策的工作节点具有动态语言属性标签。
作为其中一种可实现的方式,任务进程可以从配置文件获取加载的依赖信息或模型,对上游处理进程传输的数据进行处理,将处理后的数据传输给下游任务进程。
动态语言的任务进程与静态语言的任务进程之间可以通过RPC进行数据传输。
作为一种优选的实施方式,任务创建单元506,进一步被配置为创建优化节点对应的进程。
优化节点对应的进程监控至少一个任务进程的运行状态,基于运行状态确定所监控的任务进程执行有向有环图DCG任务或有向无环图DAG任务。
具体地,优化节点对应的进程基于运行状态以及预设的运行状态与目的任务进程之间的对应关系,确定所监控任务进程的运行状态对应的目的任务进程,触发目的任务进程执行任务处理,其中所述目的任务进程为所监控任务进程的其中一个上游任务进程。
其中,优化节点对应的进程可以从配置文件中获取其所监控的任务进程。并且上述运行状态与目的任务进程之间的对应关系也可以从配置文件中获取。例如,配置文件中可以按照“被监控worker-运行状态-回溯的目的worker”的格式来设置上述对应关系。
作为其中一种典型的实例,所监控任务进程为数据评估进程,目的任务进程为数据校准进程;或者,
所监控任务进程为基于模型的决策进程,目的任务进程为建模进程。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图2所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图2所述的方法。
随着时间、技术的发展,计算机可读存储介质含义越来越广泛,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载等。可以采用一个或多个计算机可读存储介质的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本说明书中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
上述的处理器可包括一个或多个单核处理器或多核处理器。处理器可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (10)
1.一种多语言混合流的处理方法,包括:
依据多语言混合流生成工作图JobGraph,所述JobGraph中的至少一个工作节点具有语言类型属性标签;
依据所述JobGraph生成执行图Execution Graph,所述ExecutionGraph中包含不同语言类型的任务节点;
针对不同语言类型的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
2.根据权利要求1所述的方法,其中,所述多语言包括:动态语言和静态语言。
3.根据权利要求2所述的方法,其中,所述JobGraph中的至少一个工作节点具有语言类型属性标签包括:所述JobGraph中采用动态语言的工作节点具有动态语言属性标签。
4.根据权利要求1所述的方法,该方法还包括:
任务进程从配置文件获取加载的依赖信息或模型,对上游处理进程传输的数据进行处理,将处理后的数据传输给下游任务进程。
5.根据权利要求2所述的方法,其中,动态语言的任务进程与静态语言的任务进程之间通过远程过程调用RPC进行数据传输。
6.根据权利要求1所述的方法,该方法还包括:
创建优化节点对应的进程;
所述优化节点对应的进程监控至少一个任务进程的运行状态,基于所述运行状态确定所监控的任务进程执行有向有环图DCG任务或有向无环图DAG任务。
7.根据权利要求6所述的方法,其中,基于所述运行状态确定所监控的任务进程执行有向有环图DCG任务或有向无环图DAG任务包括:
基于所述运行状态以及预设的运行状态与目的任务进程之间的对应关系,确定所监控任务进程的运行状态对应的目的任务进程,触发目的任务进程执行任务处理,其中所述目的任务进程为所述所监控任务进程的其中一个上游任务进程。
8.根据权利要求7所述的方法,其中,所监控任务进程为数据评估进程,所述目的任务进程为数据校准进程;和/或,
所监控任务进程为基于模型的决策进程,所述目的任务进程为建模进程。
9.一种多语言混合流处理的装置,包括:
工作图生成单元,被配置为依据多语言混合流生成工作图JobGraph,所述JobGraph中的至少一个工作节点具有语言类型属性标签;
执行图生成单元,被配置为依据所述JobGraph生成执行图Execution Graph,在所述Execution Graph中不同语言的处理被划分为不同的任务节点;
任务创建单元,被配置为针对不同语言的任务节点分别创建独立的任务进程以执行各任务节点对应的处理任务。
10.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210466377.0A CN114579261B (zh) | 2022-04-29 | 2022-04-29 | 多语言混合流的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210466377.0A CN114579261B (zh) | 2022-04-29 | 2022-04-29 | 多语言混合流的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114579261A true CN114579261A (zh) | 2022-06-03 |
CN114579261B CN114579261B (zh) | 2022-09-20 |
Family
ID=81778118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210466377.0A Active CN114579261B (zh) | 2022-04-29 | 2022-04-29 | 多语言混合流的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579261B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108241530A (zh) * | 2016-12-23 | 2018-07-03 | 西北大学 | 一种基于Storm的流式计算二分图任务调度方法 |
CN110109748A (zh) * | 2019-05-21 | 2019-08-09 | 星环信息科技(上海)有限公司 | 一种混合语言任务执行方法、装置及集群 |
CN110532072A (zh) * | 2019-07-24 | 2019-12-03 | 中国科学院计算技术研究所 | 基于微内核操作系统的分布式流式数据处理方法及系统 |
CN111290744A (zh) * | 2020-01-22 | 2020-06-16 | 北京百度网讯科技有限公司 | 流式计算作业处理方法、流式计算系统及电子设备 |
CN111722929A (zh) * | 2020-06-18 | 2020-09-29 | 南京龙猫商业智能科技股份有限公司 | 一种基于PaaS的微服务编排引擎管理方法 |
US20200348912A1 (en) * | 2019-05-03 | 2020-11-05 | Microsoft Technology Licensing, Llc | Optimized machine learning pipeline execution based on execution graphs |
CN112000453A (zh) * | 2020-08-25 | 2020-11-27 | 支付宝(杭州)信息技术有限公司 | 一种流计算系统的调度方法和系统 |
CN112199184A (zh) * | 2020-11-02 | 2021-01-08 | 杭州安恒信息技术股份有限公司 | 一种跨语言任务调度方法、装置、设备及可读存储介质 |
CN112269567A (zh) * | 2020-11-03 | 2021-01-26 | 税友软件集团股份有限公司 | 一种跨语言机器学习方法及系统 |
CN113642021A (zh) * | 2021-08-20 | 2021-11-12 | 深信服科技股份有限公司 | 一种业务代码提交方法、处理方法、装置及电子设备 |
-
2022
- 2022-04-29 CN CN202210466377.0A patent/CN114579261B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108241530A (zh) * | 2016-12-23 | 2018-07-03 | 西北大学 | 一种基于Storm的流式计算二分图任务调度方法 |
US20200348912A1 (en) * | 2019-05-03 | 2020-11-05 | Microsoft Technology Licensing, Llc | Optimized machine learning pipeline execution based on execution graphs |
CN110109748A (zh) * | 2019-05-21 | 2019-08-09 | 星环信息科技(上海)有限公司 | 一种混合语言任务执行方法、装置及集群 |
CN110532072A (zh) * | 2019-07-24 | 2019-12-03 | 中国科学院计算技术研究所 | 基于微内核操作系统的分布式流式数据处理方法及系统 |
CN111290744A (zh) * | 2020-01-22 | 2020-06-16 | 北京百度网讯科技有限公司 | 流式计算作业处理方法、流式计算系统及电子设备 |
CN111722929A (zh) * | 2020-06-18 | 2020-09-29 | 南京龙猫商业智能科技股份有限公司 | 一种基于PaaS的微服务编排引擎管理方法 |
CN112000453A (zh) * | 2020-08-25 | 2020-11-27 | 支付宝(杭州)信息技术有限公司 | 一种流计算系统的调度方法和系统 |
CN112199184A (zh) * | 2020-11-02 | 2021-01-08 | 杭州安恒信息技术股份有限公司 | 一种跨语言任务调度方法、装置、设备及可读存储介质 |
CN112269567A (zh) * | 2020-11-03 | 2021-01-26 | 税友软件集团股份有限公司 | 一种跨语言机器学习方法及系统 |
CN113642021A (zh) * | 2021-08-20 | 2021-11-12 | 深信服科技股份有限公司 | 一种业务代码提交方法、处理方法、装置及电子设备 |
Non-Patent Citations (4)
Title |
---|
冯飞,崔鹏云,陈冠华: "《Flink内核原理与实现》", 31 August 2020, 机械工业出版社 * |
宋灵城: "Flink和Spark Streaming流式计算模型比较分析", 《通信技术》 * |
狄程: "一种流数据预处理及服务化系统的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
秋华: "Y0-Flink基础(三十):FLINK-SQL语法(六)DDL(三)ALTER 语句", 《HTTPS://WWW.CNBLOGS.COM/QIU-HUA/P/14053311.HTML》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114579261B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10630614B2 (en) | Opaque message parsing | |
CN111026779B (zh) | 一种基于Flink SQL的数据处理方法、装置、存储介质 | |
Zeng et al. | Monitoring the QoS for web services | |
Cortellessa et al. | An approach for modeling and detecting software performance antipatterns based on first-order logics | |
Woodside et al. | Transformation challenges: from software models to performance models | |
US8108834B2 (en) | Defining and executing processes using declarative programming language constructs | |
CN112000398B (zh) | 底层接口调用链路的确定方法、装置、计算机设备及介质 | |
US20090265696A1 (en) | Just-ahead-of-time compilation | |
US8495593B2 (en) | Method and system for state machine translation | |
CN115639980A (zh) | 一种低代码平台可拖拽的前端逻辑编排方法及装置 | |
JP2004220583A (ja) | アセンブラにおいて大域的プロセッサ資源割当てを実行するための方法およびシステム | |
CN109791502B (zh) | 针对异构设备类型的对等分布式计算系统 | |
US20040153791A1 (en) | Identifying solutions to computer problems in client/server system | |
US8074117B2 (en) | Inference of contract using declarative program definition | |
CN114398179B (zh) | 一种跟踪标识的获取方法、装置、服务器及存储介质 | |
CN113297081B (zh) | 一种持续集成流水线的执行方法和装置 | |
JP2018169693A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
Wood et al. | Triton: a domain specific language for cyber-physical systems | |
CN114579261B (zh) | 多语言混合流的处理方法和装置 | |
US20040153881A1 (en) | Identifying solutions to computer problems in main system by service system in distributed system landscape | |
Ejarque et al. | Managing failures in task-based parallel workflows in distributed computing environments | |
US20100010801A1 (en) | Conflict resolution and error recovery strategies | |
Fortier et al. | Dyninka: a FaaS framework for distributed dataflow applications | |
CN117252559A (zh) | 业务流程的处理方法、装置、计算机设备、存储介质 | |
US7403933B2 (en) | Identifying solutions to computer problems in main system by service system |
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 |