暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

flink学习笔记(5)-flink系统架构

beenrun 2022-03-28
403

本文介绍flink所需的四大组件JobManager、ResourceManager、TaskManager、Dispatcher。应用部署方式和任务执行。


01


Flink组件介绍


  1. JobManager

(1)控制单个应用程序的执行

(2)是一个工作进程

(3)每个应用都由一个JobManger管理:类似spark中AppMaster

(4)接收需要执行的应用JobGraph和打包所有类库、资源、jar

(5)将JobGraph转换成名为ExecutionGraph的物理DataFlow图

(6)向ResourceManger申请执行任务需要的资源TaskManager处理槽slot

(7)当资源满足就会将任务分发给TaskManager

(8)执行过程中负责协调工作:如创建检查点


2. ResourceManager

(1)管理Flink的处理资源单元

(2)当收到JobManager申请TaskManager处理槽时,ResourceManager会告诉JobManager哪些TaskManager可以使用

(3)如果不满足需求,ResourceManager会向资源提供者通信,申请更多TaskManager

(4)ResourceManager还负责终止闲置的TaskManager


3.TaskManager

(1)是一个工作进程

(2)通常启动多个TaskManager

(3)每个TaskManager提供一定数量slot

(4)处理槽的个数说明了TaskManager的处理能力

(5)执行期间,同一个应用,不同任务在TaskManager内会有数据交换


4.DisPatcher

(1)会跨多个作业运行

(2)提供REST接口来提交执行的应用

(3)一旦提交一个应用,就会启动一个JobManager,并将应用转交给它

(4)Dispatcher这一集群的HTTP入口可以受到防火墙的保护

(5)Dispatcher还会启动一个WebUI,用来提供有关作业执行的信息。

(6)也可以不用Dispatcher来提交应用



02


Flink的2种部署模式

1.框架模式

(1)Flink应用打包成JAR文件

(2)通过客户端提交到运行的服务,如:Dispatch、JobManager、YARN

(3)运行的服务接收Flink应用,并确保其执行。


2.库模式

(1)Flink会绑定到一个特定的容器镜像(Docker)中

(2)镜像中包含着运行JobManager以及ResourceManager代码

(3)容器启动后会自动加载JobManager和ResourceManager,并将绑定的作业提交执行

(4)另一个和作业无关的镜像负责部署TaskManager

(5)容器通过镜像启动后会自动运行TaskManager,TaskManager向ResourceManager注册

(6)外部资源管理框架好处:负责镜像启动,并在发生故障时候容器能够重启


03


任务执行


1. TaskManager上算子运行

(1)可以同时执行多个任务

(2)每个TaskManager可以有多个Slot

(3)每个Slot可执行应用的一部分,但是每个Slot中只能有一个同样的算子

(4)TaskManager中的多个任务可以在同一个进程内高效地执行,数据交换无需访问网络

(5)任务过于集中,使得TaskManager负载过高,从而导致性能下降

(6)后面控制任务调度会讲到


2.TaskManager运行

(1)TaskManager会在同一个JVM进程内以多线程方式执行任务

(2)和独立进程相比,线程更加轻量级并且通信开销更低

(3)但是无法严格隔离任务

(4)只要有一个任务运行异常,就可能杀死TaskManager,导致TaskManager上的所有任务失败

(5)可以将TaskManager配置成一个TaskManager有一个Slot

(6)通过在TaskManager内部采用线性并行级每个主机上多部署TaskManager


04


高可用性设置



1.TaskManager故障

(1) 假设Flink应用设置包含4个TaskManager,每个TaskManager包含2个Slot,那么这个流式应用最多支持8个并行度来运行。

 (2)如果一个TaskManager出现故障,JobManager将向ResourceManager申请资源,如果没有得到资源,那么JobManager将无法重启。

 (3)应用重启策略将决定JobManager以何种方式重启。后面会将重启策略

 

 2.JobManager故障

  (1)采用高可用HA,由ZooKeeper来完成选举

 (2)JobGraph写入一个远程持久存储系统中,将地址写入ZooKeeper

 (3)在检查点即将完成的时候,如果所有任务将各自状态写入远程存储,JobManager会将句柄写入远程存储,并将地址写入ZooKeeper

 (4)发生故障,所有JobManager下的任务自动取消

 (5)新的JobManager接收工作,向ZooKeeper请求存储位置,Jar、JobGraph及应用检查点

 (6)向ResourceManager申请资源

 (7)重启,并利用最近一次检查点重置任务状态

 


3.容器环境

 通常自动重启TaskManager和JobManager


05


总结

  1. flink的4大组件:JobManager、ResourceManager、TaskManager、Dispatcher的作用

  2. Flink的2种部署模式:框架模式和库模式

  3. 任务执行过程

  4. 高可用设置:TaskManager故障和JobManager故障,从2种故障中恢复。



感谢阅读!

希望能够分享、点赞、收藏!


奇迹的出现往往就在再坚持一下的时候!




文章转载自beenrun,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论