0
点赞
收藏
分享

微信扫一扫

Flink运行时架构及各部署模式下作业提交流程分析

小编 2022-04-21 阅读 70
flink

1.运行时架构

1.1 核心组件

1.1.1 JobManager

作业管理器,对于一个提交执行的作业,JobManager 是真正意义上的“管理者”(Master),负责管理调度,是一个 Flink 集群中任务管理和调度的核心,是控制应用执行的主进程。在不考虑高可用的情况下只能有一个
JobManager ,只有一个是正在运行的领导节点(leader),其他都是备用节点(standby)

JobManager包含三大核心组件:

  • JobMaster
  • ResourceManager
  • Dispatcher

1.1.2 TaskManager

任务管理器,是Flink中的工作进程,称为Worker

  • 数据流的具体计算由它来完成,每个Flink集群至少一个TaskManager,每一个TaskManager包含一定数量的任务槽(slot),slot是资源调度的最小单位,slot的数量决定了TaskManager并行处理任务的数量
  • 启动后,TaskManager会向ResourceManager注册它的slots,收到ResourceManager的指令后,TaskManager就会将一个或多个slot提供给JobMaster调用,JobMaster就可以分配任务来执行了
  • 在执行过程中,TaskManager 可以缓冲数据,还可以跟其他运行同一应用的 TaskManager交换数据

1.2 作业图

![作业提交及运行流程图](https://img-blog.csdnimg.cn/53060720ff1746fc8eab39b8937c6213.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG1pMTAyNA==,size_20,color_FFFFFF,t_70,g_se,x_16

2. 作业提交流程

2.1 抽象流程

Flink 的提交流程,随着部署模式、资源管理平台的不同,会有不同的变化。首先我们从一个高层级的视角,来做一下抽象提炼,看一看作业提交时宏观上各组件是怎样交互协作的

Flink提交作业抽象流程

2.2 独立模式(Standalone)

在独立模式下,只有两种部署方式会话模式应用模式,没有分离模式。Flink的三种部署方式
两者整体的作业提交流程十分相似:TaskManager都需要手动启动,JobMaster向ResourceManager申请资源时,ResourceManager会直接要求TaskManager提供资源,区别在于,会话模式下,TaskManager是预先启动的,应用模式的TaskManager是作业提交时启动的

Standalone模式作业提交流程
该作业流程除了ResourceManager不需要启动TaskManager,而是直接向已有的TaskManager要求资源,和上述抽象流程完全一致

2.3 FLINK ON YARN

flink在资源管理平台的作业提交流程,以YARN集群为例

  • 会话模式

需要事先申请资源,如图所示:
FLINK ON YARN会话模式申请资源
这里只启动了 JobManager,在 JobManager 内部,由于还没有提交作业,故只有ResourceManager 和 Dispatcher 在运行,而 TaskManager 可以根据需要动态地启动。如图所示:
在这里插入图片描述

  • 分离模式

在分离模式下,Flink 集群不会预先启动,而是在提交作业时,才启动新的 JobManager。具体流程如图所示:
FLINK ON YARN分离模式作业提交流程

  • 应用模式
    应用模式与分离模式的提交流程非常相似,只是初始提交给 YARN 资源管理器的不再是具体的作业,而是整个应用。一个应用中可能包含了多个作业,这些作业都将在 Flink 集群中启动各自对应的 JobMaster.
举报

相关推荐

0 条评论