Flink学习笔记(七)并行度详解

这篇具有很好参考价值的文章主要介绍了Flink学习笔记(七)并行度详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述:

一个Flink程序由多个任务(Source、Transformation和Sink)组成。一个任务由多个并行实例(线程)来执行,一个任务的并行实例(线程)数目被称为该任务的并行度。

二、TaskManager和Slot

Flink是一个分布式流处理框架,它基于TaskManager和Slot来实现任务的执行。TaskManager是Flink中负责运行任务的工作进程,而Slot是TaskManager中可用的资源。

Flink学习笔记(七)并行度详解

 

TaskManager在Flink集群中分布式运行,每个TaskManager可以运行多个Slot。Slot是TaskManager中的资源分配单位,每个Slot可以运行一个Flink任务。TaskManager会根据需要动态分配Slot,以满足任务执行的需求。

Flink学习笔记(七)并行度详解

 

在Flink中,任务是按照任务图来执行的。任务图是一个有向无环图,其中每个节点代表一个任务,边表示任务之间的依赖关系。当一个任务需要运行时,Flink会检查当前所有TaskManager中的空闲Slot,并将任务分配到其中一个空闲的Slot中运行。如果没有足够的空闲Slot,Flink会向集群中添加新的TaskManager,以提供更多的资源。

在任务执行期间,TaskManager会将任务状态存储在内存中,并定期将状态写入磁盘以防止数据丢失。如果一个TaskManager出现故障,Flink会自动将该TaskManager上的任务重新分配到其他TaskManager上继续执行,以确保任务的高可用性。

总之,TaskManager和Slot是Flink中关键的资源管理器,它们可以动态分配和管理任务执行所需的资源,以提高Flink任务的性能和可靠性。

三、并行度的设置:

一个任务的并行度设置可以从4个层面指定。

(1)Operator Level(算子层面)
(2)Execution Environment Level(执行环境层面)
(3)Client Level(客户端层面)
(4)System Level(系统层面)

这些并行度的优先级为Operator Level>Execution Environment Level>ClientLevel>System Level

四、如何设置合适的并行度

  1. 数据源的并行度:数据源的并行度应该等于或大于最终算子的并行度,以充分利用系统资源。

  2. 算子逻辑的复杂度:算子逻辑越复杂,相应的并行度就需要更高才能提供足够的吞吐量。因此,在确定算子并行度时,应该考虑算子逻辑的复杂度。

  3. 系统资源的可用性:在确定算子并行度时,应该考虑系统可用的资源。例如,如果系统的CPU和内存资源有限,那么高并行度可能会导致任务竞争和低性能。

  4. 数据倾斜:数据倾斜是指数据分布不均衡,这可能会导致某些算子的并行度成为瓶颈。在这种情况下,可以通过调整算子的并行度来解决数据倾斜问题。

  5. 实验调整:最终的并行度设置可能需要通过实验来进行调整。可以通过监视和调整算子的并行度来观察和优化作业性能。

五、并行度设置不合理会导致哪些问题:

1.反压:Flink中某些算子的并行度设置过小可能会导致反压的情况。反压是指某个算子的输出速度超过了下游算子的处理速度,导致下游算子的任务堆积和延迟。这可能会导致整个作业的性能下降和任务失败。

2.过高的并行度设置可能会导致资源浪费。如果某个算子的并行度设置过高,该算子可能会占用过多的系统资源,从而影响整个作业的性能。此外,过高的并行度设置还可能会导致任务之间的竞争,从而影响系统的稳定性。

3.过高或过低的并行度设置还可能会导致数据倾斜。如果某个算子的并行度设置过高或过低,可能会导致数据倾斜,从而影响整个作业的性能。过高的并行度设置可能会导致某些子任务负载过重,从而导致数据倾斜。过低的并行度设置可能会导致某些子任务负载过轻,从而导致数据倾斜。文章来源地址https://www.toymoban.com/news/detail-490726.html

到了这里,关于Flink学习笔记(七)并行度详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Flink精讲】Flink性能调优:CPU核数与并行度

    提交任务命令: bin/flink run -t yarn-per-job -d -p 5 指定并行度 -Dyarn.application.queue=test 指定 yarn 队列 -Djobmanager.memory.process.size=2048mb JM2~4G 足够 -Dtaskmanager.memory.process.size=4096mb 单个 TM2~8G 足够 -Dtaskmanager.numberOfTaskSlots=2 与容器核数 1core: 1slot 或 2core: 1slot -c com.atguigu.flin

    2024年04月11日
    浏览(32)
  • flink算子的并行度设置方法

    #flink算子的并行度设置方法 并行度(Parallelism)是flink中一个非常重要的概念,它主要是指一个算子可以被分的子任务数,通常越高就意味着算子计算速度越快。 如上图所示,map()算子的并行度为2,window()算子的并行度也为2,也可以说整个数据流的并行度就是2。并行度的设置

    2024年03月17日
    浏览(40)
  • 十八、Flink自定义多并行Source

    1、概述 1)作用 自定义多并行的Source,即Source的并行度可以是1到多个。 2)实现 1.继承RichParallelSourceFunction,重写run()方法。 2、代码实现

    2024年02月08日
    浏览(26)
  • Flink TaskSlot,算子链和并行度

    Flink TaskSlot,算子链和并行度 (108条消息) Flink TaskSlot与并行度_flink slot和并行度的关系_保护我方胖虎的博客-CSDN博客

    2024年02月15日
    浏览(35)
  • Shader学习笔记:BRDF简单概述

    这篇文章写于一年多以前的一次课程作业,这次作为一个“存货”给放出来,仅仅只是针对代码和一些要点进行简单叙述,如果想听完整的版本,请搜索毛星云大神的博客或者书籍。关于基本的物理渲染公式,网络上的博客和典籍已经多如牛毛了,这里只是自己在之前整理的

    2024年02月04日
    浏览(30)
  • Spring学习笔记之spring概述

    Spring是一个轻量级的控制反转和面向切面的容器框架 Spring最初的出现是为了解决EJB臃肿的设计,以及难以测试等问题。 Spring为了简化开发而生,让程序员只需关注核心业务的实现,尽可能的不再关注非业务逻辑代码(事务控制,安全日志等) 八大模块中有两大核心模块,

    2024年02月14日
    浏览(31)
  • Flink-任务槽和并行度的关系

    任务槽 和并行度都跟程序的并行执行有关,但两者是完全不同的概念 。简单来说 任务槽 是静态的概念 ,是指TaskManager具有的并发执行能力,可以通过参数taskmanager.numberOfTaskSlots进行配置;而并行度是动态概念,也就是TaskManager运行程序时实际使用的并发能力,可以通过参数

    2024年02月11日
    浏览(27)
  • Flink-intervalJoin源码和并行度问题

    底层用的是connect 把两个流的数据先保存到状态中  先判断有没有迟到,迟到就放到侧输出流 再根据范围找数据 然后根据上界删除数据     多个上游,一个下游,下游取最小的 一个上游,多个下游,广播 多个上游,多个下游,先广播,再取最小的 注意:水位线会减1ms 有可

    2024年02月16日
    浏览(24)
  • RSIC-V“一芯”学习笔记(一)——概述

    考研的文章和资料之后想写的时候再写怕趴 B阶段:以RVE为主、将RT-Thread移植到AM、在给定的面积预算内优化处理器设计 A阶段:从RVE转到RV64IMAC、最终运行Linux发行版 开源EDA Linux环境:我准备直接用虚拟机了 软件:C语言、C++(少量)、gcc编译器。 (幸好之前苏嵌学过gcc、m

    2024年01月21日
    浏览(27)
  • Flink|《Flink 官方文档 - 部署 - 概览》学习笔记

    学习文档:《Flink 官方文档 - 部署 - 概览》 学习笔记如下: 上图展示了 Flink 集群的各个构建(building blocks)。通常来说: 客户端获取 Flink 应用程序代码,将其转换为 JobGraph,并提交给 JobManager JobManager 将工作分配给 TaskManager,并在那里执行实际的算子操作 在部署 Flink 时,

    2024年01月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包