image.png

Client

用于提交任务到JM,不是运行时和程序执行的一部分。

JobManager

协调管理flink应用程序的分布式执行。决定何时调度下一个task、对失败或完成task的处理、协调checkpoint及失败任务恢复等。
有三部分构成:

1、ResourceManger。负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slots。 2、Dispatcher。提供REST接口,用于提交Flink应用程序,为每个提交的作业启动一个新的JobMaster。运行Flink WebUI来展示作业执行信息。 3、JobMaster。负责管理单个JobGraph的执行。Flink 集群中可以同时运行多个作业,每个作业都有自己的 JobMaster。

TaskManager

执行作业流的 task,并且缓存和交换数据流。
必须始终至少有一个 TaskManager。在 TaskManager 中资源调度的最小单位是 task slot。TaskManager 中 task slot 的数量表示并发处理 task 的数量。

每个TM都是一个JVM进程,可以单独的线程执行一个或多个subtask。一个TM至少一个task slots

Task和算子链

对于分布式执行,Flink 将算子的 subtasks 链接tasks。每个 task 由一个线程执行。将算子链接成 task 是个有用的优化:它减少线程间切换、缓冲的开销,并且减少延迟的同时增加整体吞吐量。链行为是可以配置的
image.png

Task Slots 和资源

文档

https://ci.apache.org/projects/flink/flink-docs-release-1.13/zh/docs/concepts/flink-architecture/