一、Flink任务提交流程
二、 Flink任务提交流程(YARN)
图中的ResourceManager是YARN的 ResourceManager,不是Flink的ResourceManager。Flink的ResourceManager在ApplicationMaster中。
三、Flink任务调度原理
1、输入Flink程序
2、将Flink程序转化为流图(类似于Spark的DAG)
3、将流图提交给JobManager,JobManager申请资源
4、JobManager将子任务发送给分配的taskManager
5、TaskManager与JobManager保持通讯
6、JobManager与Client保持通讯。
四、并行度(Parallelism)
• 一个特定算子的 子任务(subtask)的个数被称之为其并行度(parallelism)。一般情况下,一个 stream 的并行度,可以认为就是其所有算子中最大的并行度。
五、TaskManager 和 Slots
• Flink 中每一个 TaskManager 都是一个JVM进程,它可能会在独立的线程上执行一个或多个子任务
• 为了控制一个 TaskManager 能接收多少个 task, TaskManager 通过 task slot 来进行控制(一个 TaskManager 至少有一个 slot)
• 默认情况下,Flink 允许子任务共享 slot,即使它们是不同任务的子任务。 这样的结果是,一个 slot 可以保存作业的整个管道。
• Task Slot 是静态的概念,是指 TaskManager 具有的并发执行能力
六、并行子任务的分配