当前位置: 首页 > news >正文

《Flink学习笔记》——第四章 Flink运行时架构

4.1 系统架构

Flink运行时架构

image-20230708235643820

Flink 运行时由两种类型的进程组成:一个 JobManager 和一个或者多个 TaskManager

1、作业管理器(JobManager)

JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被唯一的JobManager所控制执行。尽管在HA模式下,一个应用可以配置多个JobManager,但是实际运行中同一时刻只有一个在使用。

JobManager包含3个不同的组件:

  • JobMaster
  • ResourceManager
  • Dispatcher
(1)JobMaster

JobMaster是JobManager中最核心的组件,负责处理单独的作业(Job)。所以JobMaster和具体的Job是一一对应的,多个Job可以同时运行在一个Flink集群中, 每个Job都有一个自己的JobMaster。

JobMaster会把JobGraph转换成一个物理层面的数据流图,这个图被叫作“执行图”(ExecutionGraph),它包含了所有可以并发执行的任务。JobMaster会向资源管理器(ResourceManager)发出请求,申请执行任务必要的资源。一旦它获取到了足够的资源,就会将执行图分发到真正运行它们的TaskManager上。

而在运行过程中,JobMaster会负责所有需要中央协调的操作,比如说检查点(checkpoints)的协调。

(2)ResourceManager

ResourceManager主要负责资源的分配和管理,在Flink 集群中只有一个。所谓“资源”,主要是指TaskManager的任务槽(task slots)。任务槽就是Flink集群中的资源调配单元,包含了机器用来执行计算的一组CPU和内存资源。每一个任务(Task)都需要分配到一个slot上执行。

这里注意要把Flink内置的ResourceManager和其他资源管理平台(比如YARN)的ResourceManager区分开。

(3)Dispatcher

提供提交应用的接口,并且为每一个提交的作业启动一个JobMaster。Dispatcher也会启动一个Web UI,用来方便地展示和监控作业执行的信息。Dispatcher在架构中并不是必需的,在不同的部署模式下可能会被忽略掉

2、任务管理器(TaskManager)

TaskManager是Flink中的工作进程,数据流的具体计算就是它来做的。Flink集群中必须至少有一个TaskManager;每一个TaskManager都包含了一定数量的任务槽(task slots)。Slot是资源调度的最小单位,slot的数量限制了TaskManager能够并行处理的任务数量。

启动之后,TaskManager会向资源管理器注册它的slots;收到资源管理器的指令后,TaskManager就会将一个或者多个槽位提供给JobMaster调用,JobMaster就可以分配任务来执行了。

在执行过程中,TaskManager可以缓冲数据,还可以跟其他运行同一应用的TaskManager交换数据。

Client 不是运行时和程序执行的一部分,而是用于准备数据流并将其发送给 JobManager。之后,客户端可以断开连接(分离模式),或保持连接来接收进程报告(附加模式)

4.2 核心概念

1、数据并行和任务并行

大量数据往往是需要并行来提高吞吐量、处理效率和更好的利用集群资源,可以通过两种并行方式实现,数据并行和任务并行。

数据并行:将输入数据分组,将同一操作(算子)的多个任务来并行执行在不同的数据子集上。

任务并行:不同算子同时执行

2、并行度

(1)并行子任务和并行度

image-20230708184503587

**并行子任务:**在数据并行中,我们需要将同一算子“复制”多份到多个节点,数据来了之后就可以到其中任意一个执行。这样一来,一个算子任务就被拆分成了多个并行的“子任务”(subtasks),再将它们分发到不同节点,就真正实现了并行计算。这些子任务在不同的线程、不同的物理机或不同的容器中完全独立地执行。

**并行度:**一个算子的子任务数。不同算子可以有不同的并行度。

(2)并行度的设置
  • 代码中设置

    算子后面调用setParallelism()方法

  • 提交应用时设置

    bin/flink run –p 并行度 -c com.xxx.xxx xxx.jar
    
  • 配置文件中设置 flink-conf.yaml

    parallelism.default: 2
    

优先级:代码>命令行>配置

4.3 作业提交流程

1、Standalone会话模式作业提交流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hf6dyI0v-1693058508447)(https://drawing-bed-zlin.oss-cn-shenzhen.aliyuncs.com/img/202308262200798.png)]

2、逻辑流图、作业图、执行图、物理流图

逻辑流图(StreamGraph)→ 作业图(JobGraph)→ 执行图(ExecutionGraph)→ 物理图(Physical Graph)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yB1HPwjd-1693058508447)(https://drawing-bed-zlin.oss-cn-shenzhen.aliyuncs.com/img/202308262200024.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U23tcMGv-1693058508448)(第四章 Flink架构.assets/image-20230715095418312.png)]

1)逻辑流图(Stream Graph)

这是根据用户通过 DataStream API编写的代码生成的最初的DAG图,用来表示程序的拓扑结构。这一步一般在客户端完成。

2)作业图(JobGraph)

StreamGraph经过优化后生成的就是作业图(JobGraph),这是提交给 JobManager 的数据结构,确定了当前作业中所有任务的划分。主要的优化为:将多个符合条件的节点链接在一起合并成一个任务节点,形成算子链,这样可以减少数据交换的消耗。JobGraph一般也是在客户端生成的,在作业提交时传递给JobMaster。

我们提交作业之后,打开Flink自带的Web UI,点击作业就能看到对应的作业图

image-20230715093628893

3)执行图(ExecutionGraph)

JobMaster收到JobGraph后,会根据它来生成执行图(ExecutionGraph)。ExecutionGraph是JobGraph的并行化版本,是调度层最核心的数据结构。与JobGraph最大的区别就是按照并行度对并行子任务进行了拆分,并明确了任务间数据传输的方式。

4)物理图(Physical Graph)

JobMaster生成执行图后,会将它分发给TaskManager;各个TaskManager会根据执行图部署任务,最终的物理执行过程也会形成一张“图”,一般就叫作物理图(Physical Graph)。这只是具体执行层面的图,并不是一个具体的数据结构。

物理图主要就是在执行图的基础上,进一步确定数据存放的位置和收发的具体方式。有了物理图,TaskManager就可以对传递来的数据进行处理计算了。

3、Yarn应用模式作业提交流程

image-20230715093902433

相关文章:

《Flink学习笔记》——第四章 Flink运行时架构

4.1 系统架构 Flink运行时架构 Flink 运行时由两种类型的进程组成:一个 JobManager 和一个或者多个 TaskManager。 1、作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就…...

vue3使用Elementplus 动态显示菜单icon不生效

1.问题描述 菜单icon由后端提供&#xff0c;直接用的字符串返回&#xff0c;前端使用遍历显示&#xff0c;发现icon不会显示 {id: 8, path:/userManagement, authName: "用户管理", icon: User, rights:[view]}, <el-menu-item :index"menu.path" v-f…...

升级iOS17后iPhone无法连接App Store怎么办?

最近很多用户反馈&#xff0c;升级最新iOS 17系统后打开App Store提示"无法连接"&#xff0c;无法正常打开下载APP。 为什么升级后无法连接到App Store&#xff1f;可能是以下问题导致&#xff1a; 1.网络问题导致App Store无法正常打开 2.网络设置问题 3.App Sto…...

antd日期选择禁止

1、年月日——日期禁止当天之前的&#xff0c;不包括当天的(带有时间的除外) 2、年月日——日期禁用当天之前的(包括当天的) 部分代码如下:...

数据结构--树4.1

目录 一、树的定义 二、结点的分类 三、结点间的关系 四、结点的层次 五、树的存储结构 一、树的定义 树&#xff08;Tree&#xff09;是n&#xff08;n>0&#xff09;个结点的有限集。当n0时称为空树&#xff0c;在任意一个非空树中&#xff1a; ——有且仅有一个特定的…...

webpack(二)webpack介绍与基础配置

什么是webpack webpack最初的目标是实现前端项目模块化&#xff0c;旨在更高效的管理和维护项目中的每一个资源。 可以看做是模块打包机&#xff0c;分析你的项目结构&#xff0c;找到javascript模块以及其它一些浏览器不能直接运行的拓展语言&#xff08;Scss、TypeScript等&…...

RabbitMQ | 在ubuntu中使用apt-get安装高版本RabbitMQ

目录 一、官方脚本 二、彻底卸载 三、重新安装 1.安装高版本Erlang 2.安装RabbitMQ 一、官方脚本 直接使用apt安装的rabbitmq版本较低&#xff0c;甚至可能无法使用死信队列等插件。首先提供一个 官方 的安装脚本&#xff1a; #!/usr/bin/sh sudo apt-get install curl …...

springboot集成es 插入和查询的简单使用

第一步&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.2.5.RELEASE</version></dependency>第二步&#xff1a;…...

liunx下ubuntu基础知识学习记录

使用乌班图 命令安装使用安装网络相关工具安装dstat抓包工具需要在Ubuntu内安装openssh-server gcc安装vim安装hello word输出1. 首先安装gcc 安装这个就可以把gcc g一起安装2. 安装VIM3.编译运行代码 解决ubuntu与主机不能粘贴复制 命令安装使用 安装网络相关工具 使用ifconf…...

基于Googlenet深度学习网络的螺丝瑕疵检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ....................................................................................% 获…...

keepalived + lvs (DR)

目录 一、概念 二、实验流程命令 三、实验的目的 四、实验步骤 一、概念 Keepalived和LVS&#xff08;Linux Virtual Server&#xff09;可以结合使用来实现双机热备和负载均衡。 Keepalived负责监控主备服务器的可用性&#xff0c;并在主服务器发生故障时&#xff0c;将…...

微服务框架 go-zero 快速实战

对于咱们快速了解和将 go-zero 使用起来&#xff0c;我们需要具备如下能力&#xff1a; 基本的环境安装和看文档的能力 Golang 的基本知识 Protobuf 的基本知识 web&#xff0c;rpc 的基本知识 基本的 mysql 知识 其实这些能力&#xff0c;很基础&#xff0c;不需要多么深入&a…...

mysql基础面经之三:事务

6 事务 6.1 说一下事务的ACID和隔离级别 1 讲解了AID三个特性都是为了C&#xff08;一致性&#xff09;服务的。一般数据库需要使用事务保证数据库的一致性。 正确情况下最好详细讲讲&#xff1a; ACID是用来描述数据库事务的四个关键特性的首字母缩写&#xff0c;具体包括&a…...

JavaScript基本数组操作

在JavaScript中&#xff0c;内置了很多函数让我们可以去对数组进行操作&#xff0c;本文我们就来学习这些函数吧 添加元素 push ● push可以让我们在数组后面再添加一个数据&#xff0c;例如 const friends ["张三", "李四", "王五"]; frie…...

C#---第21: partial修饰类的特性及应用

0.知识背景 局部类型适用于以下情况&#xff1a; 类型特别大&#xff0c;不宜放在一个文件中实现。一个类型中的一部分代码为自动化工具生成的代码&#xff0c;不宜与我们自己编写的代码混合在一起。需要多人合作编写一个类 局部类型的限制: 局部类型只适用于类、接口、结构&am…...

SQL 语句继续学习之记录三

一&#xff0c;数据的插入&#xff08;insert 语句的使用方法&#xff09; 使用insert语句可以向表中插入数据(行)。原则上&#xff0c;insert语句每次执行一行数据的插入。 列名和值用逗号隔开&#xff0c;分别扩在&#xff08;&#xff09;内&#xff0c;这种形式称为清单。…...

Nexus仓库介绍以及maven deploy配置

一 、Nexus仓库介绍 首先介绍一下Nexus的四个仓库的结构&#xff1a; maven-central 代理仓库&#xff0c;代理了maven的中央仓库&#xff1a;https://repo1.maven.org/maven2/&#xff1b; maven-public 仓库组&#xff0c;另外三个仓库都归属于这个组&#xff0c;所以我们的…...

A Survey on Knowledge-Enhanced Pre-trained Language Models

摘要 自然语言处理(NLP)已经通过使用BERT等预训练语言模型(plm)发生了革命性的变化。尽管几乎在每个NLP任务中都创造了新的记录,但plm仍然面临许多挑战,包括可解释性差,推理能力弱,以及在应用于下游任务时需要大量昂贵的注释数据。通过将外部知识集成到plm中,知识增强预训…...

SQL求解用户连续登录天数

数据分析面试过程中&#xff0c;一般都逃不掉对SQL的考察&#xff0c;可能是笔试的形式&#xff0c;也可能是面试过程中面试官当场提问&#xff0c;当场在纸上写出&#xff0c;或者简单说一下逻辑。 今天&#xff0c;就来分享一道面试中常常被问到的一类SQL问题&#xff1a;连…...

掌握逻辑漏洞复现技术,保护您的数字环境

环境准备 这篇文章旨在用于网络安全学习&#xff0c;请勿进行任何非法行为&#xff0c;否则后果自负。 1、支付逻辑漏洞 攻击相关介绍 介绍&#xff1a; 支付逻辑漏洞是指攻击者利用支付系统的漏洞&#xff0c;突破系统的限制&#xff0c;完成非法的支付操作。攻击者可以采…...

基于NSGA-II多目标遗传优化算法的考虑风光火储+需求响应+P2G多能源系统多目标优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Windows驱动存储深度管理:DriverStore Explorer全方位解决方案

Windows驱动存储深度管理&#xff1a;DriverStore Explorer全方位解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 一、驱动管理困境与突破路径 1.1 系统驱动管理的核心挑战 W…...

Mermaid在线编辑器终极指南:免费实时图表创作工具完全解析

Mermaid在线编辑器终极指南&#xff1a;免费实时图表创作工具完全解析 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-ed…...

5分钟部署大麦抢票助手:告别手动刷票的智能解决方案

5分钟部署大麦抢票助手&#xff1a;告别手动刷票的智能解决方案 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在热门演唱会门票秒光的时代&#xff0c;手动刷新抢票已经成为历史。DamaiHelper大…...

别再自己造轮子了!用DJI Pilot 2 + 上云API,30分钟搞定无人机数据上云

30分钟极速对接&#xff1a;用DJI Pilot 2与上云API实现无人机数据云端整合 在智慧城市巡检或应急指挥场景中&#xff0c;实时获取无人机航拍画面与飞行数据往往是业务闭环的关键。传统方案需要投入数月时间开发定制化App&#xff0c;而大疆最新推出的上云API方案&#xff0c;让…...

TDEFNODE 安装与入门:从源码编译到成功跑通案例(超详细避坑指南)

TDEFNODE 安装与入门&#xff1a;从源码编译到成功跑通案例&#xff08;超详细避坑指南&#xff09; 一、前言 TDEFNODE 是一个用于地壳形变建模的经典科研程序&#xff0c;常用于 GNSS 速度场反演、块体运动分析以及断层滑动研究。 但与常见软件不同&#xff1a;TDEFNODE 不是…...

OpenClaw 的模型架构中,是否使用了非自回归生成(NAR)模块?

关于OpenClaw模型架构中是否使用了非自回归生成模块&#xff0c;这其实是一个挺有意思的问题。在讨论具体细节之前&#xff0c;或许可以先聊聊非自回归生成本身在技术演进中的位置。 非自回归生成&#xff0c;也就是NAR&#xff0c;和常见的自回归生成方式不太一样。自回归生成…...

装机:WIN10家庭版升级专业版

https://ubuntu.com/download/desktop/thank-you?version24.04.4&architectureamd64&ltstrue 装机&#xff1a;WIN10家庭版升级专业版Win10、Win11不重装系统情况下怎么使用一条命令实现家庭版升级为专业版或企业版&#xff1f;https://mp.weixin.qq.com/s/bIcRu6A_cl…...

C++的std--filesystem文件系统库与跨平台路径处理的标准化

C的std::filesystem文件系统库与跨平台路径处理的标准化 在现代软件开发中&#xff0c;跨平台文件系统操作一直是一个复杂且容易出错的挑战。不同操作系统&#xff08;如Windows、Linux和macOS&#xff09;使用不同的路径分隔符和文件系统语义&#xff0c;开发者往往需要编写大…...

SEO_网站SEO排名下降的五大原因及应对技巧

SEO:网站SEO排名下降的五大原因及应对技巧 在数字营销的世界里&#xff0c;网站的SEO排名对于吸引流量和提升业务是至关重要的。随着搜索引擎算法的不断更新&#xff0c;很多网站会经历SEO排名下降的困境。本文将详细探讨网站SEO排名下降的五大原因&#xff0c;并提供相应的应…...