首页 > 其他分享 >Flink Chain任务链分隔

Flink Chain任务链分隔

时间:2023-05-06 20:01:14浏览次数:62  
标签:slot startNewChain 分隔 Chain Flink 反压 任务 disableChaining 算子


Chain分隔


文章目录

  • Chain分隔
  • 如何切断任务链?
  • startNewChain 与 disableChaining区别
  • 全局切断任务链(chain)
  • web端效果
  • 查看隔离后依赖链忙碌程度
  • 什么是Backpressured(被压/反压)?
  • 代码样例
  • 参考文献


如何切断任务链?

由于共享slot的存在,当一个任务链的计算量特别庞大时,且只在一个slot上执行,对于slot的压力过大,需要拆开。

1)disableChaining:如果对一个算子使用了disableChaining(取消任务链),那么该算子就会与前后算子隔离开,不参与任务链的组合,独用一个slot。

2)startNewChain:如果一个任务链只是过于庞大,但是算子之间的操作简单,仅想拆开为2个任务链,并且参与任务链组合,就需要对算子使用startNewChain(开启一个新的任务链),意思就是之前该怎么合并就怎么合并,map之后重新合成任务链。

3)env.disableOperatorchaining ,全局切断任务链。所有的算子都是独立的任务,再按照并行度拆分开。

4)slotSharingGroup:取消任务链后,还需要打破slot共享,使用单独的slot。这时需要使用slotSharingGroup,之前的算子不管,从当前算子开始共享slot,并可以为共享组命名。同一个共享组内的算子可以共享一个slot,不同共享组的slot必须分配到不同的slot。且可以设置多个共享组,跨算子设置。

startNewChain 与 disableChaining区别

stream.startNewChain()

从当前算子开启新的链,与前面的链断开,后面的链不断开

stream.disableChaining()

当前算子独立一个链,前后都分开,从stream算子开始到结束禁用Chain,单独划出来,将不会合并链。

全局切断任务链(chain)

env.disableOperatorchaining

全局切断任务链。所有的算子都是独立的任务,再按照并行度拆分开

web端效果

Flink Chain任务链分隔_.net

查看隔离后依赖链忙碌程度

Flink Chain任务链分隔_.net_02

Backpressured(背压/反压): 从字面上可以理解,后端的压力,这里代表当前算子的下一个环节压力,也可以理解为,下一个环节有这个Backpressured比例数据未处理

busy(忙碌): 代表当前环节忙碌程度

**Idle(空闲):**代表当前环节空闲程度

什么是Backpressured(被压/反压)?

概括来说,反压就是Job Graph中的某些operator处理数据的速率低于接收数据的速率,造成数据积压,积压的数据填充到这些operator子任务的输入缓冲区。一旦输入缓冲区满了,反压就会传播到上游子任务的输出缓冲区。上游子任务也会被迫降低自身数据处理速度,以匹配下游opeartor的处理速度。由此类推,反压一步一步向上游传递,直至到达数据源operator端。

具体关于Backpressured,参考《Flink BackPressure详细介绍》

代码样例

val writeHbaseResult = userChangeWriteHbase.process(new HbaseProcessFunction).name("write hbase").disableChaining()

val writeHbaseResult = userChangeWriteHbase.process(new HbaseProcessFunction).name("write hbase").startNewChain()

参考文献

https://www.kancloud.cn/zhangpn/flink/1743325

https://cdn.modb.pro/db/128767

https://www.163.com/dy/article/H2VSPV1T05529EM4.html

https://v.youku.com/v_show/id_XNDU2MjU5NjI4OA==.html

https://cloud.tencent.com/developer/article/1797980


标签:slot,startNewChain,分隔,Chain,Flink,反压,任务,disableChaining,算子
From: https://blog.51cto.com/u_13721902/6251111

相关文章

  • Flink Cdc MySQL 整库同步到 StarRocks
    这段时间开始调研使用StarRocks做准实时数据仓库:flinkcdc实时同步数据到StarRocks,然后在StarRocks中做分层计算,直接把StarRocks中的ADS层提供给BI查询。架构如下:由于用到的表比较多,不能用FlinkSQL给每个表都做个CDC的任务(任务太多不好维护、对数据库又可能有......
  • 数据湖Iceberg-FlinkSQL-kafka类型表数据无法成功写入(6)
    数据湖Iceberg-简介(1)数据湖Iceberg-存储结构(2)数据湖Iceberg-Hive集成Iceberg(3)数据湖Iceberg-SparkSQL集成(4)数据湖Iceberg-FlinkSQL集成(5)数据湖Iceberg-FlinkSQL-kafka类型表数据无法成功写入(6)数据湖Iceberg-FlinkDataFrame集成(7)数据湖Iceberg-FlinkSQL-kafka类型表......
  • sql按分隔符裁取
    declare@strnvarchar(50);set@str='462,464,2';select@stras'字符串'selectlen(@str)as'字符长度'selectcharindex(',',@str,1)as'第一个逗号的索引值'selectLEFT(@str,charindex(',',@str,1)-1)as'第一个......
  • 自动驾驶图像全景分隔,基于HRnetSegmentation从训练工程到tensorRT工程部署Demo闭环一
    自动驾驶图像全景分隔,基于HRnetSegmentation从训练工程到tensorRT工程部署Demo闭环一套,包含训练工程及部署工程,和环境的配置说明,已在实际项目中使用。大厂自动驾驶工程师沉淀实实在在的工作经验总结资料是一线自动驾驶工程师辛苦工作的结果。ID:3150671806789047......
  • flink平台项目-cnblog
    flink平台项目目录架构以前架构现在架构的说明CDH&集群规模人员配备开发周期为什么用flinkcdc项目好处千表入湖工具flink操作hiveflink集成hive的步骤flinksql数据源为kafkaflink读写sql有两种模式TemporalJoin(时态表join)lookupjoin常见面试题title:fl......
  • 时间可逆的马氏链(Time Reversible Markov Chain)
    逆向过程考虑一个具有转移概率\(P_{ij}\)和平稳概率\(\pi_i\)的已经达到平稳状态的遍历的(不可约+非周期+正常返)马尔科夫链。假设这个马氏链在平稳态的状态序列是\(\{X_m,X_{m+1},\cdots\}\),现在我们沿时间的反方向来看这条链,具体地,我们希望考察\(P(X_m=j|X_{m+1}=i,X_{......
  • “makefile:425: *** 遗漏分隔符 。 停止。”问题解决
    在终端下输入make时出现“makefile:2:***遗漏分隔符。停止。”问题,原因是在编写makefile文件时:3:3.c        gcc-o33.cgcc前的是tab分隔符,不能用空格,否则会出现“makefile:2:***遗漏分隔符。停止。”提示。。。make中规定每一Shell命令之前的开头必须使用<t......
  • CF1814E Chain Chips & CF750E New Year and Old Subsequence - 动态 dp -
    一句话概括动态dp:用来解决带修改/多次区间询问的dp问题。将转移写成矩阵的形式,然后利用线段树求解区间问题/单点修改1814E注意一条边要么选2要么选0次,而且第一条边一定是选了2次。如果有一条边没选,那么这条边两侧的边一定都选了。设\(f_i\)代表考虑到第\(i\)条边,......
  • Markov Chain Monte Carlo(MCMC) 方法
    MonteCarlo方法假设我们要求一个原函数并不明确的函数\(f(x)\)的在某个区间\([a,b]\)上的积分\(\theta=\int_{a}^bf(x)dx\)因为\(f(x)\)的原函数不知道,所以无法用牛顿-莱布尼茨公式计算。这里采用一种称为montecarlo的方法来模拟近似求解,它的思想如下,首先将待求的式子化......
  • Langchain框架 prompt injection注入
    Langchain框架promptinjection注入PromptInjection是一种攻击技术,黑客或恶意攻击者操纵AI模型的输入值,以诱导模型返回非预期的结果Langchain框架LangChain是一个基于大语言模型进行应用开发的框架。所谓大语言模型(LargeLanguageModels,LLMs),是指基于海量语料训练、......