Flink 引擎初理解之Flink架构| 青训营笔记

229 阅读3分钟

Flink 引擎初理解之Flink架构| 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第1天。

一、什么是Flink

image-20220815204536552.png 简单来说,Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。

二、Flink分层架构

image-20220816234114471.png

Flink核心组件栈分为三层:API&Libraries层、Runtime核心层和物理部署层。

  1. 物理部署层。Flink的底层是物理部署层。Flink可以采用Local模式运行,启动单个JVM,也可以采用Standalone集群模式运行,还可以采用YARN集群模式运行,或者也可以运行在GCE(谷歌云服务)和EC2(亚马逊云服务)上。
  2. Runtime核心层。该层主要负责对上层不同接口提供基础服务,也是Flink分布式计算框架的核心实现层。该层提供了两套核心的API,DataStream API(流处理)和DataSet API(批处理)。Flink Runtime 层的整个架构采用了标准 Master-Slave 的结构,即总是由一个Flink JobManager和一个或多个Flink TaskManager组成。
  3. API&Libraries层。作为分布式数据库处理框架,Flink同时提供了支撑流计算和批计算的接口,同时,在此基础上抽象出不同的应用类型的组件库,如CEP(基于流处理的复杂事件处理库)、SQL&Table库(既可以基于流处理,也可以基于批处理)、FlinkML(基于批处理的机器学习库)、Gelly(基于批处理的图计算库)等。

三、Flink运行架构

Flink集群架构

Client

Client不是运行时和程序执行的一部分,而是用于准备数据流并向JobManager发送数据流。

JobManager

‎‎它决定何时计划下一个任务(或一组任务),对完成的任务或执行失败做出反应,协调CheckPoint,并协调故障恢复等。总的来说,它负责申请资源,协调以及控制整个job的执行过程。始终至少有一个 JobManager。高可用(HA)设置中可能有多个 JobManager,其中一个始终是 leader,其他的则是 standby。JM由以下三个组件组成。

  • ResourceManager

    ResourceManager 负责 Flink 集群中的Task Slots(Flink集群中资源调度的单位)资源解除、分配和配置 。Flink 为不同的环境和资源提供商(如 YARN、Kubernetes 和独立部署)实现了多个 ResourceManagers。

  • Dispatcher

    提供了一个 REST 接口来提交 Flink 作业以供执行,并为每个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 以提供有关作业执行的信息。

  • JobMaster

    JobMaster负责管理单个JobGraph的执行。多个作业可以在一个 Flink 集群中同时运行,每个作业都有自己的 JobMaster。

TaskManagers

任务管理器‎‎(也称为‎‎工作线程‎‎)执行数据流的任务,并缓冲和交换数据流。‎可以有多个。负责接收并执行JobManager发送的task

四、相关文章