3、StreamGraph主要由StreamNode、StreamEdge组成,下图中StreamGraph几个主要成员变量负责组织StreamNode、StreamEdge的存储。 1、StreamGraph生成入口:当Flink应用业务逻辑算子编写完后会直接调用StreamExecutionEnvironment.execute()方法开始任务的生成、提交及调度,第一阶段就是将Transformation转换为StreamGraph。以下方法调用链...
StreamNode 从 Transformation 转换而来,可以简单理解为 StreamNode 表示一个算子,存在实体和虚拟,可以有多个输入和输出,实体 StreamNode 最终变成物理算子,虚拟的附着在 StreamEdge 边上。 StreamEdge StreamEdge是连接两个StreamNode的边,代表的是一个数据流。是 StreamGraph 的边,用来连接两个 StreamNode 点,一个 ...
这段源码也非常简单,生成 StreamGraph 的逻辑封装在StreamGraphGenerator中。 二、StreamGraphGenerator 继续跟踪代码,将StreamExecutionEnvironment的实例对象传递给StreamGraphGenerator并创建对象后,就调用了StreamGraphGenerator#generateInternal方法: /** * This starts the actual transformation, beginning from the sinks....
flink源码解析-flink获取streamGraph流图 2. 获取StreamGraph 3. 获取StreamGraph生成器 4. 生成StreamGraph 5. transform 5.1. StreamSource 5.1.1. streamGraph添加source 5.2. ContinuousFileReader 5.2.1. streamGraph添加Operator 5.2.2. streamGraph添加Edge 5.3. StreamMap 5.3.1. streamGraph添加Operator 5.3....
上文介绍到当Environment对象调用execute方法的时候,我们编写的程序(数据处理流程)就会转变为 StreamGraph,以下是【StreamExecutionEnvironment】类的源码分析: // 默认的Flink-Job名称publicstaticfinalStringDEFAULT_JOB_NAME="Flink Streaming Job";// 生成 StreamGraph 的入口publicJobExecutionResultexecute()throwsException...
JobGraph:StreamGraph 经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。 主要的优化为,将多个符合条件的节点 chain 在一起作为一个节点,这样可以减少数据在节 点之间流动所需要的序列化/反序列化/传输消耗。 ExecutionGraph:JobManager 根据 JobGraph 生成 ExecutionGraph。ExecutionGraph 是 JobGraph 的并行...
生成StreamGraph:通过创建 StreamGraphGenerator 并调用generate()方法生成 StreamGraph execute StreamGraph 返回 JobExecutionResult 我们先来看看 StreamGraph 和 StreamGraphGenerator 的一些概况,再来详细看看 StreamGraphGenerator 是如何生成 StreamGraph 的 3.1、StreamGraphGenerator 生成 StreamGraph ...
二、Create Job Graph 主要流程 2.1、核心步骤 2.2、setChaining 从Source StreamNode 实例开始设置 task chain,它将会递归地创建所有的 JobVertex 实例 这个方法首先从会遍历这个 StreamGraph 的所有 source 节点,然后选择从 source 节点开始执行createChain()方法,在具体的实现里,主要逻辑如下 ...
publicStreamGraphgetStreamGraph(StringjobName,booleanclearTransformations) { // 创建一个StreamGraphGenerator对象,设置参数,并调用generate方法生成StreamGraph对象 StreamGraphstreamGraph= getStreamGraphGenerator() // 设置任务名称 .setJobName(jobName)
下面的transformations 就是StreamExecutionEnvironment里的属性变量,也就是上面我们讲的存储transfromation集合 publicJobExecutionResultexecute(StringjobName)throwsException{finalList<Transformation<?>>originalTransformations=newArrayList<>(transformations);StreamGraphstreamGraph=getStreamGraph();if(jobName!=null){stream...