flink solt概念详解

news2024/12/23 9:00:45

ask是flink中的一个逻辑概念,一个任务由一个或者多个算子组合而成(多个算子构成一个任务是需要满足一定的条件才可以,有兴趣的老铁可以来了解一下 Operator Chain),为了提升任务执行的效率,可以对任务配置并行度,使任务在实际运行过程中并行执行,此时该任务的多个并行任务被称为子任务(subTask)。如下图:每个虚线框是一个任务,框里的圆是子任务。
在这里插入图片描述

总结来说:Task是逻辑概念,subTask是实际运行的实例,一个Task的subTask个数就是上面说的并行度。在上图中Task有3个,subTask有6个。 

Slot
Slot是flink集群中资源分配的基本单位,slot主要分布在TaskManager中,了解flink架构的老铁都知道,TaskManager是一个jvm进程,是subTask运行的地方。

当TaskManager启动的时候会将自己的资源以Slot的方式注册到ResourceManager,然后JobManager从ResourceManager处申请到Slot资源之后,会将subTask调度到这些Slot上面去运行,在整个过程中sub task是调度的基本单元,Slot则是资源分配的基本单元。
这里需要说明一下:slot之间内存隔离,cpu不隔离,也就是内存是独立的,但是cpu是共享的

Task并行度和slot个数之间的关系是怎样的?
一个Task的并行度,要求该任务有指定个数个subTask并行执行,所以要求每个subTask运行在不同的solt中,因此slot的个数不能小于任务的并行度

slot sharing所表达的意思是 slot共享,但是这里需要注意的是,共享slot的subTask需要满足一下条件:

1.subTask必须来自同一个job,以为不同job之间资源是隔离的,TaskManager都是隔离,更不用说TaskManager上的slot了。

2.subTask必须来自不同Task,同一个Task的subTask不用共享一个slot,否自就失去了并行度的意义了。

如果slot不共享,每个sub task都运行在独立的slot上会发生什么?

我们知道一个job的DAG中,不同Task对资源的消耗是不同的,如果都均分slot,那必然有些资源利用率高,有些低。限制不同Task的sub task共享可以尽量让资源占用高的和资源占用低的放一起,这样可以是资源得到重复利用,否则占用资源少的sub task运行完后,给其分配的slot就闲置了。

除此之外,slot sharing也降低了一个job运行对资源依赖的门槛,如果每个slot sharing,那么一个job运行需要的slot个数和job中所有的sub task个数相同,而有了slot sharing,需要的slot个数,取决于DAG中所有Task中最大的并行度个数。

在有slot sharing的场景下,上文中的应用程序只需要2个slot即可:

在这里插入图片描述
没有slot sharing的场景下,则需要6个slot:
在这里插入图片描述

将算子链接成 task 是个有用的优化:

  • 它减少线程间切换、缓冲的开销,并且减少延迟的同时增加整体吞吐量。
  • 链行为是可以配置的;将两个算子链接在一起能使得它们在同一个线程中执行,从而提升性能。

Flink 默认会将能链接的算子尽可能地进行链接(例如, 两个 map 转换操作)。 此外, Flink 还提供了对链接更细粒度控制的 API 以满足更多需求:
如果想对整个作业禁用算子链,可以调用 StreamExecutionEnvironment.disableOperatorChaining()。下列方法还提供了更细粒度的控制。需要注 意的是, 这些方法只能在 DataStream 转换操作后才能被调用,因为它们只对前一次数据转换生效。例如,可以 someStream.map(...).startNewChain() 这样调用,而不能 someStream.startNewChain()这样。
一个资源组对应着 Flink 中的一个 slot 槽, 你可以根据需要手动地将各个算子隔离到不同的 slot 中。
    
 

Start new chain以当前 operator 为起点开始新的连接。如下的两个 mapper 算子会链接在一起而 filter 算子则不会和第一个 mapper 算子进行链接。someStream.filter(...).map(...).startNewChain().map(...);
Disable chaining
任何算子不能和当前算子进行链接; someStream.map(...).disableChaining();
Set slot sharing group

配置算子的资源组。Flink 会将相同资源组的算子放置到同一个 slot 槽中执行,并将不同资源组的算子分配到不同的 slot 槽中,从而实现 slot 槽隔离。资源组将从输入算子开始继承如果所有输入操作都在同一个资源组。 Flink 默认的资源组名称为 “default”,算子可以显式调用 slotSharingGroup(“default”) 加入到这个资源组中。 someStream.filter(...).slotSharingGroup("name");

Task Slots 和资源
每个 worker(TaskManager)都是一个 JVM 进程,可以在单独的线程中执行一个或多个 subtask。为了控制一个 TaskManager 中接受多少个 task,就有了所谓的 task slots(至少一个)。每个 task slot 代表 TaskManager 中资源的固定子集。
例如,具有 3 个 slot 的 TaskManager,会将其托管内存 1/3 用于每个 slot。分配资源意味着 subtask 不会与其他作业的 subtask 竞争托管内存,而是具有一定数量的保留托管内存。注意此处没有 CPU 隔离;当前 slot 仅分离 task 的托管内存。通过调整 task slot 的数量,用户可以定义 subtask 如何互相隔离。每个 TaskManager 有一个 slot,这意味着每个 task 组都在单独的 JVM 中运行(例如,可以在单独的容器中启动)。具有多个 slot 意味着更多 subtask 共享同一 JVM。同一 JVM 中的 task 共享 TCP 连接(通过多路复用)和心跳信息。它们还可以共享数据集和数据结构,从而减少了每个 task 的开销。
 

Flink中slot是任务执行所申请资源的最小单元,同一个TaskManager上的所有slot都只是做了内存分离,没有做CPU隔离。
每一个TaskManager都是一个JVM进程,如果某个TaskManager 上只有一个 slot,这意味着每个 task 组都在单独的 JVM 中运行,如果有多个 slot 就意味着更多 subtask 共享同一 JVM。
一般情况下有多少个subtask,就是有多少个并行线程,而并行执行的subtask要发布到不同的slot中去执行。
Flink 默认会将能链接的算子尽可能地进行链接,也就是算子链,flink 会将同一个算子链分组内的subtask都发到同一个slot去执行,也就是说一个slot可能要执行多个subtask,即多个线程。
flink 可以根据需要手动地将各个算子隔离到不同的 slot 中。
一个任务所用的总共slot为所有资源隔离组所占用的slot之和,同一个资源隔离组内,按照算子的最大并行度来分配slot。

如果并行度是4 ,但是slot只有3个,会部署失败
 

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

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

相关文章

【服务器数据恢复】FreeNAS层UFS2文件系统数据恢复案例

服务器数据恢复环境: Dell存储服务器,采用esxi虚拟化系统,esxi虚拟化系统里有3台虚拟机;上层iSCSI使用FreeNAS构建,通过iSCSI方式实现FCSAN功能;FreeNAS层采用UFS2文件系统。 esxi虚拟化系统里有3台虚拟机中…

python中使用numpy包的向量矩阵相乘

一直对np的线性运算不太清晰,正好上课讲到了,做一个笔记整个理解一下 1.向量和矩阵 在numpy中,一重方括号表示的是向量vector,vector没有行列的概念。二重方括号表示矩阵matrix,有行列。 代码显示如下: …

VMware 复制已有的虚拟机并修改IP地址

第一步:关闭当前机器第二步:在VMware中右键要克隆的机器 选择管理-->克隆第三步:启动新克隆的虚拟机 修改主机名 如 hostname slave2第四步:修改克隆的虚拟机的ip地址和mac地址(注意:由于slave2是克隆出…

直流电机驱动模块开发,为电子设备提供动力之源

直流电机分为有刷直流电机和无刷直流电机两种,有刷直流电机连接上直流电就能转动,但是想要做到精准的转速和方向控制离不开电机驱动模块;无刷直流电机则必须要有驱动才能转动,直流电机驱动模块能够充分利用和有效发挥电源的能量功…

MQTT X 1.9.1 发布:资源消耗降低 80%,稳定性大幅提升

经过两个 Beta 版本迭代,近日,MQTT 5.0 客户端工具 MQTT X 正式发布了 1.9.1 稳定版本。 该版本通过大规模性能优化以及已知问题修复实现了稳定性的飞跃提升。特别是在性能方面,以接收大量消息场景为例,v1.9.1 相比于上一版本&am…

【数据结构与算法】单调队列 | 单调栈

🌠作者:阿亮joy. 🎆专栏:《数据结构与算法要啸着学》 🎇座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉…

【Python入门第七天】Python 数字

Python 数字 Python 中有三种数字类型: intfloatcomplex 为变量赋值时,将创建数值类型的变量: 实例 x 10 # int y 6.3 # float z 2j # complex如需验证 Python 中任何对象的类型,请使用 type() 函数: 实…

计算机图形学:中点Bresenham算法画椭圆

作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、实现思路二、…

分布式-分布式事务和分布式锁

分布式事务有哪些解决方案 分布式事务 指事务的参与者、支持事务操作的服务器、存储等资源分别位于分布式系统的不同节点之上。 分布式事务就是一个业务操作,是由多个细分操作完成的,而这些细分操作又分布在不同的服务器上;事务&#xff0c…

数据库(第一天)

文档信息 文档类别正式文档文档编号数据库基础课 1.2-001版本1.2-001文档名称数据库基础课编写负责人/编写时间梁昭东/2023 年 1 月 30 日审核负责人/审核时间年 月 日批准人/批准时间年 月 日 变更记录 日期版本号变更内容修订者2023.01.30v1.2版根据实际情况增删了部分内容…

LINUX【线程概念】

线程线程概念线程的优点线程的缺点线程异常线程用途linux进程和线程线程控制pthread 库创建线程线程等待线程退出线程分离线程互斥线程互斥相关概念线程互斥互斥量互斥量接口初始化互斥量销毁互斥量互斥量的加锁和解锁互斥量实现原理线程概念 线程是进程中的一个执行流 一个进程…

ShonyDanza:如何利用Shodan实现自定义的安全研究与网络防护

关于ShonyDanza ShonyDanza是一款支持自定义且易于使用的安全工具,该工具基于Shodan实现其功能,并且可以利用Shodan的强大能力帮助研究人员实现安全研究、安全测试和安全防护等任务。 ShonyDanza的功能包括: 1、根据搜索条件获取IP 2、根据…

LabWindows CVI 2017开发笔记--串口调试软件实例

一、新建工程 打开LabWindows CVI软件,在桌面新建SerialDebug文件夹用来保存工程文件,在欢迎页点击New–>Project 或者在软件首页点击File–>New–>Project 将Project创建在新的Workspace中,设置完成后点击OK 新建一个用户GUI界…

内存溢出、内存泄露的概述及常见情形

内存溢出(OutofMemoryError) 简述 java doc 中对 Out Of Memory Error 的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存。 JVM 提供的内存管理机制和自动垃圾回收极大的解放了用户对于内存的管理,由于 GC&…

functional interface

更优雅 案例 要在TodoTaskRepository写find方法找到对应task列表,传入自定义的如何find 要传入两个参数,返回一个bool,在文档里找这样的functional interface java8官方文档-Package java.util.function BiPredicate是这样的 接口函数是t…

Numpy基础——人工智能基础

文章目录一、Numpy概述1.优势2.numpy历史3.Numpy的核心:多维数组4.numpy基础4.1 ndarray数组4.2 内存中的ndarray对象一、Numpy概述 1.优势 Numpy(Nummerical Python),补充了Python语言所欠缺的数值计算能力;Numpy是其它数据分析及机器学习库的底层库&…

GitLab CI/CD实现代码推送后自动maven打包发布

1、GitLab CI/CD介绍 CI(Continuous Intergration):即持续集成,将代码的合并、部署、自动化测试都在一起,不断地执行这个过程,并对结果反馈。 CD(Continuous Delivery):即持续交付,持续交付是一种软件工程方…

别具一格的婚礼,VR全景+婚礼的优势展现在哪里?

随着90后、95后逐渐步入结婚的主力军中,如何策划一场别具一格的婚礼是许多年轻人所头疼的,那么今年我们就可以玩点新潮的,VR婚礼或许是个不错的选择。 VR全景婚礼就是通过全景摄像机对婚礼进行记录,不但可以帮助新人捕捉婚礼的精彩…

对S参数的理解II

本篇文章特别感谢粉丝朋友“千年的呢喃”,他给我推荐了一本书,写的非常好 Micro Wave and RF Design,有需要的朋友自行下载。 之前关于S参数也写过几篇文章了,但一直以来都有一个历史遗漏问题没有解决,那就是&#xf…

ElasticSearch-学习笔记05【SpringDataElasticSearch】

Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】Ela…