Flink 学习(一)架构、执行图、Flink State

一 Flink State

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVLVEHfe-1607592581042)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209195409468.png)]

Flink 1.10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFxSDidW-1607592581044)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209165104942.png)]

FlinkML 机器学习

Gelly 图计算

Flink 架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uDexgxFL-1607592581045)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209165336468.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)]

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)]

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)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQjflMkF-1607592581048)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209172028193.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0h5u2LWJ-1607592581049)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209172042817.png)]

物理执行图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bk0FhwuH-1607592581049)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209172121021.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)]

一个 task 就对应一个 state
在这里插入图片描述

keyed state 在 托管状态中选

valueState 只会存储一条。第二条进入后覆盖第一条的值

增加个 Rich 富有的 增加open 方法 只生效一次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-us1cH17x-1607592581051)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209182653080.png)]

求 同 key 的值 / 3 == 0 则 计算 value 的值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C16uSqEv-1607592581052)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183144895.png)]

总体 组件组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dRY6adss-1607592581052)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183902924.png)]

open 方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SuEnzgq-1607592581053)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183427391.png)]

代码实现 flatMap 逻辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5RwSgRk-1607592581053)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183609556.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZx1MrUm-1607592581053)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209183807714.png)]

ListStatus 同样实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K43gCiMU-1607592581054)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184128575.png)]

实现 flatMap

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i62RPslX-1607592581054)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184342761.png)]

flat map 代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NalFyQCw-1607592581055)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184445590.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xKu9KN0T-1607592581056)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184655793.png)]

MapState

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAWr2Byf-1607592581056)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209184943939.png)]

open 方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GKBl53Cf-1607592581057)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209185113739.png)]

flatmap

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWQsxhoa-1607592581057)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209185240342.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiL3Hd9l-1607592581057)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209185331757.png)]

ReduceingStatus

对 value 进行累加 所以只一个值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bce4VyYL-1607592581058)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209191552137.png)]

open 方法 需要实现聚合函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fiUUOSLY-1607592581058)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209191708304.png)]

flatmap

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSnrOKRm-1607592581059)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209191754277.png)]

AggregationgState 实现展示需求 感觉像是 UDF

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zd36QhdQ-1607592581059)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192133552.png)]

注册 + open

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYyoPUuA-1607592581059)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192214810.png)]

创建辅助变量 createAccumulator

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LxaVhbmu-1607592581060)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192502795.png)]

拼装 and

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aHkFaI6B-1607592581060)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192619657.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bk5tsvVi-1607592581061)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192637999.png)]

结果展示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJvBpxpl-1607592581061)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209192745456.png)]

每两条值输出一次

自定义 Sink 自定义输出类型

invoke 方法每次来数据执行一次

实现类 CheckpointedFunction (用来恢复数据) 实现下面两个方法

initializeState 初始化方法

sn

初始化方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEZj7E0F-1607592581062)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209193422887.png)]

State 总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-By0QNjZs-1607592581062)(C:\Users\yang.xu\AppData\Roaming\Typora\typora-user-images\image-20201209193922437.png)]

面试问题需要记住。

Flink checkpoint 算法原理

1 数据存在了内存还是磁盘?

2 恢复数据为了高可用。 怎么实现、什么算法、怎么设计

3 Flink 相比 SparkStreaming 优势
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值