Flink 背压
常青
24 天前
24 天前
知识图谱
Flink 背压
大家应该都知道经典的多线程模型:生产者消费者模型。在该模型中,有生产者,消费者,和一个固定大小长度的队列。生产者生产数据,写入到队列,消费者从队列中获取数据,进行处理。在这个模型中,遇到的一个问题是,当队列满的时候,生产者不能将数据在写入队列,他该如何操作,将数据丢弃,不能忍受;将数据持久化到磁盘上,那么队列就不再是有限队列,而成了消息队列。如果队列是有限长度,那么当消费者的消费能力 < 生产者的生产能力时,数据就会开始堆积,直至堆积满,此时,生产者将被阻塞,无法再生产数据。如果生产者同时是上一个队列的消费者,层层向上传递,直到源头,这就是反压,在流式计算场景,最终会反压到 kafka 消息队列产生 lagsize。
背压排查
Flink 作业常见的背压原因主要有两种:资源不足和单点瓶颈,其中单点瓶颈的原因又可以分为数据倾斜、环境异常等。
资源问题
当上游有 lag 的时候,由于需要处理大量的数据,所以开启了 追 lag 环节,因此处于背压的状态很正常,但是需要检查资源是否用满以及lag是否在下降,如果 lag 在正常的下降,说明消费正常,消费的速度>生产的速度,暂时不用处理即可。
被引用于
数据开发常用
在进行数据开发的过程中,我们会经常使用到一些函数,针对 Spark 作业进行参数配置以及对作业的运维。
评论
作者
猫颜
一花一世界,一叶一追寻
分享至
知识图谱