这是我参与「第四届青训营 」笔记创作活动的第2天,在第二节课中主要了解到了流/批/OLAP一体的Flink引擎有关的内容。
一、Flink概述
Apache Flink的诞生背景
什么是大数据
- 指无法在一定时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。
- Value,Volumes,Velocity,Variety
- 价值化、海量化、快速化、多样化
大数据计算架构发展历史
- 史前阶段~2006->Hadoop->Spark->Flink
为什么需要流式计算
- 大数据的实时性带来价值更大,比如监控场景、金融风控、实时推荐等场景。
- 大数据实时性的需求,带来了大数据计算架构模式的变化。
为什么Apache Flink会脱颖而出
- Exactly-Once,精确一次的计算语义
- Checkpoint,状态容错
- Dataflow编程模型,Window等高阶需求支持友好
- 流批一体
Apache Flink开源生态
二、Flink整体架构
Flink分层架构
- SDK层
- 执行引擎层
- 状态存储层
- 资源调度层
Flink总体架构
一个Flink集群,主要包含以下两个核心组件:
- JobManager(JM):负责整个任务的协调工作,包括:调度task、触发协调Task做Checkpoint、协调容错恢复等;
- TaskManager(TM):负责执行一个DataFlow Graph的各个task以及data streams的buffer和数据交换。
Flink作业示例
- 一个Flink作业在Flink中的处理流程、DataFlow Model设计思想
Flink如何做到流批一体
为什么需要流批一体
流批一体的挑战
- 流和批业务场景的特点如下表:
- 批式计算相对于流式计算核心的区别:
为什么可以做到流批一体?
- 批式计算是流式计算的特例,批式数据是一种特殊的数据流。
- 一个无边界的数据流可以按时间段切成一个个有边界的数据集,所以有界数据集(批式数据)也是一种数据流。
如何做到流批一体
- SQL层
- DataStream API层统一,批和流都可以使用DataFrame API来开发
- Scheduler Recovery层架构统一,支持流批场景
- Failover Service层架构统一,支持流批场景
- Shuffle Service层架构统一,流批场景选择不同的Shuffle Service
三、Flink架构优化
流/批/OLAP业务场景概述
三种业务场景的特点对比:
三种业务场景的解决方案的要求及带来的挑战:
为什么三种业务场景可以用一套引擎来解决:
- 批式计算是流式计算的特例,批式数据也是一种特殊的数据流。
- OLAP计算是一种特殊的批式计算,对并发和实时性要求更高,其他情况与普通批式作业没有特别大区别。
Flink如何支持OLAP场景
优势
- 引擎统一
- 既有优势
- 生态统一
四、Flink使用案例
- 电商流批一体实践
- Flink OLAP场景实践