Flink进阶(一)-- Flink整体架构以及 Job 的基本执行流程

视频地址:https://www.bilibili.com/video/av52394455

文档地址:http://note.youdao.com/noteshare?id=40b733ab556e73d1a62f6c5787c68c08&sub=239E0053AEB9462387419D600035BEDC

 

一、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 中资源管理功能各模块交互关系。

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值