private String jobName; private ScheduleMode scheduleMode; private boolean chaining; private Map<Integer, StreamNode> streamNodes; private Set<Integer> sources; private Set<Integer> sinks; private Map<Integer, Tuple2<Integer, OutputTag>> virtualSideOutputNodes; private Map<Integer, Tuple3<Integer, ...
StreamGraph, JobGraph 这两个执行图都是在 client 端生成的,ExecutionGraph 是在 JobManager 中生成的。Client 向 JobManager 提交 JobGraph 后, JobManager 就会根据 JobGraph 来创建对应的 ExecutionGraph,并以此来调度任务。 ExecutionJobVertex ExecutionGraph 中,节点对应的类是 ExecutionJobVertex ExecutionVertex ...
StreamGraph、JobGraph、ExecutionGraph以及物理执行图是Apache Flink中实现流处理的关键组件,它们之间存在着层次结构和依赖关系,用于执行流处理任务。 StreamGraph StreamGraph是Flink的逻辑执行图,描述了整个流处理任务的流程和数据流转递规则,包括了数据源、转换算子、数据汇等元素,以及它们之间的依赖关系和传输规则。Stream...
privateCompletableFuture<Acknowledge>internalSubmitJob(JobGraph jobGraph){ log.info("Submitting job {} ({}).", jobGraph.getJobID(), jobGraph.getName());// 重点是 persistAndRunJob 方法finalCompletableFuture<Acknowledge> persistAndRunFuture = waitForTerminatingJobManager(jobGraph.getJobID(), jobGr...
StreamGraph——JobGraph——ExecutionGraph 逻辑流图(StreamGraph) 这是根据用户通过 DataStream API编写的代码生成的最初的DAG图,用来表示程序的拓扑结构。这一步一般在客户端完成。 我们可以看到,逻辑流图中的节点,完全对应着代码中的四步算子操作: 源算子Source(socketTextStream())→扁平映射算子Flat Map(flatMap...
由Flink程序直接映射成的数据流图是StreamGraph,也被称为逻辑流图,因为它们表示的是计算逻辑的高级视图。为了执行一个流处理程序,Flink需要将逻辑流图转换为物理数据流图(也叫执行图),详细说明程序的执行方式。Flink 中的执行图可以分成四层:StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。
【Flink】详解StreamGraph 概述 没有看上一期的小伙伴请先看上一期【Flink】浅谈Flink架构和调度,上一期的一个核心内容就是 Flink 中的执行图可以分成四层:StreamGraph → JobGraph → ExecutionGraph → 物理执行图。 今天我们好好谈论一下StreamGraph,StreamGraph 是客户端根据 Flink-API 生成的数据流图,是 ...
Flink 中的执行图可以分成四层:StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。 DataStream API所编写的流处理应用程序在生成作业图(JobGraph)并提交给JobManager之前,会预先生成流图(StreamGraph)。 流图(StreamGraph)是表示流处理程序拓扑的数据结构,它封装了生成作业图(JobGraph)的必要信息。它的类...
ExecutionGraph是用于作业调度的执行图,对JobGraph加了并行度的概念 本篇文章在Flink源码阅读(一)--- StreamGraph 的生成基础上,介绍下JobGraph的生成 1. JobVertex 在StreamGraph中,每个operator对应一个StreamNode。在JobGraph中,JobVertex对应的是可chain起来的operator list,把一些operator chain起来,可以较少网络以...
1,整个Flink的Job启动是通过在Driver端通过用户的Envirement的execute()方法将用户的算子转化成StreamGraph2,然后得到JobGraph通过远程RPC将这个JobGraph提交到JobManager对应的接口 3,JobManager转化成executionGraph.deploy(),然后生成TDD发给TaskManager,然后整个Job就启动 ...