这是我参与「第四届青训营 」笔记创作活动的第2天。
课程内容及分析理解
一、课程内容
1.Flink概述
2.Flink整体架构
3.Flink架构优势
二、分析理解
(一)Flink概述
1.Apache Flink的诞生背景
- Flink诞生于欧洲的一个大数据研究项目StratoSphere。该项目是柏林工业大学的一个研究性项目。早期,Flink 是做 Batch 计算的,但是在 2014 年,StratoSphere 里面的核心成员孵化出 Flink,同年将 Flink 捐赠 Apache,并在后来成为 Apache 的顶级大数据项目,同时 Flink 计算的主流方向被定位为 Streaming,即用流式计算来做所有大数据的计算。
(二)Flink整体架构
1.Flink分层架构
-
Flink分为四层,SDK层、执行引擎层(Runtime 层)、状态存储层、资源调度层。下面分别解析各层的功能和意义。
-
SDK层:Flink的SDK目前主要有三类,SQL/Table、DataStream、Python。
-
执行引擎层:用来描述数据处理的Pipeline,不管是流还是批,都能转化为DAG图,调度层再把DAG转化成分布式环境下的Task,Task之间通过Shuffle传输数据。
-
状态存储层:负责存储算子的状态信息。
-
资源调度层:目前Flink可以支持部署在多种环境。
2.Flink总体架构
-
一个Flink集群,主要包含以下两个核心组件,JobManager(JM)和TaskManager(TM)。
-
JobManager:负责整个任务的协调工作,包括:调度Task、触发协调Task做Checkpoint、协调容错恢复等。
-
TaskManager:负责执行一个DataFlow Graph的各个Task以及DataStream的Buffer和数据交换。
(三)Flink架构优势
1.流/批/OLAP 业务场景概述
-
在实际生产环境中,针对不同的应用场景,我们对数据处理的要求是不一样的。有些场景下,只需要离线处理数据,对实时性要求不高,但要求系统吞吐率高。还有些场景下,需要对数据进行实时分析,要求每条数据处理延迟尽可能低。所以,选择合适的数据处理方式显得尤为重要。
-
流式计算的特点是实时计算,延迟在秒级以内,典型的应用是广告推荐和金融风控。
-
批式计算的特点是离线计算,处理时间为分钟到小时级别,甚至天级别,典型的应用是搜索引擎构建索引。
-
交互式分析的特点是OLAP,处理时间为秒级,典型的应用是数据分析BI报表。
-
结合以上各种数据处理的方式来看,每个方式都有各自不同的特点与缺点,所以我们对数据进行处理的时候要正确选择对应的方式来处理,不仅能让我们事半功倍,更能让效率提升好几个档次。
2.Flink优势
-
通过前面的对比分析可以发现,OLAP计算是一种特殊的批式计算,他对并发和实时性要求更高,其他情况与普通批式作业没有特别大区别。
-
因此,理论上我们可以用一套引擎架构来解决上述三种场景,只不过需要对不同场景支持响应的扩展性,并允许做不同的策略优化。所以我们可以选取Flink作为引擎。
-
Flink优势是,统一框架、多层次API、高性能、方便集成、灵活的Failover策略和易部署维护。
参考文献: Flink的诞生背景 https://developer.aliyun.com/ask/374124 流/批/OLAP一体的Flink引擎 https://bytedance.feishu.cn/file/boxcni8teJOjd4vUsgxn8rL0ylc