Flink算子执行流程图

tamoadmin 热门赛事 2024-04-25 28 0

Flink算子执行流程图

Flink的执行流程图主要包括四个层次:DataStreamGraphJobGraphExecutionGraph物理执行图。以下是这四个层次的详细介绍:

DStreamGraph(数据流图)

DataStreamGraph是根据用户通过DataStream

API编写的代码生成的最初的图,用来表示程序的拓扑结构。它描述了数据流如何在整个系统中传输和处理。

JobGraph(作业图)

JobGraph是DataStreamGraph经过优化后生成的,提交给JobManager的数据结构。主要的优化为将多个符合条件的节点chain在一起作为一个节点。JobGraph包含了转换操作和数据交换的逻辑,但它并未包含并行度等物理执行的信息。

ExecutionGraph(执行图)

ExecutionGraph是由JobManager根据JobGraph执行流程图生成的。它在并行度等物理执行的信息基础上,进一步描述了如何在集群中执行作业。ExecutionGraph与JobGraph最大的区别就是按照并行度将每个算子的任务拆分成了多个并行的子任务,并明确了任务间数据传输的方式。

Flink算子执行流程图

物理执行图

物理执行图是Flink根据集群资源情况,对ExecutionGraph进行调度和优化后生成的执行图。它描述了具体的任务如何在集群中运行,包括任务的分配、启动、状态变化等过程。

Flink的执行流程可以从用户API的调用转换为DataStreamGraph

JobGraph

ExecutionGraph的过程。在这个过程中,用户代码首先被转换为DataStreamGraph,然后优化为JobGraph,最后被提交给集群,转换为ExecutionGraph并开始执行。

在提交集群之前,StreamGraph、JobGraph和ExecutionGraph都会在FlinkClient客户端生成。其中,PipeExecutor是FlinkClient生成JobGraph之后,将作业提交给集群的重要环节。作业提交到集群有多种方式,最常用的是yarn方式,yarn方式包含3种提交模式:YarnperJob模式、YarnSessionmo模式、YarnApplication模式。

总的来说,Flink算子的执行流程图是一个复杂的体系,它涵盖了从用户代码到集群执行的整个过程。在这个过程中,Flink会通过优化和调度,将用户的代码转换为可以在集群中高效执行的执行图。