赞
踩
视频地址:https://www.bilibili.com/video/av52394455
一、Flink 的整体架构如图 1 所示。Flink 是可以运行在多种不同的环境中的,例如,它可以通过单进程多线程的方式直接运行,从而提供调试的能力。它也可以运行在 Yarn 或者 K8S 这种资源管理系统上面,也可以在各种云环境中执行。
图1.Flink 的整体架构,其中 Runtime 层对不同的执行环境提供了一套统一的分布式执行引擎。
二、流程
(1)AM:AppMaster分为三个部分:
a.Dispatcher:Dispatcher 负责接收用户提供的作业,并且负责为这个新提交的作业拉起一个新的 JobManager 组件,一个提交的任务对应一个JobManager
b.RM:负责资源的管理,在整个 Flink 集群中只有一个RM
c.JobManager: 负责管理作业的执行,在一个 Flink 集群中可能有多个作业同时执行,每个作业都有自己的 JobManager 组件
(2)作业流程:
a.分为两种模式:类似于 Standalone 这种 Session 模式
1.AM 预先启动
2.用户提交作业到Client
3.Client进程编译用户代码成JobGraph
b.另一种是 Per-Job 模式
1.用户提交作业到Client
2. Client进程编译用户代码成JobGraph
3.Yarn/Mesos 分配资源
4.加载AM
c.两种模式,之后的流程数是一样的:
5.Client 向AM的Dispathcer 提交jobGraph
6.Dispathcer 启动JobManager组建
7. JobManager 向 RM 申请资源来启动作业中具体的任务
8. RM着手分配资源(资源单位:Slot -- 槽:里面是TaskManager以及任务所需要的资源,一个 Slot 一般可以执行一个具体的 Task,但在一些情况下也可以执行多个相关联的 Task)
9. RM分配好资源,通知TM(每个Task都有一个TM),将哪个Slot分配给 对应的JobManager
10.JobManager 取得自己的Slot, 并向自己的Slot的TaskManager 注册并提交Task
11.TM接收JobManager提交的job,开启Task线程去执行Task
12.Task 启动后就会开始进行预先指定的计算,并通过数据 Shuffle 模块互相交换数据
图2. Flink 集群的基本结构。Flink Runtime 层采用了标准的 master-slave 架构。
(3) 两种作业模式的区别
图3. Flink Runtime 支持两种作业执行的模式。
(4)资源分配
图4. Flink 中资源管理功能各模块交互关系。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。