20-06-flink

---01---

flink的检查点不是数据是状态。

  

上图是基数求和,偶数求和。5 6 9是当前的一个checkpoint,是按照keyBy之后分区的,注意keyBy之后叫做分区。

可以自定义分区器,对某一个字段分区:

如何从检查点恢复状态:

---02---

笔记:

1. flink中的checkpoint,保存的是所有任务 状态 的快照
这个状态要求是所有任务都处理完同一个数据之后的状态

2. flink checkpoint算法
基于 Chandy-Lamport 算法的分布式快照

3. flink checkpoint中重要的概念
barrier用于分隔不同的checkpoint,对于每个任务而言,收到barrier就意味着要开始做state的保存
算法中需要对不同上游分区发来的barrier,进行对齐

4. checkpoint存储位置,由state backend决定
一般是放在远程持久化存储空间(fs或者rocksdb)
jobmanager触发一个checkpoint操作,会把checkpoint中所有任务状态的拓扑结构保存下来

5. barrier和watermark类似,都可以看作一个插入数据流中的特殊数据结构
barrier在数据处理上跟watermark是两套机制,完全没有关系

6. 将checkpoint和事务sink结合起来,再加上可重置偏移量的source,就可以实现端到端的Exactly-once状态一致性
Flink-Kafka连接,实现精确一次状态一致性语义,
核心就是source可重置偏移量,sink实现TwoPhaseCommitSinkFunction(底层就是将事务提交绑定在checkpoint)

下游不只一个 上游也不只一个的。

---03---

解析这个图。

---04---

保存点:

---05---

复习:略

---06---

checkpoint在代码里面默认是并开启的。

启用checkPoint:

第一步是启用checkpoint检查点,指定检查点的间隔时间。

第二个是状态一致性的语意。

第三个是做一次checkpoint的超时时间。

第四个是设置一个和下一个重叠,允许重复的,同时处理两个的。

第五个是两次之间留下多长时间去处理数据。

第六个是要不要用最近的恢复,还是savepooint。

第七个是允许checkpoint失败几次。

重启策略:

1.尝试重启次数,间隔多长时间去重启。

2.5分钟重启5次,间隔10s。

---07---

状态一致性:

幂等:

预写日志:

---08---

代码:

---09---

复习

---10---

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值