Flink状态与容错深度剖析-1765263571749.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Flink状态与容错深度剖析1

目录CONTENTS01.状态管理02.键控状态与TTL03.状态实战编码04.容错机制05.实时推荐系统实战06.实践与总结2

01状态管理3

状态赋予流处理“记忆”能力状态是计算节点在事件间保留的临时数据,使流处理具备“记忆”,从而支持聚合、连接、模式检测等复杂语义。有状态算子可跨时间窗、跨事件累积信息,实现业务连续性。用户行为分析支撑个性化推荐,实现精准营销。实时统计实现精确去重,保障数据准确性。4

三大组件协同支撑容错机制状态(State)运行时内存数据,是计算过程中的临时存储。+检查点(Checkpoint)周期性的全局一致性快照,用于故障恢复。+状态后端(StateBackend)状态的存储与访问实现,决定数据存于何处。三者协同,实现Exactly-Once语义5

检查点原理与配置精要核心原理:Chandy-Lamport算法通过注入Barrier(屏障),在不停止整个流处理的情况下,实现全局一致性快照,保证状态数据在某一时刻的完整视图。关键配置项间隔(Interval):触发快照的频率,影响恢复点密度。模式(Mode):EXACTLY_ONCE或AT_LEAST_ONCE语义。超时(Timeout):快照完成的最后期限。存储(Storage):可靠的分布式文件系统,如HDFS/S3。6

状态后端选型对比HashMapStateBackend存储:内存(JVMHeap)特点:极速读写,但受堆大小限制,适合小状态。EmbeddedRocksDB存储:本地磁盘+内存特点:支持超大状态,增量检查点效率高,是生产环境首选。FsStateBackend存储:内存+外部文件特点:已逐渐被前两者取代,不建议在新项目中使用。7

02键控状态与TTL8

五种键控状态ValueState存储单个值,如计数器。ListState存储列表,如事件序列。MapState存储键值对,最灵活。ReducingState存储归约结果。AggregatingState存储聚合结果。键控状态与分区机制键控状态按key哈希将相同键的数据路由到同一并发实例,实现天然隔离和本地性。状态隔离:相同键的数据由同一算子实例处理。水平扩展:键空间无限,可通过增加并发扩展处理能力。生命周期绑定:状态在RichFunction.open()初始化,在close()释放。状态描述符与TTL机制StateDescriptor定义状态的元数据(名称、类型等),是访问状态的“钥匙”。StateTTL自动清理过期状态,避免内存泄漏。可配置存活时间、更新策略等。9

03状态实战编码10

实战:ValueState实现两数均值需求:每两个输入数,计算并输出一次平均值。代码实现核心逻辑状态保存(计数,总和)。每来一个数,更新状态。计数为偶数时,计算均值并输出。计算后清除状态,避免内存泄漏。状态即微型数据库11

实战:ListState实现移动平均需求:累积最近的3个数值,计算其滑动平均值。核心逻辑使用ListState保存最近的3个数值。新数值到来时,添加到列表。计算列表中所有元素的平均值并输出。classCountAverageWithListextendsRichFlatMapFunction[(Long,Double),(Long,Double)]{privatevarelementsByKey:ListState[(Long,Double)]=_overridedefopen(parameters:Configuration):Unit={valdescriptor=newListStateDescriptor[(Long,Double)](listState,createTypeInformation[(Long,Double)])elementsByKey=getRuntimeContext.getListState(descriptor)}overridedefflatMap(element:(Long,Double),out:Collector[(Long,Double)]):Unit={//添加新元素elementsByKey.add(element)importscala.collection.JavaConverters._valallElements=elementsByKey.get().asScala.toList//当累

文档评论(0)

方世玉 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6101050130000123

1亿VIP精品文档

相关文档