学习 Flink(一):初识 Flink

Apache Flink 是在有界(bounded)无界(unbounded)数据流之上进行有状态计算的框架和分布式处理引擎。

有界数据流,有始有终,之上的计算即为批处理。无界数据流,有始无终,之上的计算即为流处理。

Flink 采用了流优先的架构,批处理被作为流处理的特殊情况。

参考:The world beyond batch: Streaming 101

体系

flink stack

Runtime

Runtime 的核心为 JobGraphJobGraph 是并发 Data Flow 的抽象,包含了操作(JobVertex)中间结果(IntermediateDataSet)。

DataStream API

构建在 Runtime 基础之上,用于生成 JobGraph。提供了 Java API 和 Scala API。

架构

Flink 主要由四个组件组成:

  • Dispatcher
  • JobManager
  • ResourceManager
  • TaskManager

Flink Architecture

Dispatcher 接受应用提交,启动并提交应用到 JobManager。JobManager 将逻辑的 JobGraph 转换为物理的 ExecutionGraph。JobManager 向 ResourceManger 申请资源(TaskManager Slot),然后,将 task 分发到 TaskManager 上执行。