这是我参与「第四届青训营 」笔记创作活动的的第2天
Flink概述
1.1Apache Flink背景
1.1.1 什么是大数据?
1.1.2 大数据计算架构发展史
史前阶段~2006:
- 传统数仓
- Oracle
- 单机
- 黑箱使用
Hadoop:
- 分布式
- Map-Reduce
- 离线计算
Spark
- 批处理
- 流处理
- SQL高阶API
- 内存迭代计算
Flink
- 流计算
- 实时、更快
- 流批一体
- Streaming/Batch SQL
1.1.3 为什么需要流式计算
- 监控场景(避免业务故障)
- 金融风控(阻断风险)
- 实施推荐 (抖音、淘宝推荐····)
大数据实时性的需求,大数据计算架构模式形成了从批式计算从流式计算的转变
1.2 为什么Apache Flink会脱颖而出
1.2.1 流式计算引擎对比
1.3 Apache Flink生态
2.Flink整体架构
2.1 Flink分层架构
- SDK层:SQL/Table、DataStream、PyFlink
- 执行引擎层(Runtime):执行引擎层提供了统一的DAG用来描述数据处理,不管是流还是批,都会统一转换成DAG图,调度层把DAG转换成分布式环境下Task,然后通过Shuffle传输数据;
- 状态存储层:负责存储算子的状态信息;
- 资源调度层: 目前Flink可以部署在多种环境;
2.2 Flink总体架构
一个Flink集群,主要包含以下两个核心组件
- JobManager(JM):负责整个任务的协调工作(调度task,触发协调task做checkPoint、协调容错机制等)
- TaskManager(TM):负责执行一个DataFlowGraph的各个task以及data streams 的buffer 和数据交换;
Dispatcher:接收作业,拉起JobMannager来执行作业,并在JobMannager挂掉之后恢复作业; JobMaster:管理Job的整个生命周期; ResourceMannager:负责slot资源的管理和调度;
2.3 Flink作业示例
业务逻辑转换成数据流图: