通过savepoint方式先停止作业可以,不停止,你要考虑是否你的作业是否能做到重复处理部分数据不影响准确性。
先做savepoint但不停止作业,新作业启动后,新旧作业是消费的数据是重复的,不会因为相同group就不重复。
因为kafka的消费是2个模式,一个是组模式,还有一个是不受到组约束的。Flink采用的是后者。
我说的那个方法是在kafka后边加一个filter,filter的参数就是start和end,根据start和end过滤数据。
而且这个start和end需要可动态配置,就是不重启作业能配置才行。
这样就可以先启动新作业,并设置其从未来某个时间点(ts)开始消费,并设置
拿kafka source作业为例,新老作业使用相同的consumer
group,老作业先做savepoint,完了在老作业还在运行的同时启动新作业从刚才的savepoint恢复会有问题么?
如何设置一个流量开关让新作业“准备”好再打开流量呢?有没有具体实操的例子?还是说需要自己修改flink源码,具体要看哪一个类方法?
在 2022-11-30 20:08:44,"Jiangang Liu" 写道:
>Flink目前无法做到无缝升级,需要走stop-with-savepoint、start
>job的流程,但是在这之间可以做一些优化来缩短恢复时间。比
> -- 原始邮件 --
> 发件人:
> "user-zh"
>
> 发送时间: 2022年11月30日(星期三) 晚上8:08
> 收件人: "user-zh"
> 主题: Re: flink sql作业无缝升级问题
>
>
>
&g
Flink目前无法做到无缝升级,需要走stop-with-savepoint、start
job的流程,但是在这之间可以做一些优化来缩短恢复时间。比如,把新作业先启动起来,申请好资源,同时停掉老作业,将做好的savepoint用来触发新作业的执行。
casel.chen 于2022年11月29日周二 08:38写道:
> 线上有一个流量较大的flink sql作业需要升级添加业务字段,当前主要是kafka (canal) 多表关联写入 mongodb
> 数据同步场景,除了source offset外无其他状态,如何让用户对升级无感呢?
> 常规的停止作业再启动作业至少要几十秒,会造成
线上有一个流量较大的flink sql作业需要升级添加业务字段,当前主要是kafka (canal) 多表关联写入 mongodb
数据同步场景,除了source offset外无其他状态,如何让用户对升级无感呢?
常规的停止作业再启动作业至少要几十秒,会造成消息积压告警,有没有可能先启新作业待运行平稳后再停止老作业?kafka
group使用同一个,作业启动从group-offsets开始可以吗?另外,如果是有大状态作业又要如何无缝升级?