Flink源码阅读笔记——StreamGraph、JobGraph、ExecutionGraph

在具体执行环节中,考虑并行子任务的分配、数据在任务间的传输,以及合并算子链的优化,将逻辑流图转换为物理数据流图。
StreamGraph——JobGraph——ExecutionGraph
在这里插入图片描述

  1. 逻辑流图(StreamGraph)
    这是根据用户通过 DataStream API编写的代码生成的最初的DAG图,用来表示程序的拓扑结构。这一步一般在客户端完成。
    我们可以看到,逻辑流图中的节点,完全对应着代码中的四步算子操作:
    源算子Source(socketTextStream())→扁平映射算子Flat Map(flatMap()) →分组聚合算子Keyed Aggregation(keyBy/sum()) →输出算子Sink(print())。
  2. 作业图(JobGraph)
    StreamGraph经过优化后生成的就是作业图(JobGraph),这是提交给 JobManager 的数据结构,确定了当前作业中所有任务的划分。主要的优化为: 将多个符合条件的节点链接在一起合并成一个任务节点,形成算子链,这样可以减少数据交换的消耗。JobGraph一般也是在客户端生成的,在作业提交时传递给JobMaster。

一个数据流在算子之间传输数据的形式可以是一对一(one-to-one)【map、filter、flatMap】的直通 (forwarding)模式,也可以是打乱的重分区(redistributing)模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值