这是我参与「第四届青训营 」笔记创作活动的第6天
课堂笔记
一、本堂课重点内容:
- Flink整体架构介绍
- Flink架构优化
- Flink应用案例讲解
二、详细知识点介绍:
1.Flink整体架构
Flink主要包含JobManager,TaskManager两个核心组件
- JobManager管理一个作业的整个生命周期,包括向ResourceManager申请资源,并将Task调度到对应的TaskManager上。
- TaskMannager负责Task的执行调度。
2.Flink分层架构
Flink主要有SDk层、执行引擎层、状态存储层、资源调度层
- SDK主要有DataStream、pyFlink、SQL/Table
- 执行引擎层主要用统一的DAG用来描述数据处理的Pipeline,接下来调度层再把DAG转为一个个的Task去执行
- 状态存储层主要负责存储状态信息,包括算子的状态信息
- 资源调度层主要支持多种资源部署环境,包括Yarn,K8s等。
3.流/批/OLAP三种场景可以用一套引擎来计算的原因
- 原因1:批式计算是流式计算的特例,由于有界数据流也是无界数据流的一种特殊情况;
- 原因2:而OLAP计算是一种特殊的批式计算
4.Flink OLAP 架构现状
主要分为client、Gateway、Session Cluster三个组件
- client主要是提交SQL Query给服务器
- Gateway组件接收client提交的SQL Query并对其进行解析,优化生成执行计划后提交给集群
- Session Cluster执行作业计算及调度、最终返回结果。
5.未来技术展望
目前JobManager目前只支持同时运行一个,而未来希望能支持同时开启多个JobManager以此来提高集群并发度。
三、实践练习例子:
流/批/OLAP业务场景例子:抖音
- 在抖音中需要实时统计抖音直播间实时在线人数,实时统计一个视频的播放量、点赞数用到流式计算
- 抖音中按天统计一些统计数据如每天的播放量、访客数用到批式计算
- 在抖音的某些活动中需要实时统计一些计算结果即进行实时多维分析。
四、课后个人总结: 通过本次课加深了对Flink框架的了解,尤其是对流/批/OLAP一体的架构原理实现部分。