首页  

Flink JobManager与TaskManage 运行架构     所属分类 flink 浏览量 198
作业管理器(JobManger)   管理者 Master , 负责管理调度,不考虑高可用的情况下只能有一个
任务管理器(TaskManager) 工作者 Worker/Slave  负责执行任务处理数据

客户端  提交作业
调用程序的main方法,将代码转换成 数据流图 Dataflow Graph ,并最终生成作业图(JobGraph),一并发送给JobManager。
提交之后, 客户端 可与JobManager 保持 或 断开 连接

TaskManager启动之后,JobManager会与它建立连接,
并将作业图(JobGraph)转换成可执行的 执行图(ExecutionGraph)分发给可用的TaskManager,然后就由TaskManager具体执行任务


JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。
每个应用都应该被唯一的JobManager所控制执行。
在高可用(HA)的场景下,可能会出现多个JobManager;
这时只有一个是正在运行的领导节点(leader),其他都是备用节点(standby)。


JobManger 包含3个组件
JobMaster
资源管理器(ResourceManager)
分发器(Dispatcher)


JobMaster是JobManager中最核心的组件,负责处理单独的作业(Job)。
JobMaster 和 具体的Job一一对应的,多个Job可以同时运行在一个Flink集群中, 每个Job都有一个自己的JobMaster。
早期版本的Flink中,没有JobMaster的概念;而JobManager 的概念范围较小,实际指的就是现在所说的JobMaster。

作业提交时,JobMaster会先接收到要执行的应用。
这里所说“应用”一般是客户端提交来的,包括:Jar包,数据流图(dataflow graph),和作业图(JobGraph)。
JobMaster把JobGraph转换成一个物理层面的数据流图,这个图被叫作“执行图”(ExecutionGraph),它包含了所有可以并发执行的任务。
JobMaster向资源管理器(ResourceManager)发出请求,申请执行任务必要的资源。
获取到足够的资源,就会将执行图分发到真正运行它们的TaskManager上。

在运行过程中,JobMaster会负责所有需要中央协调的操作,比如说检查点(checkpoints)的协调。


ResourceManager主要负责资源的分配和管理,在Flink 集群中只有一个。
所谓“资源”,主要是指TaskManager的任务槽(task slots)。
任务槽就是Flink集群中的资源调配单元,包含了机器用来执行计算的一组CPU和内存资源。
每一个任务(Task)都需要分配到一个slot上执行。

Dispatcher主要负责提供一个REST接口,用来提交应用,并且负责为每一个新提交的作业启动一个新的JobMaster 组件。
Dispatcher也会启动一个Web UI,用来方展示和监控作业执行的信息。
Dispatcher在架构中并不是必需的,在不同的部署模式下可能会被忽略掉。


TaskManager是Flink中的工作进程,Flink集群中必须至少有一个TaskManager; 通常会有多个TaskManager运行,每一个TaskManager都包含了一定数量的任务槽(task slots)。 Slot 是资源调度的最小单位,slot的数量限制了TaskManager能够并行处理的任务数量。 TaskManager 启动向资源管理器注册它的slots; 收到资源管理器的指令后,TaskManager就会将一个或者多个槽位提供给JobMaster调用 在执行过程中,TaskManager可以缓冲数据,还可以跟其他运行同一应用的TaskManager 交换数据。
作业提交流程 一般情况下,由客户端(App)通过分发器提供的REST接口,将作业提交给JobManager 由分发器启动JobMaster,并将作业(包含JobGraph)提交给JobMaster JobMaster将JobGraph解析为可执行的ExecutionGraph,得到所需的资源数量,然后向资源管理器请求资源(slots) 资源管理器判断当前是否由足够的可用资源;如果没有,启动新的TaskManager(standlone模式不会) TaskManager启动之后,向ResourceManager注册自己的可用任务槽(slots) 资源管理器通知TaskManager为新的作业提供slots TaskManager连接到对应的JobMaster,提供slots JobMaster将需要执行的任务分发给TaskManager TaskManager执行任务,互相之间可以交换数据

上一篇     下一篇
JMS 和 AMQP

rabbitmq 管理页面

RabbitMQ 消息发送和消费过程

springboot 接口 post 报错 Cannot generate variable name for non-typed Collection parameter type

prometheus file_sd_config 基于文件的服务发现

MAC 安装 rabbitmq