vlambda博客
学习文章列表

Flink基础入门(二):Flink基本架构

一、基本组件:

Flink的架构体系,基本上可以分为三层:API&lib层、Runtime核心层和物理部署层


  1. API&lib层 Flink同时提供了支撑流计算和批处理计算的接口,同时在此基础上抽象出各种类型的应用库:FlinkML、DataStreamAPI和DataSet API。

  2. Runtime核心层:主要对上层接口提供具体的服务,也是核心实现层。

  3. 物理部署层:主要是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