流/批/OLAP 一体的 Flink 引擎介绍|青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第1天
1.Flink概述
史前阶段~2006-->hadoop 有俩个算子 MAP、Rreduce-->Spark出现SQL高阶API代替了-->Flink更快
需要流计算的原因:实时计算价值大
实时计算的需求:
- 批式计算--》流式计算
- 离线非实时,静态数据集,周期性计算--》实时计算、快速、低延时、无限流、动态、无边界、724H持续运行、流批一体*
Storm 最少一次,可能多一次处理 、 不支持SQL
Spark Streaming是mini-batch(微批处理)、支持SQL、Exactly-精确一次的计算语义
Flink 可做到一条一条的处理、支持SQL、Exactly-精确一次的计算语义
Flink是一个基于无边界、有边界的数据流的计算引擎(流批一体)
1.2 Apache Flink 开源生态
集成较高,支持很多数据引擎
2.Flink整体架构
- 分层架构:SDK层、执行引擎层、状态存储层、资源调度层
- 总体架构:JobManager(JM)、TaskManager(TM)、Dispatcher、JobMater、ResourceManager
- Flink作业示例:source、transformation、sink ;operator chain(source map作为一个task)
2.4 Flink如何做到流批一体
- 将批式计算视为流式计算的特例
- 流批一体的Scheduler层在Flink1.12之前支持两种调度模式:EAGER、LAZY
- pipeline region:抽象能同时对流和批进行调度,数据是直接过去,中间不落盘
- BLOCKING:中间要落盘
- SHUFFLE:只要设计上下游数据交换(数据重分布)都可以理解为shuffle
- Flink的目标是实现统一的shuffle
3.fLINK架构优化
- OLAP高并发查询时保持低延迟、高实时
- OLAP可视为特殊的批式计算
- 高并发支持,极致的处理性能
3.3 Flink的OLAP的优化之路
- Flink中OLAP的调整 作业频繁启停,资源碎片化等等
- 架构现状:提交SQL Query 、Gateway(问答)、Session Cluster
4.Flink案例
-
如何由之前的离线、实时到统一为FLINK
-
业务数据源放在kafka里-->一部分放在hive里面
-
业务数据源放在kafka里-->Flink直接进行流处理