0
点赞
收藏
分享

微信扫一扫

【Flink】【第四章 运行时架构】flink运行时的组件

在觉 2022-01-11 阅读 156
flink

在这里插入图片描述
Flink运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:

  1. 作业管理器(JobManager,管理job的执行,一个job一个jobManager
  2. 任务管理器(TaskManager)
  3. 资源管理器(ResourceManager,flink集群自己的,不要和yarn的RM混淆;用于申请资源,如果flink部署在yarn上,会向yarn的RM申请资源,standalone模式下自己分配资源)
    4) 分发器(Dispatcher,当job提交的时候,用于给job分配jobManager,有的模式没有该组件)。

因为Flink是用Java和Scala实现的,所以所有组件都会运行在Java虚拟机上。每个组件的职责如下:

1.作业管理器(JobManager)

(1) 1对1

  • 一个JobManager控制一个应用程序执行的主进程.
  • 也就是说,每个应用程序(application,ExecutionEnvironment)都会被不同的JobManager所控制执行。

(2) 接收应用程序
应用程序包括:两图+资源
作业图(JobGraph)、逻辑数据流图(logical dataflow graph)+ 打包了所有的类、库和其它资源的JAR包。
JobManager会把JobGraph转换成“执行图”(ExecutionGraph)。

(3) 向资源管理器(ResourceManager)请求资源
资源 = 任务管理器(TaskManager)中的插槽(slot)。

(4) JobManager到了足够的资源将执行图分发到真正运行它们的TaskManager上。

(5) 责所有需要中央协调的操作,比如说检查点(checkpoints)的协调。

2.资源管理器(ResourceManager)

(1)管理任务执行需要的插槽(slot)
插槽是Flink中定义的计算资源的单元。

(2)多种类
Flink提供了多种类的资源管理器,为了适用于将flink部署在各种资源管理框架上,比如YARN、Mesos、K8s,以及standalone部署。(flink的ResourceManager需要向资源管理框架申请资源,因此需要符合通信协议,比如yarn,mesos这些框架里面通信协议是不同的)

(3)请外援
当JobManager申请插槽资源时,ResourceManager会将有空闲插槽的TaskManager分配给JobManager。如果ResourceManager没有足够的插槽来满足JobManager的请求,它还可以向资源提供平台发起会话,以提供启动TaskManager进程的容器。

(4)释放计算资源
ResourceManager还负责终止空闲的TaskManager

3. 任务管理器(TaskManager)

  • Flink中的工作进程。通常在Flink中会有多个TaskManager运行,每一个TaskManager都包含了一定数量的插槽(slots)。
  • 插槽的数量限制了TaskManager能够执行的任务数量。
  • 启动之后,TaskManager会向资源管理器注册它的插槽;
  • 收到资源管理器的指令后,TaskManager就会将一个或者多个插槽提供给JobManager调用。JobManager就可以向插槽分配任务(tasks)来执行了。在执行过程中,一个TaskManager可以跟其它运行同一应用程序的TaskManager交换数据。

4.分发器(Dispatcher)

  • 当一个应用被提交执行时,分发器就会启动并将应用移交给一个JobManager。
  • 可以跨job运行,它为应用提交提供了REST接口。由于是REST接口,所以Dispatcher可以作为集群的一个HTTP接入点,这样就能够不受防火墙阻挡。
  • Dispatcher也会启动一个Web UI,用来方便地展示和监控作业执行的信息。
  • Dispatcher在架构中可能并不是必需的,这取决于应用提交运行的方式。(standalone 和 yarn session模式有,pro-job没有此组件)
举报

相关推荐

0 条评论