Flink 中的执行图可以分成四层:StreamGraph -> JobGraph -> ExecutionGraph -> Physical Graph。
首先
StreamGraph:是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。
这是在客户端刚开始提交任务时生成的,然后客户端还要对StreamGraph优化生成JobGraph
JobGraph:是提交给 JobManager 的数据结构。主要的优化为: 将多个符合条件的节点 chain 在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。
也就是说StreamGraph和JobGraph都是在客户端提交任务时完成的,JobManager拿到的是JobGraph,然后对它在处理生成ExecutionGraph。
ExecutionGraph:是JobGraph的并行化版本,是调度层最核心的数据结构。
JobManager会将自己生成的ExecutionGraph发送给TaskManager;然后TaskManager会根据ExecutionGraph生成Physical Graph;它并不是一个具体的数据结构。
执行图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)