Flink运行时架构(2)

228 阅读1分钟

1. 任务提交流程

1. 独立集群任务提交

image.png

2. yarn方式的集群资源管理

粗略概述,后续针对该方式,会有详细的补充说明。 image.png

2. 任务调度原理

image.png

3. TaskManager和slots

1. 概述图

image.png

  1. Flink中每个TaskManager都是一个JVM进程,每一个任务插槽都会启动一个线程,它可能会在独立的线程上执行一个或者多个subTask,每一个子任务都会占用一个任务插槽(Task slot)。
  2. 为了控制一个 TaskManager 能接收多少个 task, TaskManager 通过 task slot 来进行控制(一个 TaskManager 至少有一个 slot)

2. 详细图

image.png

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

3. 详细分析实例

  1. 配置文件中配置taskManager中的插槽数 image.png
  2. 设置任务只需要1个slot的情况 image.png
  3. 设置任务只需要2个slot的情况 image.png
  4. 设置任务只需要9个slot的情况 image.png
  5. 设置不同算子不同的并行度 image.png

并行度要小于插槽数