当前位置: 首页 > article >正文

ResourceManager 与 JobManager与 TaskManager 三者的协作关系

目录

1.ResourceManager (资源管理器)

2. JobManager (作业管理器)

3. TaskManager (任务管理器)

协作关系

1. 资源请求与分配

2. 任务调度

3. 任务执行

4. 状态管理和容错

类比:餐厅运营

1. ResourceManager (资源管理器)

2. JobManager (作业管理器)

3. TaskManager (任务管理器)

协作关系

1. 资源请求与分配

2. 任务调度

3. 任务执行

4. 状态管理和容错

1.ResourceManager (资源管理器)

  • 主要职责
    • 管理集群中的资源。
    • 接收来自 JobManager 的资源请求。
    • 分配 TaskManager 资源给 JobManager。
    • 回收不再需要的 TaskManager 资源。

2. JobManager (作业管理器)

  • 主要职责
    • 协调和管理整个应用程序的执行。
    • 根据 JobGraph 调度 Task 到 TaskManager 上执行。
    • 触发和协调检查点,实现容错机制。
    • 在发生故障时重新调度任务。
    • 管理 TaskManager 的资源使用情况。

3. TaskManager (任务管理器)

  • 主要职责
    • 执行具体的计算任务。
    • 与其他 TaskManager 之间进行数据交换。
    • 管理内存中的缓存和缓冲区,优化数据传输。
    • 定期向 JobManager 报告心跳,表示其状态正常。
    • 在本地存储任务的状态,并在检查点时将状态持久化到外部存储系统中。

协作关系

1. 资源请求与分配
  • JobManager 向 ResourceManager 请求资源
    • 当一个 Flink 作业提交后,JobManager 会根据作业的需求向 ResourceManager 发送资源请求。这个请求通常包括需要的 TaskManager 数量及其资源需求(如 CPU 核心数、内存大小等)。
  • ResourceManager 分配 TaskManager 资源
    • ResourceManager 收到资源请求后,会根据当前集群的资源情况,为 JobManager 分配合适的 TaskManager 资源。ResourceManager 会启动新的 TaskManager 或者从现有的 TaskManager 池中分配资源。
2. 任务调度
  • JobManager 调度 Task 到 TaskManager
    • 一旦 JobManager 获取到足够的 TaskManager 资源,它会根据 JobGraph 将具体的 Task 调度到这些 TaskManager 上执行。JobManager 会决定每个 Task 应该在哪个 TaskManager 上运行,并优化数据传输和负载均衡。
3. 任务执行
  • TaskManager 执行 Task
    • TaskManager 接收到由 JobManager 分配的任务后,开始执行这些任务。TaskManager 会在本地执行计算,并与其他 TaskManager 交换数据。
    • TaskManager 会定期向 JobManager 报告心跳和任务状态,确保 JobManager 可以监控整个作业的执行情况。
4. 状态管理和容错
  • 检查点触发与协调

    • JobManager 会周期性地触发检查点操作,通知所有 TaskManager 创建状态快照。TaskManager 会将状态数据写入外部存储系统(如 HDFS、S3 等)。
    • 检查点完成后,JobManager 会记录检查点信息,以便在故障恢复时使用。
  • 故障恢复

    • 如果某个 TaskManager 或 Task 失败,JobManager 会检测到故障,并重新调度失败的任务到其他可用的 TaskManager 上继续执行。
    • 使用最新的检查点状态进行恢复,确保数据的一致性和准确性。

我们可以将 Flink 的架构类比为一家餐厅的运营,这样可能会更直观一些。

类比:餐厅运营

1. ResourceManager (资源管理器)
  • 类比:餐厅经理
  • 职责
    • 管理整个餐厅的资源(如厨师、服务员、食材等)。
    • 接收来自厨房主管(JobManager)的资源请求(如需要多少厨师和服务员)。
    • 分配资源给厨房主管(如安排厨师和服务员)。
    • 回收不再需要的资源(如某个厨师或服务员完成了工作,可以重新分配到其他任务)。
2. JobManager (作业管理器)
  • 类比:厨房主管
  • 职责
    • 协调和管理整个厨房的工作流程。
    • 根据订单(JobGraph)调度具体的烹饪任务(Task)给厨师(TaskManager)。
    • 触发和协调检查点(如定期检查食材的新鲜度)。
    • 在发生故障时重新调度任务(如某个厨师生病了,重新安排其他厨师接手)。
    • 管理厨师和服务员的资源使用情况。
3. TaskManager (任务管理器)
  • 类比:厨师和服务员
  • 职责
    • 具体执行烹饪任务(如炒菜、切菜等)。
    • 与其他厨师和服务员之间进行协作(如传递食材、上菜等)。
    • 管理自己的工具和食材(如刀具、调料等)。
    • 定期向厨房主管报告工作状态(如完成的任务数量、剩余食材等)。
    • 在本地存储任务的状态(如正在烹饪的菜品信息),并在检查点时将状态记录下来(如记录食材的使用情况)。

协作关系

1. 资源请求与分配
  • 厨房主管(JobManager)向餐厅经理(ResourceManager)请求资源

    • 厨房主管根据订单(JobGraph)向餐厅经理请求所需的厨师和服务员数量。
    • 例如:“我们需要5个厨师和3个服务员来处理今天的订单。”
  • 餐厅经理(ResourceManager)分配资源

    • 餐厅经理根据当前餐厅的资源情况,为厨房主管分配所需的厨师和服务员。
    • 例如:“好的,我给你分配5个厨师和3个服务员。”
2. 任务调度
  • 厨房主管(JobManager)调度任务给厨师(TaskManager)
    • 一旦厨房主管获取到足够的厨师和服务员,他会根据订单(JobGraph)将具体的烹饪任务(Task)分配给这些厨师。
    • 例如:“张师傅负责炒菜,李师傅负责切菜,王服务员负责上菜。”
3. 任务执行
  • 厨师(TaskManager)执行任务:
    • 厨师接收到任务后,开始具体执行烹饪任务。
    • 例如:张师傅开始炒菜,李师傅开始切菜,王服务员准备上菜。
    • 厨师和服务员会定期向厨房主管报告工作状态,确保厨房主管可以监控整个厨房的运作情况。
4. 状态管理和容错
  • 检查点触发与协调

    • 厨房主管会周期性地触发检查点操作,通知所有厨师和服务员记录当前的状态(如正在烹饪的菜品信息)。
    • 例如:“现在是下午3点,大家都记录一下自己手头的工作进度。”
  • 故障恢复

    • 如果某个厨师或服务员突然不能继续工作(如生病或受伤),厨房主管会检测到这个问题,并重新调度任务给其他可用的厨师或服务员。
    • 例如:“张师傅生病了,王师傅你来接替他继续炒菜。”

http://www.kler.cn/news/361600.html

相关文章:

  • 长短期记忆网络(Long Short-Term Memory,LSTM)
  • 酒店预订订房小程序源码系统 多酒店入驻+打造类似美团的酒店模式 带完整的安装代码包以及搭建部署教程
  • bash之基本运算符
  • 用户之认证
  • Tailwind Starter Kit 一款极简的前端快速启动模板
  • 马拉车算法(C/C++)
  • Swift用于将String拆分为数组的components与split的区别
  • 算法专题八: 链表
  • 9. JSON RPC 服务
  • Java最全面试题->Java基础面试题->JavaWeb面试题->Git/SVN面试题
  • Spring Boot助力:构建响应式论坛网站
  • python 结构作业
  • Maven项目管理工具-初始+环境配置
  • Anthropic 发布Claude 3.5 Haiku 以及一项炸裂的新功能 AI可以模仿人类访问电脑
  • 【Linux系统编程】第三十六弹---深入探索进程间通信:封装共享内存类并实现进程间数据共享
  • 点跟踪论文—RAFT: Recurrent All-Pairs Field Transforms for Optical Flow-递归的全对场光流变换
  • Python基础——类与对象
  • C++算法练习-day15——1.两数之和
  • 打造开放式语音智能体
  • 拴柱说Mac之Mac的高效使用技巧第三期
  • 源码编译方式安装htppd软件
  • mysql学习教程,从入门到精通,SQL导入数据(44)
  • Java重修笔记 UDP 网络通信
  • python从0快速上手(十六)小游戏开发
  • 某科技——北京——国护蓝中研判岗
  • 至多六步,linux挂载磁盘