这张图展示了Flink程序的架构和运行流程。
主要组件及功能:
- Flink Program(Flink程序):
- 包含
Program code
(程序代码),这是用户编写的业务逻辑代码。 - 经过
Optimizer / Graph Builder
(优化器/图构建器)处理后,生成Dataflow graph
(数据流图),它表示了程序中数据处理的流程和任务之间的关系。
- 包含
- Client(客户端):
- 包含
Actor System
(Actor系统),用于与其他组件进行通信和交互。 - 客户端的主要功能是向
JobManager
提交作业(Submit job (send dataflow)
),以及取消或更新作业(Cancel / update job
)。同时,它还接收来自TaskManager
的状态更新(Status updates
)和统计结果(Statistics & results
)。
- 包含
- JobManager(作业管理器):
- 也包含
Actor System
,用于与客户端和TaskManager
进行通信。 - 它是整个系统的核心组件,负责协调和管理作业的执行。
Scheduler
(调度器)负责将任务分配到不同的TaskManager
上执行。Checkpoint Coordinator
(检查点协调器)负责协调分布式快照(检查点)的创建,以保证数据处理的容错性和一致性。- 它还持有
Dataflow Graph
,用于根据数据流图来调度和管理任务。
- 也包含
- 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
)等操作。
- 每个
整体流程:
- 用户编写Flink程序代码,经过优化器和图构建器生成数据流图。
- 客户端将数据流图提交给JobManager。
- JobManager根据数据流图和资源情况,通过调度器将任务分配到不同的TaskManager的任务槽中执行。
- TaskManager执行任务,并通过网络管理器进行数据传输,同时通过Actor系统与JobManager和其他TaskManager进行通信,汇报任务状态、心跳、统计信息等,并接收管理指令。
- JobManager协调整个作业的执行,包括检查点的创建等,以确保作业的正确执行和容错性。
这种架构使得Flink能够高效地处理大规模数据流,具有良好的可扩展性和容错性,广泛应用于实时数据处理和流式计算等场景。