当前位置:   article > 正文

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

flinkjob可以直接运行

视频地址: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 中资源管理功能各模块交互关系。

 

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/457960
推荐阅读
相关标签
  

闽ICP备14008679号