Flink原理
1. Flink简介
总结与思考⭐
1)flink被阿里收购,用于双十一大屏等顶级项目,每天处理超过万亿数据,性能经得起考验
2.为什么选择Flink
2.1 传统数据处理架构
2.2 大数据Lambda架构
2.3 流处理架构
2.4 Flink是理想的流计算框架
2.5 Flink的优势
2.6 FLINK架构
2.7 总结与思考⭐
1)传统架构-->Lambda架构-->流处理架构,流处理架构可能是未来的主流架构;
2)传统架构缺点:不易扩展,数据库直接影响业务系统;
3)Lambda架构缺点:需要维护实时/离线两套系统和代码,运维成本较高
4)流处理架构的优势:包含批处理;不用存储中间数据;高吞吐,高性能,低延迟
3.Flink中的统一数据处理
总结与思考⭐
1)有界数据集:有边界的数据集;数据静止不变,处理方式一般是批处理
2)无界数据集:没有边界的数据集;一般为实时数据,容易出现先产生的数据后到达的错乱问题,复杂度高于批处理
2)有界和无界数据集可以相互转换,比如限定某个时间段的无界数据集就是有界数据集
4.Flink技术栈/工作原理和编程模型
总结与思考⭐
1)Flink工作原理:FLink程序通过JobCLient将任务提交到JobManager,JobManager负责协调和分配资源,资源分配完成后,任务会分配响应的TaskManager,TaskManager会启动一个线程开始执行taskSlot,taskManager会更新任务执行的状态,并将成功与否返回给JobClient
2)Flink编程模型:底层流接口-->核心(DataStrem/DataSetl API)-->TableAPI-->SQL
核心API:是对底层流接口的集成,并且提供的底层的处理函数。用户通过核心PAI自由处理一个或多个的流处理事件,并且适用一致容错状态
TableAPI:以二维表为中心,提供select/join/group by等操作,表达能力不如核心API
核心API和TableAPI可以无缝切换,混合使用
SQL:更高级接口,通过SQL语言实现,表达能力语法与TableAPI类似
5.FLink的应用程序结构
总结与思考⭐
1)Flink程序的结构包含:数据源(Source)-->数据转换(Transformation)-->数据输出(Sink),类似数据的ETL
2)Source/Transformation/Sink都包含不同的类型
6.FLink编程语言的选择
总结与思考⭐
1)scala编写的Flink程序拥有最佳的性能