# Flink架构是怎么样的?

Flink 的架构可以从运行时物理架构分层技术架构两个视角来理解,它们共同构成了 Flink 处理无界/有界数据的核心能力。

# 运行时物理架构(主从模式)

这是 Flink 执行作业的进程级结构:

Client  →  JobManager  →  TaskManager
1
  • JobManager(Master):集群的管理节点,负责任务调度、Checkpoint 协调、故障恢复。内部包含:
    • Dispatcher:接收作业、启动 JobMaster、提供 REST API。
    • JobMaster:管理单个作业的生命周期,将 JobGraph 转为 ExecutionGraph,申请资源。
    • ResourceManager:管理 TaskManager 的 Slot(空闲/分配)。
  • TaskManager(Worker):实际执行算子的 JVM 进程。每个 TaskManager 包含多个 Task Slot(内存等资源的隔离单元),一个 Slot 可以运行一个或多个并行子任务。
  • Client:提交作业(生成 StreamGraph/JobGraph),不参与执行。

TIP

部署差异:Standalone 模式手动启动所有进程;YARN/K8s 模式动态申请容器,ResourceManager 对接外部资源调度器。

# 分层技术架构(从应用到执行)

Flink 设计为分层架构,每层可独立扩展:

SQL / Table API    ←  最高层(关系型抽象)
     ↑
DataStream / DataSet API  ← 核心 API(流/批统一)
     ↑
Runtime 层(JobManager + TaskManager)← 分布式执行引擎
     ↑
物理部署层(Local, Standalone, YARN, K8s, Cloud)
1
2
3
4
5
6
7

各层职责

  1. 部署层:支持各种环境,Flink 应用以标准 JVM 进程运行。
  2. Runtime 层:提供数据流执行、状态管理、容错(Checkpoint/Savepoint)、背压(Backpressure)等核心能力。
  3. API 层
    • DataStream API:流处理(事件时间、窗口、状态)。
    • DataSet API(批处理,已逐渐被 Table API + Batch 模式替代)。
    • ProcessFunction 等底层 API。
  4. Table/SQL 层:基于 Apache Calcite 优化,自动生成 DataStream 程序。

# 逻辑数据流架构(作业内部)

Flink 作业表现为一个 有向无环图(DAG)

Source → Transformations → Sink
1
  • Source:数据接入(Kafka、Socket、文件…)。
  • Transformations:map、filter、keyBy、window、join 等。
  • Sink:结果输出(DB、HDFS、Kafka…)。

在运行时,这个逻辑图被转换为:

  • StreamGraph(Client 生成)→ JobGraph(优化后)→ ExecutionGraph(JobMaster 并行化)→ 物理执行图(TaskManager 上的 Task)
Last Updated: 5/13/2026, 12:44:46 PM