Flink集群采用Mater-Slave架构,Master的角色是JobManager,负责集群和作业管理,Slave的角色是TaskManager,负责执行计算任务。除此之外,Flink还提供了客户端来管理集群和提交任务,其中JobManager和TaskManager是集群的进程,Flink客户端是在集群外部执行的进程,不是集群的一部分。
1.Flink客户端
Flink客户端是Flink提供的CLI命令行工具,用来提交Flink作业到Flink集群,在客户端中负责Stream Graph(流图)和Job Graph(作业图)的构建。
2.JobManager
JobManager根据并行度将Flink客户端提交的Flink应用分解为子任务,从资源管理器申请所需的计算资源,资源具备之后,开始分发任务到TaskManager执行Task,并负责应用容错,跟踪作业的执行状态,发现异常则恢复作业等。
JobManager里面有三个组件:
1)ResourceManager (flink自己的)
主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger插槽是Flink中定义的处理资源单元。(事实上ResourceManager里面还有SlotManager)
2) Dispatcher
负责接收用户提供的作业,并且负责为这个新提交的作业启动一个新的JobManager 组件
3) JobMaster
JobMaster负责管理单个JobGraph的执行.多个Job可以同时运行在一个Flink集群中, 每个Job都有一个自己的JobMaster.
3.TaskManager
TaskManager接收JobManager分发的子任务,根据自身的资源情况,管理子任务的启动,停止,销毁,异常恢复等生命周期阶段。