flink1.12.x client、JobManager、TaskManager角色分工和执行流程(Dataflow)

官网:
https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/concepts/flink-architecture/

client

用户提交编写好的 Flink 任务时( jar 包),先创建一个 client ,用来准备和提交数据流到 JobManagers。之后,可以断开连接或者保持连接以获取任务的状态信息

JobManager

集群 管理者,也就是 masters ,至少需要一个 JobManager

高可用 的系统会有 多个,一个 leader,其他是 standby

负责以下工作:

  • 调度任务
  • 协调 checkpoints
  • 协调故障恢复
  • 收集 Job 状态信息
  • 并管理Flink集群中的 TaskManager

TaskManager

也就是workers,至少需要一个TaskManager

  • 负责执行计算
  • 是节点管理员,把该节点上的服务器信息(如:内存、磁盘、任务运行情况等)向 JobManager 汇报

图

执行流程

  1. Flink 客户端 将代码逻辑构建成一个 Dataflow
  2. 在通过 Graph Builder 构建DAG的 Dataflow graph , 构建 job,划分出 task 和 subtask 等等。
  3. Client 将 job 提交到 JobManager. Client 通过 Actor System 和 JobManager 进行消息通讯,接收 JobManager 返回的状态更新和任务执行统计结果。
  4. JobMangaer 按照 Dataflow 的 Task 和 Subtask 的划分,将任务调度分配到各个 TaskManager 中进行执行。
  5. TaskManager 会将内存抽象成多个 TaskSlot(相当于线程) ,用于执行 Task 任务。

JobManagers 与 TaskManagers 之间的任务管理,Checkpoints 的触发,任务状态,心跳等等消息处理都是通过 ActorSystem 。


原文出处:/show_1IX1zTwC5Ufj.html