Flink Runtime核心机制解析-执行流程

概述

Flink是可以运行在多种不同的环境中的,可以通过单进程多线程的方式直接运行,也可以运行在Yarn或K8s这中资源管理系统上面,也可以在各种云环境中执行,本问主要介绍Flink Runtimed 整体价格以及Job的基本执行流程,然后介绍Flink是怎么进行资源关闭、作业调度以及错误重试。

Flink Runtime整体架构

Flink Runtime 对不同的执行环境提供了一套统一的分布式执行引擎
在Runtime层之上提供了DataStream和DataSet两套API,分别用来编写流作业与批作业,以及一组更高级的API来简化特征作业的编写.

Flink Runtime层
在这里插入图片描述
从上面的架构图中,可以看出Fli你看集群的基本结构,整体来说,它采用了标准的master-slava的结构
master: 左侧白色全中的部分即是master,它负责关闭整个集群中的资源和作业
slave:右侧的两个taskExecutor则是Slave,它负责提供具体的自己并实际执行作业

Runtime Master:
APP Master 主要包括三个组件:Dispatche、ResourceManager和JobManager

		Dispatche:负责接收用户提交的作业,并负责为这个新提交的作业拉起一个新的JobManager组件
		ResourceManager: 负责资源的管理,在整个Flink集群只有一个ResourceManager
		JobManager : 负责管理作业的执行,在一个FLink集群中可能有多个作业同时执行,每个作业都有自己的JobManager组件

Flink Runtime执行过程:

	1.用户提过作业后,会启动一个Clinent进程负责作业的编译与提交,它首先会将用户编写的代码编译为一个JobGeaph,并会进行一些检查与优化工作,例如判断哪个Operator可以Chain到统一个Task中
	2.判断执行模式
		2.1 共享Session模式,AM会预先启动,此时Client直接与Dispatcher建立连接并提交作业
		2.2 独享Per-Jo模式,AM不会预先启动,此时Client将首先向资源管理系统 申请资源来启动AM,然后在向AM中的Dispatcher提交作业
	3.当作业到Dispatcher后,Dispatcher会启动一个JobManager组件,然后JobManager会向ResourceManager申请资源启动作业中的具体任务
	4.ResourceManager中会判断执行模型
		4.1 共享Session模式,ResourceManager 中已经记录了TaskExecutor注册的资源,可以直接选取空闲的资源进行分配
		4.2独享Per-Job模式,ResourceManager需要向外部资源管理系统申请资源来启动taskExecutor,然后等待TaskExecutor注册资源后,在继续选择空闲资源,
	目前TaskExecutor的资源是通过Slot来描述,一个slot一般可以执行一个具体的Task,但在一些情况下也可以执行多个相关联的Task
	6.ResourceManager选择到空闲的Slot之后,就会通知相应的TM,将改Slot分配给 某个JobManager XX  ,然后TaskExecutor进行记录后,会向JsbManage进行注册
	7.JpbManager 收到TaskExcecutor注册上来的Slot后,就可以实际提交task了
	8.TaskExecutor收到JobManager提交的Task之后,会启动一个新的线程来执行Task,Task启动后就会开始进行预先指定的加,并通过数据Shuffle模块交互数据

Flink 支持两种不同的模式

在这里插入图片描述

1.独享模式:独享模式下整个Flink集群只执行单个作业,即每个作业会独享Dispatcher和ResourceManager,并且AppMaste和TaskExecutor都是按需申请,因此独享模式适合执行时间较长的大作业,这些作对稳定性要求比较高,并且对申请资源的时间不敏感
2.共享模式:共享模式Flink预先启动AppMaster以及一组TaskExecutor,然后在整个集群的生命周期中会执行多个作业,共享模式更适合规模小,执行时间段的作业
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值