本篇只是简单介绍了下Flink的基础知识,属于扫盲入门篇
Flink 组件
上图是Flink的整体组件构成
Deploy层
Flink的部署模式,包括本地模式,集群模式(YARN),云
PS:线上生产环境是以Yarn模式为主
Runtime层
提供了支持Flink计算的全部核心实现,比如分布式Stream处理
API层
提供两种流处理的API
- 面向无界Stream的流处理
- 面向Batch的批处理API
应用框架层
CEP:事件处理模型
Table:类SQL操作
FlinkML:机器学习库
Flink自身优势
- 支持高吞吐,低延迟,高性能
- 支持高度灵活的窗口(Window)操作
- 支持有状态计算的Exactly-once语义
- 提供DataStream API和DataSet API
与SparkStream和Storm的对比
基本概念–流
- Flink程序的基础构建模块是流(streams)与转换(transformation)
PS:a.流很好理解,就是所有元素组成的动态处理流水线
b. 转换其实就是对流水线中的每个元素进行不停的变换。比如map,reduce等操作- 每一个数据流起始于一个或多个source,并终止于一个或多个sink
PS: source即数据流流入端 sink即接受端
从图中其实可以看到是一个流水线操作。transformation实际上就是元素的处理过程,又可以理解为“整容”
sink则是整个数据处理后的结果。
上述的整个过程可以类比与Java8 流处理中的中间操作(map,filter,reduce等)和终端操作(foreach,collect等)
partition->shuffle->reduce过程
基本概念–时间窗口
重点:
滚动窗口(没有重叠)
滑动窗口 (有重叠)
会话窗口 (由不活动的间隙所打断)