Flink 面向开发导图
2021-03-02 17:23:00 3 举报
AI智能生成
本思维导图针对 flink 1.10 ,需要更高本版 可查看官网。 主要为熟悉API。不喜勿喷,谢谢
作者其他创作
大纲/内容
flink运行环境
Local模式
standalone
Yarn模式
俩种集群模式
window 系统模式
k8s & mesos 模式
flink运行架构
运行架构图
核心组件
applicationMaster
Dispatcher
ResourceManager
Job Manager
client
cluster Manager
TaskManager
Storage
核心概念
TaskManager 与 slots
parallelism
task and subTask
operator chains
ExecutionGraph
Graph流程图
提交流程
流程图(Yarn为例)有点混乱、尤其是Dispatcher 与Application Master 关系
Flink 核心编程
开发步骤角度
Environment
Source
从集合中获取
从文件中获取
从kafka中获取
自定义source源
Transform
map
示图
映射:将数据流中的数据进行转换, 形成新的数据流,消费一个元素并产出一个元元素
参数:lambda表达式/MapFunction 实现类
返回类型 :DataStream
flatMap
示图
扁平映射:将数据流中的整体拆分成一个一个的个体使用,消费一个元素并产生零到多个元素
参数:lambda表达式/FlatMapFunction 实现类
返回类型:DataStream
filter
示图
过滤:根据指定规则,将符合条件的数据保留,不符合的数据 舍弃
参数:lambda表达式/FilterFunction 实现类
返回类型:DataStream
keyby
示图
分流:根据key的hashcode将元素分到不同的分区,keby()是通过hash 来分区的
参数:POJO属性/元组索引/KeySelector实现类,不能使用数组
返回类型:keyedStream
针对keyedStream 的处理
滚动聚合算子(Rolling Aggregation)
max
sum
min
reduce
// TODO Reduce
// 1.输入的类型要一致,输出的类型也要一致
// 2.第一条来的数据,不会进入reduce,其他每次数据都会进入reduce
// 3.帮我们保存了中间状态,能获取上一次的执行结果
// 1.输入的类型要一致,输出的类型也要一致
// 2.第一条来的数据,不会进入reduce,其他每次数据都会进入reduce
// 3.帮我们保存了中间状态,能获取上一次的执行结果
process
获取环境相关信息,可使用process 自定义算子
shuffle
示图
洗牌:将数据随机分布打散到下游
参数:无
返回类型:DataStream
筛选
OutputTag
getSideOutput
connect
示图
连接:俩个流放在一起处理
示例:A.connect(B)
返回类型:ConnectedStreams
union
示图
合并:将多个流合在一起处理。流必须类型一致,输出类型也一致
示例:A.union(B)
返回类型:DataStream
Sink
kafka Sink
Redis sink
Es Sink
自定义SInk(mysql为例)
Flink 高阶编程
Window
TImeWindow
Tumbling Window(滚动窗口)
Sliding Window(滑动窗口)
session Window(会话窗口)
CountWindow
滚动窗口
滑动窗口
Window API
增量聚合函数
ReduceFunction
AggregateFunction
全窗口函数
ProcessWindowFunction
时间语义
Event Time
Ingestion Time
Processing Time
waterMark
FLink 封装API
AscendingTimestampExtractor(有序场景)
BoundedOutOfOrdernessTimestampExtractor(无序场景)
Flink 接口
AssignerWithPunctuatedWatermarks(间断性)
AssignerWithPeriodicWatermarks(周期性)
ProcessFunction
API
ProcessFunction
keyedProcessFunction
processElement(v: IN, ctx: Context, out: Collector[OUT])
onTimer(timestamp: Long, ctx: OnTimerContext, out: Collector[OUT])
CoProcessFunction
ProcessJoinFunction
BroadcastProcessFunction
KeyedBroadcastProcessFunction
processWindowFunction
ProcessAllWindowFunction
上下文对象
TimerService对象
currentProcessingTime()
currentWatermark()
registerProcessingTimeTimer(timestamp: Long)
registerEventTimeTimer(timestamp: Long)
deleteProcessingTimeTimer(timestamp: Long)
deleteEventTimeTimer(timestamp: Long)
定时器触发
onTimer()
侧输出流
状态编程与容错机制
状态
算子状态(operator state)
状态图
基本数据结构
列表状态(List state)
联合列表状态(Union list state)
广播状态(Broadcast state)
键控状态(keyed state)
逻辑图
ValueState[T]
ListState
MapState
ReducingState
AggregatingState
状态后端
MemoryStateBackend
FsStateBackend
RocksDBStateBackend
状态一致性
一致性级别
source端
Flink内部
sink端
幂等性
事务性
预写日志
俩阶段提交
检查点
检查点运行图
检查点算法(异步性分界线快照)
Kafka-> flink -> kafka
Flink CEP编程
逻辑图
CEP 定义
CEP 特点
CEP 开发
匹配规则
条件匹配
模式序列
量词
超时
Flink SQL 编程
Table API
开发流程
创建执行Table执行环境
创建表
查询表
保存数据
SQL API
Table 与开窗
get
收藏
收藏
0 条评论
下一页