文章目录
一 Flink State
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVLVEHfe-1607592581042)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209195409468.png)]](https://i-blog.csdnimg.cn/blog_migrate/ff5df9ddba9ff945595e49d20a2a0b03.png)
Flink 1.10
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFxSDidW-1607592581044)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209165104942.png)]](https://i-blog.csdnimg.cn/blog_migrate/d45c257ea027809d7a075f8aae3217f3.png)
FlinkML 机器学习
Gelly 图计算
Flink 架构
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uDexgxFL-1607592581045)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209165336468.png)]](https://i-blog.csdnimg.cn/blog_migrate/7e455eb6ba4e568e2dcb4e6944f028c2.png)
主节点 JobManager
从节点 TaskManager
Spark 使用 netty 通讯
Hadoop 使用 RPC 通讯
Flink 使用 Akka 通讯 Actor System
四种传输策略
1 forward strategy
一个 task 的输出值发送给一个 task 作为输入
如果两个 task 都在一个 JVM 的话就会米面网络开销
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWruITfG-1607592581046)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209171322049.png)]](https://i-blog.csdnimg.cn/blog_migrate/3b032c745373571dc375262c35539c0b.png)
2 key based stratedy (keyby)
数据需要按照某个属性(key) 进行分组 或者说分区
相同key 数据传输给 同一个 task
3 broadcast stratedy
广播到所有 task
4 random strategy
随机。负载均衡
Operator Chain 操作链 优化操作
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SJxZlREl-1607592581047)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209171557383.png)]](https://i-blog.csdnimg.cn/blog_migrate/db46bf1c1cbf4e672fc5342ae42c6d4b.png)
Flink 四层模型 (面试为三)
1 strean Graph
2 job Graph
3 Execution Graph
4 physical Execution
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UF5x6KJe-1607592581048)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209171907964.png)]](https://i-blog.csdnimg.cn/blog_migrate/14a04f0c8e57fdb1a5bd9d81e6ab9918.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQjflMkF-1607592581048)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209172028193.png)]](https://i-blog.csdnimg.cn/blog_migrate/a4fcf28c552e92b168fbd5a53ab3ec10.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0h5u2LWJ-1607592581049)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209172042817.png)]](https://i-blog.csdnimg.cn/blog_migrate/8b49fedfa95d1e1e91d3e9a812a27c82.png)
物理执行图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bk0FhwuH-1607592581049)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209172121021.png)]](https://i-blog.csdnimg.cn/blog_migrate/d3b306667591e049323107467e147095.png)
Flink State
** 【Flink —— 有状态的流】**
Spark Streaming 无状态
特殊算子
1.updateStateByKey
2.MapWithState
Flink Streaming 有状态
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bSodNY0b-1607592581050)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209173122624.png)]](https://i-blog.csdnimg.cn/blog_migrate/3a9a44fa1de18699cf3062b9f634a2e2.png)
一个 task 就对应一个 state

keyed state 在 托管状态中选
valueState 只会存储一条。第二条进入后覆盖第一条的值
增加个 Rich 富有的 增加open 方法 只生效一次
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-us1cH17x-1607592581051)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209182653080.png)]](https://i-blog.csdnimg.cn/blog_migrate/c26c524181a7574a8ddb3df91e78cee5.png)
求 同 key 的值 / 3 == 0 则 计算 value 的值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C16uSqEv-1607592581052)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183144895.png)]](https://i-blog.csdnimg.cn/blog_migrate/44c072442ba8dc2063be997455d25092.png)
总体 组件组成
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dRY6adss-1607592581052)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183902924.png)]](https://i-blog.csdnimg.cn/blog_migrate/ad05abad848cf84cc35e997849c2de39.png)
open 方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SuEnzgq-1607592581053)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183427391.png)]](https://i-blog.csdnimg.cn/blog_migrate/ae63feaafc5325f1693ce442f3377d73.png)
代码实现 flatMap 逻辑
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5RwSgRk-1607592581053)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183609556.png)]](https://i-blog.csdnimg.cn/blog_migrate/aafe177712cd155db9699de60db9c42d.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZx1MrUm-1607592581053)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183807714.png)]](https://i-blog.csdnimg.cn/blog_migrate/c56a8b865800ace817e420f3daccead9.png)
ListStatus 同样实现
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K43gCiMU-1607592581054)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184128575.png)]](https://i-blog.csdnimg.cn/blog_migrate/40a0ab254b6aad45cefa90643ca2f301.png)
实现 flatMap
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i62RPslX-1607592581054)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184342761.png)]](https://i-blog.csdnimg.cn/blog_migrate/e15b12dfdcefd0489c7170b00ed69966.png)
flat map 代码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NalFyQCw-1607592581055)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184445590.png)]](https://i-blog.csdnimg.cn/blog_migrate/33b821a20669c40ed02a0c45e1fe0f9b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xKu9KN0T-1607592581056)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184655793.png)]](https://i-blog.csdnimg.cn/blog_migrate/52024c1c349069bde983f4db46ea6f4e.png)
MapState
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAWr2Byf-1607592581056)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184943939.png)]](https://i-blog.csdnimg.cn/blog_migrate/66458b600410b23288e03ddf72d116b1.png)
open 方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GKBl53Cf-1607592581057)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209185113739.png)]](https://i-blog.csdnimg.cn/blog_migrate/8ab000cad644348dc532038dde2ee16e.png)
flatmap
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWQsxhoa-1607592581057)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209185240342.png)]](https://i-blog.csdnimg.cn/blog_migrate/cd8208074247b2d43f8f7414812cff3f.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiL3Hd9l-1607592581057)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209185331757.png)]](https://i-blog.csdnimg.cn/blog_migrate/5fdd25dbd2d2dbe35ab202d34a7087df.png)
ReduceingStatus
对 value 进行累加 所以只一个值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bce4VyYL-1607592581058)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209191552137.png)]](https://i-blog.csdnimg.cn/blog_migrate/fb682e7ee07fa1fa1de1467f0c4d46ea.png)
open 方法 需要实现聚合函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fiUUOSLY-1607592581058)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209191708304.png)]](https://i-blog.csdnimg.cn/blog_migrate/1ce1d97e769657790b6d27cc28e71b2c.png)
flatmap
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSnrOKRm-1607592581059)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209191754277.png)]](https://i-blog.csdnimg.cn/blog_migrate/59fa5b0edd8e07af144e06fba2450a11.png)
AggregationgState 实现展示需求 感觉像是 UDF
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zd36QhdQ-1607592581059)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192133552.png)]](https://i-blog.csdnimg.cn/blog_migrate/1c4fd58fcb5897edd5001e577bc29ea6.png)
注册 + open
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYyoPUuA-1607592581059)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192214810.png)]](https://i-blog.csdnimg.cn/blog_migrate/fbbe96b41fd50c922271feb2e98ea6a9.png)
创建辅助变量 createAccumulator
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LxaVhbmu-1607592581060)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192502795.png)]](https://i-blog.csdnimg.cn/blog_migrate/56b02a5f9267d1e35f884c57a9ebe91f.png)
拼装 and
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aHkFaI6B-1607592581060)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192619657.png)]](https://i-blog.csdnimg.cn/blog_migrate/da86643ec8146f68692f99b5ba5ccde6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bk5tsvVi-1607592581061)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192637999.png)]](https://i-blog.csdnimg.cn/blog_migrate/6264800d31b35fc3d6a094185a429820.png)
结果展示
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJvBpxpl-1607592581061)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192745456.png)]](https://i-blog.csdnimg.cn/blog_migrate/169805253def102422f84415e9da1c61.png)
每两条值输出一次
自定义 Sink 自定义输出类型
invoke 方法每次来数据执行一次
实现类 CheckpointedFunction (用来恢复数据) 实现下面两个方法
initializeState 初始化方法
sn
初始化方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEZj7E0F-1607592581062)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209193422887.png)]](https://i-blog.csdnimg.cn/blog_migrate/debb60358046e1574fdd2579d44de4f9.png)
State 总结:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-By0QNjZs-1607592581062)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209193922437.png)]](https://i-blog.csdnimg.cn/blog_migrate/59af40518294f54b845a76cf084f2882.png)
面试问题需要记住。
Flink checkpoint 算法原理
1 数据存在了内存还是磁盘?
2 恢复数据为了高可用。 怎么实现、什么算法、怎么设计
3 Flink 相比 SparkStreaming 优势

本文介绍了Flink的有状态流处理特性,包括其架构、关键组件如JobManager和TaskManager的功能,以及不同数据传输策略的特点。此外还深入探讨了Flink State的使用方式,例如valueState和MapState的应用场景,并对比了Flink与Spark Streaming的区别。
1065

被折叠的 条评论
为什么被折叠?



