Flink基础入门(二):Flink基本架构
一、基本组件:
Flink的架构体系,基本上可以分为三层:API&lib层、Runtime核心层和物理部署层
API&lib层 Flink同时提供了支撑流计算和批处理计算的接口,同时在此基础上抽象出各种类型的应用库:FlinkML、DataStreamAPI和DataSet API。
Runtime核心层:主要对上层接口提供具体的服务,也是核心实现层。
物理部署层:主要是Flink的部署模式,目前支持本地、集群(Yarn,StandAlone)、云、Kubenetes
二、基本架构图
1. Client客户端:
客户端负责将任务提交到集群,与JobManager建立Akka连接,然后将任务提交到JobManager,然后与JobManager之间进行节点之间的通信。
2.JobManager
JobManager相当于整体集群的Master,整个集群有且只有一个活跃的Master,JobManager和TaskManager之间使用Actor System通信。
任务执行过程中,JobManager会触发CheckPoint操作,所有的CheckPoint协调过程都是在JobManger中完成。
负责整体集群的调度和资源的管理,从客户端获取提交的任务,根据集群中TaskManager的TaskSlot的使用情况,给提交的任务分配资源
3. TaskManager:
TaskManager从JobManager接收到提交的任务,然后使用Slot资源启动Task,并开始任务的处理。
TaskManager相当于整体集群的Slave节点,负责具体任务的执行和在每个节点上的资源申请和使用。
整体系统由两个基本组件组成:JobManager,TaskManager。设计模式遵循(Slave-Master)模式:JobManager为Master节点,TaskManager为Slave节点,节点之间通讯采用Akka FrameWork