- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
6.状态和检查点;本章将重点围绕状态、检查点(Checkpoint)和保存点(Savepoint)三个概念来介绍如何在Flink上进行有状态的计算。在Flink架构体系中,有状态计算可以说是Flink非常重要的特性之一。有状态计算是指在程序计算过程中,在Flink程序内部存储计算产生的中间结果,并提供给后续Function或算子计算结果使用。检查点是Flink保证exactly-once的重要特性。;通过本节学习您将可以:
掌握Flink中几种常用的状态以及具体使用方法。
掌握Checkpoint机制的原理和配置方法。
了解Savepoint机制的原理和使用方法。
;实现有状态的计算
Checkpoint原理及配置方法
Savepoint原理及使用方法;;;ManagedState和RawState
托管状态(ManagedState)是由Flink管理的,Flink帮忙存储、恢复和优化
原生状态(RawState)是开发者自己管理的,需要自己序列化
ManagedState又细分为KeyedState和OperatorState
;KeyedState是KeyedStream上的状态,每个Key共享一个状态
OperatorState每个算子子任务共享一个状态;KeyedState和OperatorState都是基于本地的,每个算子子任务维护着自身的状态,不能访问其他算子子任务的状态
具体的实现层面,KeyedState需要重写RichFunction函数类,OperatorState需要实现CheckpointedFunction等接口;修改Flink应用的并行度:每个算子的并行算子子任务数发生了变化,整个应用需要关停和启动一些算子子任务
某份在原来某个算子子任务的状态需要平滑更新到新的算子子任务上
Flink的Checkpoint可以辅助状态数据在算子子任务之间迁移
算子子任务生成快照(Snapshot)保存到分布式存储上
子任务重启后,相应的状态在分布式存储上重建(Restore)
KeyedState与OperatorState的横向扩展方式稍有不同;Flink提供了封装好的数据结构供我们使用,包括ValueState、ListState等
主要有:
ValueState:单值
MapState:Key-Value对
ListState:列表
ReducingState和AggregatingState:合并
KeyedState由于跟Key绑定,Key自动分布到不同算子子任务,KeyedState也可以根据Key分发到不同算子子任务上;实现RichFunction函数类,比如RichFlatMapFunction
创建StateDescriptor,StateDescriptor描述状态的名字和状态的数据结构,每种类型的状态有对应的StateDescriptor
通过StateDescriptor,从RuntimeContext中获取状态
调用状态提供的方法,获取状态,更新数据
;案例:统计电商用户行为UserBehavior场景下,某个用户(userId)下某种用户行为(behavior)的数量;UserBehavior案例
先基于userId进行keyBy
再使用有状态的MapStateFunction进行处理;状态:
算子子任务的本地数据在Checkpoint过程时写入存储,这个过程被称为备份(Snapshot)
初始化或重启一个Flink作业时,以一定逻辑从存储中读出并变为算子子任务的本地数据,这个过程被称为重建(Restore)
KeyedState开箱即用:数据划分基于Key,Snapshot和Restore过程可以基于Key在多个算子子任务之间做数据迁移
OperatorState每个算子子任务管理自己的状态,流入到这个算子子任务上的所有数据可以访问和修改OperatorState
故障重启后,数据流中某个元素不一定流入重启前的算子子任务上
需要根据具体业务场景设计Snapshot和Restore的逻辑
使用CheckpointedFunction接口类;Flink定期执行Checkpoint,会将状态数据Snapshot到存储上
每次执行Snapshot,会调用snapshotState()方法,因此我们要实现一些Snapshot逻辑,比如将哪些状态持久化
initializeState()在算子子任务初始化状态时调用,有两种被调用的可能:
整个Flink作业第一次执行,状态数据需要初始化一个默认值
Flink作业遇到故障重启,基于之前已经持久化的状态恢复
ListState/UnionListState
BroadcastState;状
您可能关注的文档
- 《半导体集成电路》课件——第一章:集成电路基础概述.pptx
- 《兵工企业常用焊接方法与设备使》课件——第八章 切割与气刨技术.pptx
- 《兵工企业常用焊接方法与设备使》课件——第九章 焊接设备与辅助系统.pptx
- 《兵工企业常用焊接方法与设备使》课件——第六章 电阻焊.pptx
- 《半导体集成电路》课件——第四章:数字集成电路设计.pptx
- 《半导体集成电路》课件——第五章:模拟集成电路与信号处理.pptx
- 《兵工企业常用焊接方法与设备使》课件——第七章 特种焊接方法.pptx
- 《兵工企业常用焊接方法与设备使》课件——第三章 熔化焊方法与工艺.pptx
- 《兵工企业常用焊接方法与设备使》课件——第十章 焊接缺陷与质量控制.pptx
- 《兵工企业常用焊接方法与设备使》课件——第四章 钨极氩弧焊(TIG焊).pptx
文档评论(0)