流/批/OLAP一体的Flink引擎 | 青训营笔记

117 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第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