flink运行原理_Flink运行架构剖析

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对Flink on YARN的两种模式进行了详细剖析。

Flink Runtime作业执行流程分析

整体架构图

Flink Runtime 层的主要架构如下图所示,它展示了一个 Flink 集群的基本结构。整体来说,它采用了标准 master-slave 的结构,master负责管理整个集群中的资源和作业;TaskExecutor 则是 Slave,负责提供具体的资源并实际执行作业。

44e6d28341f76d7564f84a08ee8c932c.png

执行流程分析

  • 组件介绍

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运行架构如下图所示:

3c0b29617238009867f772f2ef04e778.png

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.适合执行时间较长的大作业

d743a454893ef233d22cae8d521735c5.png

Session模式

在 Session 模式下,Flink 预先启动 AppMaster 以及一组 TaskExecutor,然后在整个集群的生命周期中会执行多个作业。可以看出,Session 模式更适合规模小,执行时间短的作业。

1.共享Dispatcher与ResourceManager

2.共享资源

3.适合小规模,执行时间较短的作业

3c049ea9b07c90abf94471c59b830fe5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vb 获取系统声音的电平_质量好的背景音乐系统套装效果图

笔者是主张低阶设计的,但不一定是越低阶越好,前面已经讲过是以分而治之的手段,达致阴阳融合之目的。分而治之就是把高低音单元的互相不协调的部分和缺点去掉,保留各自的优点,以达到互补融合之目的。有扩声系统中才存在…

[html] 说说你对这几个概念的理解:层叠上下文、层叠等级、层叠顺序

[html] 说说你对这几个概念的理解:层叠上下文、层叠等级、层叠顺序 层叠上下文(stacking context),是HTML中一个三维的概念。在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的X轴,Y轴以及表示层叠的Z轴。如…

随手一记

1.在WinForm读取数据的时候经常会用到DataTable,而对读取的数据我们有时只想显示其中符合某些条件的数据,这个时候就可以使用DataTable的Select操作,dataTable.Select(”检查结果‘“result”’“),其中检查结果是DataTable的Colu…

vue初级尝试

为了跟上前端后台化的潮流&#xff0c;本少不得不开始关注vue&#xff0c;下列上机代码是针对App.vue进行的更改 数据渲染----一般键值对&#xff0c;数组&#xff0c;对象和对象数组<template><div id"app"><img><h1>{{msg}}</h1><…

钉钉产品介绍_钉钉正式推出智能OA:免费开放、一站解决“人财物事”管理难题...

9月2日消息&#xff0c;阿里钉钉今日正式上线智能OA产品“OA审批”&#xff0c;通过开放工作流、审批流引擎&#xff0c;向中小企业提供场景全面、定制简易、操作门槛低的OA协同服务&#xff0c;实现企业管理流程、业务流程的全链路数字化&#xff0c;一站解决人财物事管理难题…

同方知网软件_国产精品软件天若OCR:支持图像识别/自动翻译/公式识别等

日常生活中有时候我们会遇到某些文件以截图方式发送的 , 想要提取其中的文字内容进行整理就需要靠识别。毕竟如果内容较多的话靠手打可能是个费时费力的事情&#xff0c;OCR识别方面的软件很多但是多数软件都是收费的。在收费软件里自然也有价格便宜和价格比较高的&#xff0c;…

[html] div等元素如何阻止点击穿透和实现点击穿透?

[html] div等元素如何阻止点击穿透和实现点击穿透&#xff1f; pointer-events: none; 允许点击穿透 阻止穿透 在js的点击事件里面添加这句话&#xff0c;阻止冒泡 event.stopPropagation();个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff…

第三天了

今天好累&#xff0c;但收获多多&#xff0c;满足。 2012.2.23图层和蒙版层的类型&#xff1a;图层&#xff0c;智能图层【一个文档里嵌入一个文档&#xff0c;双击图层后形成一个新的文档】&#xff0c;调节层&#xff1b;背景层<-->图层&#xff1a;按ALT双击背景层--&…

n维椭球体积公式_物质的量浓度公式如何应用

我们常用到的物理量一般有长度、时间、速度等等&#xff0c;物质的量也和这些概念一样&#xff0c;是一个物理量的整体名词&#xff0c;今天小编就为大家介绍一下什么是物质的量&#xff0c;物质的量的浓度公式是什么。1、国际单位制7个物理量长度(单位&#xff1a;m)、质量(单…

利用vue v-bind属性绑定bootstrap样式以及输出数据

自从知道了bootstrap&#xff0c;就被他简介&#xff0c;大气美观的样式吸引&#xff0c;即使在vue框架中&#xff0c;仍旧想使用&#xff0c;下面给出了vue适配版和原版的代码&#xff0c;以飨读者 数据输出部分export default {data(){return {pagestyle:https://v4.bootcss…

[html] 浏览器的默认字体大小是多少?怎么设计它的基准?

[html] 浏览器的默认字体大小是多少&#xff1f;怎么设计它的基准&#xff1f; 多数浏览器的默认字体大小均为16px。可设置CSS的font-size改变字体大小。 <style> html,body{ font-size: 16px; } </style> 也可设置font-size:62.5%&#xff0c;使得1rem 10px来约…

python中urframe函数的用法_python类中的内置函数

__init__():__init__方法在类的一个对象被建立时&#xff0c;马上运行。这个方法可以用来对你的对象做一些你希望的初始化。注意&#xff0c;这个名称的开始和结尾都是双下划线。代码例子:#!/usr/bin/python# Filename: class_init.pyclass Person:def __init__(self, name):se…

Hadoop中RPC机制

Hadoop中RPC机制 RPC(Remote Procedure Call Protocol)远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。Hadoop底层的交互都是通过rpc进行的。例如&#xff1a;datanode和namenode 、tasktracker和jobtra…

C++中如何读取一个数的位数_求1000以内的水仙花数

点击上方 蓝字关注我们大家好&#xff0c;我是阿汤哥。看知乎上有朋友说还不明白怎么判断水仙花数&#xff0c;今天我们就来看看这个问题。(PS&#xff1a;“求1000以内的水仙花数”这道题阿汤哥记忆犹新。到现在还记得这是我大一上学期期末考试的编程题。)怎么求水仙花数&…

[html] link标签的属性media有哪些值?都有什么作用?

[html] link标签的属性media有哪些值&#xff1f;都有什么作用&#xff1f; 根据w3c的介绍&#xff0c;media属性表示link的链接文档会应用于何种媒介&#xff08;设备&#xff09;上。用于为不同的媒介类型规定不同的样式。常用的值为screen(计算机屏幕&#xff0c;默认), pr…

双向绑定v-bind

通过v-model绑定输出数据<script> export default {data(){return {pagestyle:https://v4.bootcss.com/docs/4.3/dist/css/bootstrap.css,pagecss:https://v4.bootcss.com/docs/4.3/examples/sticky-footer-navbar/sticky-footer-navbar.css,mytitle:v-bind bootstrap样…

python函数复用_【python学习-4】可复用函数与模块

1、自定义函数自定义函数格式如下&#xff1a;def (参数列表):return#!/usr/bin/python#定义函数&#xff0c;打印数字1~5defprintNum5():#range函数&#xff0c;生成列表集合&#xff0c;有3个入参&#xff1a;start(可选&#xff0c;起始数)&#xff0c;stop(终止数&#xff…

(todo)数组名 有存储空间吗?

转与csdn 对于数组b[]&#xff0c;b是数组的地址&#xff0c;但b不算变量&#xff0c;有没有一个地方存放b&#xff1f;而且b是不 是存放的就是自己所在的地址。 ------------------------------------------------------------- 数组名不是对象&#xff0c;数组才是对象&am…

[html] 实现一个居中半透明的模态窗

[html] 实现一个居中半透明的模态窗 .modal{ width: 400px; height: 250px; position: absolute; top: 50%; left: 50%; background: rgba(0,0,0,.5); transform: translateX(-50%) translateY(-50%); }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容…

xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...

上篇““色觉地图”的建立&#xff08;一&#xff09;&#xff1a;光感受器、色匹配实验与CIE RGB坐标系“中说到&#xff0c;人的色觉是线性的&#xff0c;我们可以用叠加原理“混色”——这意味着色觉的空间固定不变&#xff0c;我们可以任意选择一组基底&#xff08;或说坐标…