Apache Flink 运行时架构

  • Flink整个系统由两个主要部分组成JobManager和TaskManager,Flink架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为worker(Slave)节点,所有组件之间通讯都是借助Akka Framework,包括任务的状态以及Checkpoint触发等信息。
  • Flink运行时候架构如下:
  • Flink 客户端负责将任务提交到集群,与JobManager之间构建Akka连接,然后将任务提交到JobManager,通过和JobManager之间进行交互获取任务执行状态。
  • Flink 客户端Cliens不是Flink程序运行的一部分,作用是向JobManager准备和发送dataFlow,之后客户端可以断开连接(detached mode)或者保持连接(attached mode)
JobManager
  • JobManager 负责整个集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中TaskManager上TaskSlot的使用情况,为提交的应用分配相应的TaskSlots资源并命令TaskManager启动从客户端中获取的应用。
  • JobManager 相当于整个集群的Master节点,Flink HA集群中可以有多个JobManager,但是只能有一个活跃的JobManager。
  • JobManager与TaskManager之间通过Actor System进行通讯,获取任务执行情况并且通过Actor System将应用的任务执行情况发送给客户端
  • CheckPoint机制也是Flink JobManager发出的指令给TaskManager,TaskManger收到CheckPoint指令后完成CheckoutPoint操作
JobManager 中的三个不同组件
Resource Manager
  • 负责Flink集群资源分配,管理,回收。Flink中的资源是TaskManager节点上的Task Slot计算资源,Flink提交的任务最重都会转成Tast,每个Tast 都需要发送到TaskManager上的Slot中执行。
  • 当ResourceManager 管理对应的TaskManager没有足够的slot,会申请启动新的Taskmanager进程
JobMaster
  • JobMaster 负责管理整个任务的生命周期,负责将Dispatcher提交上来的JobGraph转换成ExecutionGraph结构。通过内部调度对ExecutionGraph 执行图进行调度和执行。最终向TaskManager 中提交和运行Task实例,同时会监控各个Task的运行状况,直到整个作业中所有Task都执行完毕。
  • JobMaster和Resource Manager 组件一样,JobManager组件本身也是RPC服务,具备通信能力,可以与ResourceManager进行RPC通信申请任务计算资源,之后将对应Task任务发送到TaskManager执行,FlinkTask执行完后,JobMaster服务关闭。所以JobMaster 与对应的Flink job是一一对应的。
Dispatcher
  • Dispatcher提供了Rest接口,用来提交Flink应用程序执行,例如CLI客户端或者Flink Web UI提交任务最重都会发送到Dispatcher组件,由Dispatcher组件对JobGraph进行风发和执行,并为每个提交作业启动一个新的JobMaster。还运行Flink WebUI 用来提供作业执行信息。
TaskManager
  • Task Manager 负责向整个集群提供Slot计算资源,同时管理JobMaster提交的Task任务。

  • TaskManager会提供JobManager从ResourceManager中申请和分配的Slot计算资源,JobMaster根据分配到的Slot计算资源将Task提交到TaskManager上运行。同时TaskManager还可以缓存数据,TaskManager之间可以进行DataStream数据交换。

  • 一个FLink集群中至少有一个TaskManager,在TaskManager中资源调度的最小单位是task slot,一个TaskManager中task Slot的数量决定了当前Taskmanager最高支持的兵法task个数,一个TaskSlot中可以执行多个算子。

  • 因此Flink的任务是采用多线程,和MapReuce多JVM进程方式有很大区别,Flink这种模式能极大提高CPU的利用率,在多个任务和Task之间通过TaskSlot方式共享系统资源,每个TaskManager中通过管理多个TaskSlot资源池进行有效管理。

相关推荐
有梦不弃4 小时前
模块化单体架构设计方案:DDD + 六边形架构落地实践
后端·架构
ZENERGY-众壹5 小时前
500个工商业电站压垮数据库?海量光伏时序数据存储的架构取舍
数据库·架构·influxdb·光伏·光伏运维
Dr.kangder6 小时前
嵌入式处理器仿真技术——Hypervisor 原理与实践
服务器·嵌入式硬件·架构·嵌入式
2601_964840279 小时前
技术方案解析:4G 云边协同架构下,智能门禁系统的轻量化升级路径
架构
rhythm-ring9 小时前
《第3篇:BCM的“心脏与神经网络”——UJA1169(SBC)深度解析》
架构·汽车
阿里云大数据AI技术10 小时前
淘天集团基于 Fluss、Paimon 与 StarRocks 构建湖流一体数据链路
大数据·人工智能·flink
漫谈数据智理10 小时前
从参考架构到可运行体系如何理解 IDSA 的最新进展
架构·高质量数据集
2601_9637491011 小时前
越华环保集团污水监测云边协同架构:数字化污水治理Modbus-MQTT链路实现方案
人工智能·架构
XR12345678811 小时前
校园网整体架构选型:从核心到接入哪家方案更优?
架构
智购科技自动售卖机厂家11 小时前
从STM32到RK3588——自动售货机嵌入式主控方案的架构演进~YH
stm32·嵌入式硬件·物联网·架构·lua·零售·symfony