Flink 核心机制解析-资源管理与作业调度
概述
如何进行作业调度
调度:任务与资源匹配
资源:slot
任务:JobGeaph
实际上作业调度可以看作是对资源和任务进行匹配的过程。
在Flink中,资源是通过slot来表示的,每个slot可以用来执行不同的Task。调度的主要目的就是为了给Task找到匹配的slot
RM(ResourceManager): 负责分配与管理slot状态
TM(TaskManager):实际的资源持有者 ,与任务的执行者 (可能存在多个TM,总体也可以叫做TaskExecutor)
JM(JobManager): slot资源的使用者
资源调度流程:
1.JM去RM中申请资源,RM 中存在一个子组件叫做SlotManager,它维护了当前集群中所有TM上的slot信息与状态,当JM来为特定的task申请资源时,
2.判断集群运行模式,
如果是共享模式,则集群中已经存在TM,可直接选取空闲的资源进行分配,
如果是独享模式,则会去申请资源来启动新的TM,当TM启动并注册到RM时,RM收到注册信息后会在SlotManager中记录相应的slot信息,之后根据slot信息选择空闲的资源进行分配
3.当RM分配完成后,RM会首先向TM发送RPC通知