退订





---- 回复的原邮件 ----
| 发件人 | wjw_bigdata<wjw_bigd...@163.com> |
| 发送日期 | 2024年8月1日 14:21 |
| 收件人 | user-zh@flink.apache.org<user-zh@flink.apache.org> |
| 抄送人 | user-zh@flink.apache.org<user-zh@flink.apache.org> |
| 主题 | 回复:请问BackPressure是否影响Watermarks机制 |
退订








---- 回复的原邮件 ----
| 发件人 | jwfktv<jwf...@163.com> |
| 发送日期 | 2024年8月1日 14:20 |
| 收件人 | user-zh@flink.apache.org<user-zh@flink.apache.org> |
| 主题 | 请问BackPressure是否影响Watermarks机制 |
Hi:
各位好,最近使用PyFlink 1.18.0的Window 
deduplication能力来获取每分钟最后一条记录,输出到数据库中。数据来源是kafka,事件时间使用的是kafka记录的metadata中的timestamp字段。
日常计算没有问题,但是一旦我想要回拉当天数据,就会产生一些奇怪的问题。比如我有一个topic,只有一个partition,每天大概8千万-1亿数据,我的任务设置成1个parallelism,使用flink
 sql实现任务。
我设置了10秒的table.exec.source.idle-timeout,因为有些任务使用的kafka 
topic-pattern监听,单个任务可能存在无数据的topic,需要输出数据(这个任务是单topic,但用的相同代码,也设置了)。
图片没成功,重新编辑了一下
任务运行如下图:


可以看见当前水位已经拉到23点了,任务的流入也有8千万的数据量,整个任务也是处于BackPressure的状态,节点3是一个python函数处理kafka数据,也是整个性能瓶颈的位置。
问题出在四节点,只输出了2千万记录,大量数据从现象看是被丢弃了,个人感觉和watermark被推进到23点有很强关系,所有节点的watermark都到23点了。


想了解:
backpressure堆积了大量数据,正常情况下会导致watermark被推进吗?
kafka的watermark看文档可以解决多topic数据量不一致,推进watermark的问题:Generating Watermarks | 
Apache 
Flink,这个在sql中需要额外配置吗?翻阅源码发现早期版本的connector和当前实现还不太一样,早期是AbstractFetcher里面WatermarkOutputMultiplexer处理,现在版本是在flink引擎里面处理了这个机制吗?咨询这个问题是因为多topic回拉复现概率很高,部分topic数据少,被推进到当前时间,大数据量的topic数据都丢失了。
idle timeout的实现应该不会推进watermark吧,想确认一下。
如果正常情况不会,这个是否是与python函数有关系,是潜在的bug吗?
有什么建议规避此类问题(避免backpressure不太可行,无法控制任务不发生),我的目的是仅一次输出每分钟的最后一条记录,不希望产生回撤消息,也不希望一分钟输出多条记录。


| |
jwfktv
|
|
jwf...@163.com
|
签名由网易邮箱大师定制

回复