四、流计算容错问题

一、为什么需要容错

二、state

三、State Backend类型

四、重启策略

当task发生故障时,flink需要重启出错的task以及其它受影响的task,以使用作业恢复到正常执行状态。重启策略可以2种配置

1)配置文件 flink-conf.yaml

restart-strategy.fixed-delay.attempts:3

restart-strategy.fixed-delay.delay:5

2)基于代码配置

  env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
                5, //尝试重启次数
                org.apache.flink.api.common.time.Time.of(5,TimeUnit.SECONDS)));//超时时间

补充:

//1、异常退出,不用重启,默认为该策略
 env.setRestartStrategy(RestartStrategies.noRestart());


//2、固定重启次数策略
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
    5, //尝试重启次数
     org.apache.flink.api.common.time.Time.of(5,TimeUnit.SECONDS)));//超时时间


//3、频率重启次数(5分钟内,重记了5次,还有异常就退出,否则重新计算)
 env.setRestartStrategy(RestartStrategies.failureRateRestart(
     5, //尝试重启次数
      org.apache.flink.api.common.time.Time.of(5,TimeUnit.MINUTES),
      org.apache.flink.api.common.time.Time.of(5,TimeUnit.SECONDS)));//重启之间的时间间隔

//4、基于Checkpoint行为
env.enableCheckpointing(5000);

五、恢复机制

 

1、默认会状态丢失重新计算

2、打开checkpoint失败恢复状态继续跑

 env.enableCheckpointing(5000);//状态存在内存中
#如果要保留cp的内容,需要指定存储方式,如下保存到文件中
env.setStateBackend(new FsStateBackend("file:flink/cpdir",false));//将cp结果保存到文件

3、打开保留checkpoint文件选项,基于checkpoint升级作业

1)修改flink-conf.yaml

state.backend: filesystem
#配置checkpoint&savepoint
state.checkpoints.dir: file:///tmp/chkdir
state.savepoints.dir: file:///tmp/spdir

3配置失败重启策略
restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 2 s
#配置checkpoint保存个数
state.checkpoints.num-retained: 2
#配置local recovery for this state backend(任务恢复的方式)
state.backend.local-recovery: true

 2)提交任务->(程序异常关闭或手动关闭任务)关闭任务-->恢复任务

bin/flink run -m localhost:4000 -c java类名 jar包路径

#停止flink任务
bin/flink cancel  任务ID

bin/flink run -m localhost:4000 -s checkpoint目录(file:///tmp/chkdir/任务ID/chk-364)  -c java类名 jar包路径

4、触发savepoint,基于savepoint升级作业


bin/flink savepoint flink作业ID #创建savepoint
#停止以前的作业,然后从savepoint启动

 bin/flink run -m localhost:4000 -s  savepoint的目录(file:///flink/savepoint/xxxx) -c 类名 jar包目录

 六、运算拓扑变化升级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值