05-Flink 作业提交流程

Flink 官网主页地址:https://flink.apache.org
Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/

作业提交流程

1、Standalone会话模式作业提交流程

2、逻辑流图/作业图/执行图/物理流图

我们已经彻底了解了由代码生成任务的过程,现在来做个梳理总结。

逻辑流图(StreamGraph)→ 作业图(JobGraph)→ 执行图(ExecutionGraph)→ 物理图(Physical Graph)。

  1. 逻辑流图(StreamGraph)

    这是根据用户通过 DataStream API 编写的代码生成的最初的 DAG 图,用来表示程序的拓扑结构。这一步一般在客户端完成。

  2. 作业图(JobGraph)

    StreamGraph 经过优化后生成的就是作业图(JobGraph),这是提交给 JobManager 的数据结构,确定了当前作业中所有任务的划分。主要的优化为:将多个符合条件的节点链接在一起合并成一个任务节点,形成算子链,这样可以减少数据交换的消耗。JobGraph 一般也是在客户端生成的,在作业提交时传递给 JobMaster。

    我们提交作业之后,打开 Flink 自带的Web UI,点击作业就能看到对应的作业图。

  3. 执行图(ExecutionGraph)

    JobMaster 收到 JobGraph 后,会根据它来生成执行图(ExecutionGraph)。ExecutionGraph 是 JobGraph 的并行化版本,是调度层最核心的数据结构。与 JobGraph 最大的区别就是按照并行度对并行子任务进行了拆分,并明确了任务间数据传输的方式。

  4. 物理图(Physical Graph)

    JobMaster 生成执行图后,会将它分发给 TaskManager;各个 TaskManager 会根据执行图部署任务,最终的物理执行过程也会形成一张“图”,一般就叫作物理图(Physical Graph)。这只是具体执行层面的图,并不是一个具体的数据结构。
    物理图主要就是在执行图的基础上,进一步确定数据存放的位置和收发的具体方式。有了物理图,TaskManager 就可以对传递来的数据进行处理计算了。

3、Yarn 应用模式作业提交流程


05-Flink 作业提交流程
https://flepeng.github.io/044-Flink-42-核心概念-05-Flink-作业提交流程/
作者
Lepeng
发布于
2021年3月8日
许可协议