文章目录
一 Flink State
Flink 1.10
FlinkML 机器学习
Gelly 图计算
Flink 架构
主节点 JobManager
从节点 TaskManager
Spark 使用 netty 通讯
Hadoop 使用 RPC 通讯
Flink 使用 Akka 通讯 Actor System
四种传输策略
1 forward strategy
一个 task 的输出值发送给一个 task 作为输入
如果两个 task 都在一个 JVM 的话就会米面网络开销
2 key based stratedy (keyby)
数据需要按照某个属性(key) 进行分组 或者说分区
相同key 数据传输给 同一个 task
3 broadcast stratedy
广播到所有 task
4 random strategy
随机。负载均衡
Operator Chain 操作链 优化操作
Flink 四层模型 (面试为三)
1 strean Graph
2 job Graph
3 Execution Graph
4 physical Execution
物理执行图
Flink State
** 【Flink —— 有状态的流】**
Spark Streaming 无状态
特殊算子
1.updateStateByKey
2.MapWithState
Flink Streaming 有状态
一个 task 就对应一个 state
keyed state 在 托管状态中选
valueState 只会存储一条。第二条进入后覆盖第一条的值
增加个 Rich 富有的 增加open 方法 只生效一次
求 同 key 的值 / 3 == 0 则 计算 value 的值
总体 组件组成
open 方法
代码实现 flatMap 逻辑
ListStatus 同样实现
实现 flatMap
flat map 代码
MapState
open 方法
flatmap
ReduceingStatus
对 value 进行累加 所以只一个值
open 方法 需要实现聚合函数
flatmap
AggregationgState 实现展示需求 感觉像是 UDF
注册 + open
创建辅助变量 createAccumulator
拼装 and
结果展示
每两条值输出一次
自定义 Sink 自定义输出类型
invoke 方法每次来数据执行一次
实现类 CheckpointedFunction (用来恢复数据) 实现下面两个方法
initializeState 初始化方法
sn
初始化方法
State 总结:
面试问题需要记住。
Flink checkpoint 算法原理
1 数据存在了内存还是磁盘?
2 恢复数据为了高可用。 怎么实现、什么算法、怎么设计
3 Flink 相比 SparkStreaming 优势