Apache Flink
Flink 概述
Flink是构建在Data Stream之上一款有状态计算框架,被人们认为是第3代流计算框架
三代大数据计算框架
| 代数 | 处理引擎 |
|---|---|
| 第一代 | 批处理:MapReduce 流处理:Storm |
| 第二代 | 批处理:Spark RDD 流处理:使用micro-batch模拟流处理,例如DStream、StructuredStreaming |
| 第三代 | 批处理:Flink Datastream 流处理:使用流计算构建批处理,例如Flink Dataset |
Flink架构
Flink宏观架构
Flink计算架构
核心概念
- JobManager:即Master,负责协调分布式任务执行,负责调度任务,协调checkpoint,协调故障恢复等。
- TaskManager:即Slaves, 负责真正的任务执行,执行Task下的subTask,负责流计算当中数据缓存或者数据shuffle。计算机节点连接JobManager汇报自身状态信息,并且告知主节点自己分配到任务的计算状态。
- client:主要是在任务计算之前将任务翻译成Dataflow Graph,将该Dataflow Graph提交给JobManager。
- Task:Flink会将任务通过Operator Chain的方式将一个任务划分成若干个Task,每个Task都有自己的并行度,根据设置并行度创建相应的subTask(线程)。通过Operator Chain可以减少线程间通信成本和系统开销
- Task Slots:每个Task Slot代表TaskManager计算资源子集。Task Slot可以均分TaskManager的内存。不同job的subTask之间可以通过Task Slot进行隔离。同一个job的不同Task的subTask可以共享Task Slot。默认所有的subTask燕文共享的是同一个资源组default,因此一个job所需的Task Slot的数量就等于该job下Task的最大并行度。