一、Flink任务提交流程

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

二、 Flink任务提交流程(YARN)

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

        图中的ResourceManager是YARN的 ResourceManager,不是Flink的ResourceManager。Flink的ResourceManager在ApplicationMaster中。

三、Flink任务调度原理

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

1、输入Flink程序

2、将Flink程序转化为流图(类似于Spark的DAG)

3、将流图提交给JobManager,JobManager申请资源

4、JobManager将子任务发送给分配的taskManager

5、TaskManager与JobManager保持通讯

6、JobManager与Client保持通讯。

四、并行度(Parallelism)

    • 一个特定算子的 子任务(subtask)的个数被称之为其并行度(parallelism)。一般情况下,一个 stream 的并行度,可以认为就是其所有算子中最大的并行度。

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

五、TaskManager 和 Slots

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

    • Flink 中每一个 TaskManager 都是一个JVM进程,它可能会在独立的线程上执行一个或多个子任务
    • 为了控制一个 TaskManager 能接收多少个 task, TaskManager 通过 task slot 来进行控制(一个 TaskManager 至少有一个 slot) 

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

    • 默认情况下,Flink 允许子任务共享 slot,即使它们是不同任务的子任务。 这样的结果是,一个 slot 可以保存作业的整个管道。
    • Task Slot 是静态的概念,是指 TaskManager 具有的并发执行能力 

六、并行子任务的分配

0005-Flink原理(Flink任务提交 & 调度 & 相关概念 & Solt分配)-LMLPHP

03-14 12:48