flink运行原理_Flink运行架构剖析
Flink Runtime作业执行流程分析
整体架构图
Flink Runtime 层的主要架构如下图所示,它展示了一个 Flink 集群的基本结构。整体来说,它采用了标准 master-slave 的结构,master负责管理整个集群中的资源和作业;TaskExecutor 则是 Slave,负责提供具体的资源并实际执行作业。
执行流程分析
组件介绍
Application Master 部分包含了三个组件,即 Dispatcher、ResourceManager 和 JobManager。其中,Dispatcher 负责接收用户提供的作业,并且负责为这个新提交的作业拉起一个新的 JobManager 组件。ResourceManager 负责资源的管理,在整个 Flink 集群中只有一个 ResourceManager。JobManager 负责管理作业的执行,在一个 Flink 集群中可能有多个作业同时执行,每个作业都有自己的 JobManager 组件。这三个组件都包含在 AppMaster 进程。 TaskManager主要负责执行具体的task任务,StateBackend 主要应用于状态的checkpoint。 Cluster Manager是集群管理器,比如Standalone、YARN、K8s等。
流程分析
1.当用户提交作业的时候,提交脚本会首先启动一个 Client进程负责作业的编译与提交。它首先将用户编写的代码编译为一个 JobGraph,在这个过程,它还会进行一些检查或优化等工作,例如判断哪些 Operator 可以 Chain 到同一个 Task 中。然后,Client 将产生的 JobGraph 提交到集群中执行。此时有两种情况,一种是类似于 Standalone 这种 Session 模式,AM 会预先启动,此时 Client 直接与 Dispatcher 建立连接并提交作业即可。另一种是 Per-Job 模式,AM 不会预先启动,此时 Client 将首先向资源管理系统 (如Yarn、K8S)申请资源来启动 AM,然后再向 AM 中的 Dispatcher 提交作业。
2.当作业到 Dispatcher 后,Dispatcher 会首先启动一个 JobManager 组件,然后 JobManager 会向 ResourceManager 申请资源来启动作业中具体的任务。如果是Session模式,则TaskManager已经启动了,就可以直接分配资源。如果是per-Job模式,ResourceManager 也需要首先向外部资源管理系统申请资源来启动 TaskExecutor,然后等待 TaskExecutor 注册相应资源后再继续选择空闲资源进程分配,JobManager 收到 TaskExecutor 注册上来的 Slot 后,就可以实际提交 Task 了。
3.TaskExecutor 收到 JobManager 提交的 Task 之后,会启动一个新的线程来执行该 Task。Task 启动后就会开始进行预先指定的计算,并通过数据 Shuffle 模块互相交换数据。
Flink Standalone运行架构
Flink Standalone运行架构如下图所示:
Standalone模式需要先启动Jobmanager和TaskManager进程,每一个作业都是自己的JobManager。 Client:任务提交,生成JobGraph
JobManager:调度Job,协调Task,通信,申请资源
TaskManager:具体任务执行,请求资源
Flink On YARN运行架构
关于YARN的基本架构原理,详见另一篇我的另一篇文章YARN架构原理
Per-Job模式
Per-job 模式下整个 Flink 集群只执行单个作业,即每个作业会独享 Dispatcher 和 ResourceManager 组件。此外,Per-job 模式下 AppMaster 和 TaskExecutor 都是按需申请的。因此,Per-job 模式更适合运行执行时间较长的大作业,这些作业对稳定性要求较高,并且对申请资源的时间不敏感。
1.独享Dispatcher与ResourceManager
2.按需申请资源(TaskExecutor)
3.适合执行时间较长的大作业
Session模式
在 Session 模式下,Flink 预先启动 AppMaster 以及一组 TaskExecutor,然后在整个集群的生命周期中会执行多个作业。可以看出,Session 模式更适合规模小,执行时间短的作业。
1.共享Dispatcher与ResourceManager
2.共享资源
3.适合小规模,执行时间较短的作业
flink运行原理_Flink运行架构剖析相关推荐
- Serverless 实战 —— Serverless 的运行原理与组件架构
Serverless 的运行原理与组件架构 本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流, ...
- 运行原理_JMeter运行原理
前几篇我们讲解了JMeter的组成部分, 下面我们来了解JMeter的运行原理. 接触过LoadRunner的读者应该知道, LoadRunner可以选择是以进程方式还是以线程方式来运行, 在JMet ...
- ASP.NETt运行原理和运行机制
当一个http请求发送过来并被IIS机收到之后,IIS首先通过你请求的页面类型为其加载相应的dll文件,然后在处理过程中将这条请求发送给能够处理这条请求的模块,而在ASP.NET中这个模块就叫做Htt ...
- ASP.NET运行原理和运行机制
一.ASP.NET运行原理 当一个http(abbr. 超文本传输协议 hypertext transport protocol )请求发送过来并被IIS机收到之后,IIS(IIS 互联网信息服务信 ...
- JSP运行原理及运行过程
学习J2EE时,初步了解了JSP,写过一篇小的总结:J2EE-JSP,当时还不是很了解它的运行机制. 学习DRP时,再次接触了JSP,在原来基础上有了更深的了解,了解了它的执行原理 1,JSP的运行原 ...
- MySQL运行原理与基础架构
下面是关于上述部件的介绍: connectors 与其他编程语言中的sql 语句进行交互,如php.java等. Management Serveices & Utilities 系统管理和控 ...
- 怎么去观察php运行原理,php运行原理如何理解,具体看代码?
PHP 测试 Hello World'; ?> 这个是一段简单的php代码,文件是hello.php,我通过www.xxx.com/hello.php请求这个页面的时候,php是如何解析数据返回 ...
- LoadRunner系统架构简介与运行原理
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
- flink运行原理_浅谈Flink分布式运行时和数据流图的并行化
本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理.关于Flink WordCount程序可以参考我之前的文章:读取Kafka实时数据流,实现Flink WordCount.阅 ...
最新文章
- centos上安装anaconda并配置虚拟环境
- 李彦宏为什么被称为AI先生,美国权威媒体给出答案
- Android-Spinner的使用以及两种适配器
- Java 理论与实践: 正确使用 Volatile 变量--转
- PyQt5 笔记3 -- 信号与槽
- Angular 服务器端渲染的学习笔记(一)
- 更改apk安装包对android系统等级要求
- vc中关于 directx的配置,和dxsdk_extras(directshow)
- python读取文件特定内容_利用python代码获取文件特定的内容,并保存为文档
- 【python】Python基础语法及规范
- 关于最近Vue3+ Vue-CLI3+比较热门的十几篇文章
- centos yum 安装
- 数据分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!
- JUC和线程池的详细讲解
- Revit2018下载和安装教程
- G120XA与S7-1200的Modubus通信(一)
- 国内打开Cousera方法
- 【强化学习论文精读】Timeliness Guaranteed Traffic Flow Forecasting Based on Federated Online Learning
- 白话机器学习-Encoder-Decoder框架
- 利用sympy库求解常微分方程:dsolve()函数
热门文章
- oppo r11 android版本,OPPO R11手机一共有几个版本?各版本都有哪些区别?
- java 线程池 固定大小_使用Executors服务在Java中创建固定大小线程池的最佳方法...
- mysql gtid坑_通过mysqlbinlog --skip-gtids恢复后再备份可能造成的坑
- wordpress 每段首行空两格
- CC254x--BLE
- 学习 Spring Boot:(二十九)Spring Boot Junit 单元测试
- 使用Visio 2000逆向工程将代码转换为UML图表
- VC设置CEdit控件背景透明、文字背景也透明
- pro*C/C++支持c++开发实例
- React开发(172):React引入背景图片