关于flink反压
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于flink反压相关的知识,希望对你有一定的参考价值。
参考技术A 什么是反压:算子的sub_task需要处理的数据量 > 能够处理的数据量
反压的危害:1.任务处理性能出现瓶颈 2.Checkpoint时间长或者失败(barrier要花很长时间对齐)
3.整个任务会卡住
如何判断出现反压:
反压主要出现在算子反压:在 Flink web ui 中,定位到一个具体的算子之后,查看 BackPressure 模块,通过颜色和数值来判断任务的繁忙和反压情况。 若颜色为红色,表示当前算子繁忙,有反压的情况 ; 若颜色为绿色,标识当前算子不繁忙,没有反压。
哪些原因会造成反压:
1.数据倾斜:当前算子的每个 sub-task 只能处理 1w qps 的数据,而由于数据倾斜,这个算子的其中一些 sub-task 平均算下来 1s 需要处理 2w 条数据,但是实际只能处理 1w 条,从而反压。比如有时候 keyby 的 key 设置的不合理。
2.算子性能问题:下游整个整个算子 sub-task 的处理性能差,输入是 1w qps,当前算子的 sub-task 算下来平均只能处理 1k qps,因此就有反压的情况。比如算子需要访问外部接口,访问外部接口耗时长。
解决反压的办法:
1.限制数据源的消费数据速度。比如在事件时间窗口的应用中,可以自己设置在数据源处加一些限流措施,让每个数据源都能够够匀速消费数据,避免出现有的 Source 快,有的 Source 慢,导致窗口 input pool 打满,watermark 对不齐导致任务卡住。
2. 关闭 Checkpoint。关闭 Checkpoint 可以将 barrier 对齐这一步省略掉,促使任务能够快速回溯数据。我们可以在数据回溯完成之后,再将 Checkpoint 打开。
以上是关于关于flink反压的主要内容,如果未能解决你的问题,请参考以下文章