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能够高效地处理大规模数据流,具有良好的可扩展性和容错性,广泛应用于实时数据处理和流式计算等场景。

相关推荐
爱跨境的笑笑1 小时前
Skype for Business网络延迟怎么办?
大数据·开发语言·网络·tcp/ip·php
数据大包哥1 小时前
Spark RDD持久化机制深度解析
大数据
Python数据分析与机器学习1 小时前
基于Spark的电商供应链系统的设计与实现
大数据·分布式·spark
jieshenai3 小时前
基于专利合作地址匹配的数据构建区域协同矩阵
大数据·矩阵·数据分析
码界筑梦坊3 小时前
基于大数据的去哪儿网景区可视化及协同过滤推荐系统
大数据·python·信息可视化·flask·毕业设计
胖哥真不错4 小时前
Python实现GO鹅优化算法优化Catboost回归模型项目实战
大数据·python·机器学习·数据分析·go鹅优化算法·goose·catboost回归模型
TZ丶旭哥4 小时前
ELK之elasticsearch基本使用教程
大数据·elk·elasticsearch
loyd36 小时前
【数据分析】5 设计不同业务分析框架
java·网络·数据分析
豪越大豪6 小时前
智慧园区后勤单位消防安全管理:安全运营和安全巡检
大数据