Flink详解系列之九--反压机制和处理

反压是指上游数据生成速度超过下游处理速度的现象,常见于流数据处理。它从下游节点向上游传播,直至源头,可能导致数据延迟和系统不稳定。Flink中的反压可通过TaskManager间的网络传输和TaskManager内部的反压过程理解。反压影响包括延长Checkpoint时间和可能导致内存耗尽。定位反压来源通常涉及监控和性能分析,解决方法包括优化代码、调整资源和解决数据倾斜问题。

反压是什么

反压是在实时数据处理中,数据管道某个节点上游产生数据的速度大于该节点处理数据速度的一种现象。反压会从该节点向上游传递,一直到数据源,并降低数据源的摄入速度。这在流数据处理中非常常见,很多场景可以导致反压的出现,比如, GC导致短时间数据积压,数据的波动带来的一段时间内需处理的数据量大增,甚至是checkpoint本身都可能造成反压。

反压的原理

上面是一个Flink任务的流程图,我们将反压过程拆分成两个部分:跨TaskManager的反压过程和TaskManager内的反压过程,最后再介绍一下基于Credit的反压过程。

跨TaskManager的反压过程

跨TaskManager的反压是怎么向上游传播的呢?在这之前我们先了解一下Flink中TaskManager 之间数据的网络传输过程。

从上图可知,TaskManager A给TaskManager B发送数据,TaskManager A做为Producer,TaskManager B做为Consumer。Producer处理完的数据首先输出到Producer对应的NetWork Buffer中,NetWorkBuffer就是图中的ResultSubPartition和InputChannel。

ResultSubPartition和InputChannel都向LocalBufferPool申请Buffer空间,然后LocalBufferPool再向NetWork BufferPool申请内存空间。这里,NetWork BufferPoo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值