Bootstrap

Flink底层架构与运行流程

在这里插入图片描述

这张图展示了Flink程序的架构和运行流程。

主要组件及功能:

  1. Flink Program(Flink程序)
    • 包含Program code(程序代码),这是用户编写的业务逻辑代码。
    • 经过Optimizer / Graph Builder(优化器/图构建器)处理后,生成Dataflow graph(数据流图),它表示了程序中数据处理的流程和任务之间的关系。
  2. Client(客户端)
    • 包含Actor System(Actor系统),用于与其他组件进行通信和交互。
    • 客户端的主要功能是向JobManager提交作业(Submit job (send dataflow)),以及取消或更新作业(Cancel / update job)。同时,它还接收来自TaskManager的状态更新(Status updates)和统计结果(Statistics & results)。
  3. JobManager(作业管理器)
    • 也包含Actor System,用于与客户端和TaskManager进行通信。
    • 它是整个系统的核心组件,负责协调和管理作业的执行。
    • Scheduler(调度器)负责将任务分配到不同的TaskManager上执行。
    • Checkpoint Coordinator(检查点协调器)负责协调分布式快照(检查点)的创建,以保证数据处理的容错性和一致性。
    • 它还持有Dataflow Graph,用于根据数据流图来调度和管理任务。
  4. TaskManager(任务管理器)
    • 每个TaskManager包含多个Task Slot(任务槽),任务槽是执行任务的基本单位,图中显示每个TaskManager有三个任务槽,其中部分任务槽中已经有Task(任务)在执行。
    • Memory & I/O Manager(内存和I/O管理器)负责管理任务的内存和输入输出操作。
    • Network Manager(网络管理器)负责管理任务之间的数据传输,通过Data Streams(数据流)在不同的TaskManager之间传输数据。
    • Actor System用于与JobManager和其他TaskManager进行通信,包括发送任务状态(Task Status)、心跳(Heartbeats)、统计信息(Statistics)等,同时接收来自JobManager的任务部署、停止、取消等指令(Deploy/Stop Cancel Tasks)以及触发检查点(Trigger Checkpoints)等操作。

整体流程:

  1. 用户编写Flink程序代码,经过优化器和图构建器生成数据流图。
  2. 客户端将数据流图提交给JobManager。
  3. JobManager根据数据流图和资源情况,通过调度器将任务分配到不同的TaskManager的任务槽中执行。
  4. TaskManager执行任务,并通过网络管理器进行数据传输,同时通过Actor系统与JobManager和其他TaskManager进行通信,汇报任务状态、心跳、统计信息等,并接收管理指令。
  5. JobManager协调整个作业的执行,包括检查点的创建等,以确保作业的正确执行和容错性。

这种架构使得Flink能够高效地处理大规模数据流,具有良好的可扩展性和容错性,广泛应用于实时数据处理和流式计算等场景。

;