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

Flink 资源静态调度

本内容是根据 Flink 1.18.0-Scala_2.12 版本源码梳理而来。本文主要讲述任务提交时,为 Task 分配资源的过程。
在这里插入图片描述

以下是具体步骤讲解:

  1. TaskManager 资源注册
    TaskManager 在启动时,会向 ResourceManager 注册资源。ResourceManager 会将 TaskManager 的资源以 ResourceProfile 的形式记录。
  2. 提交 Job
    再 Flink 系统启动后,会启动一个名为 Dispatcher 的组件。Flink 客户端会将用户编写的代码整理为 JobGraph,并提交至 Dispatcher。Dispatcher 会为每一个 JobGraph 创建一个 JobMaster。由 JobMaster 管理其 Job 的资源分配。
    JobMaster 内部包含一个调度器(Scheduler),再 1.18 版本中,Scheduler 的实现有:DefaultSchedulerAdaptiveSchedulerAdaptiveBatchScheduler
    默认使用 DefaultScheduler,其使用 PipelinedRegionSchedulingStrategySchedulingStrategy 作为他的调度
  3. JobMaster 从 SlotPool 中挑选资源分配给 Job
    每个 JobMaster 有一个 SlotPool,负责管理属于它的资源。
    对于 PipelinedRegionSchedulingStrategySchedulingStrategy,它会使用 SlotSharingStrategySlotSelectionStrategy 来决定调度策略。
    SlotSharingStrategy 负责将某些 SubTask 放在同一 Slot 中,此时产生的 Slot 叫做 SharedSlot。SharedSlot 只是一个逻辑概念,不是具体的物理资源。共享的策略目前只有 LocalInputPreferredSlotSharingStrategy
    当作业是首次提交,且不与其他作业共享资源时,SharedSlot 是不与物理资源对应的。那么就需要 SlotSelectionStrategy 来为 SharedSlot 选择物理资源。为其选择的物理资源被称为 PhysicalSlot。SlotSelectionStrategy根据某种策略,从 SlotPool 中挑选 PhysicalSlot 分配给 SharedSlot。这个策略目前有 DefaultLocationPreferenceSlotSelectionStrategyEvenlySpreadOutLocationPreferenceSlotSelectionStrategy
    然后,每个 SubTask 对应的执行节点(ExecutionVertex)中会记录期望分配的资源的信息。
    但是,作业首次提交时,它的 JobMaster 的 SlotPool 中是没有任何资源的,那么就需要下一步。
  4. JobMaster 向 ResourceManager 申请资源
    JobMaster 会将 SlotPool 中缺少的资源信息以 ResourceProfile 的形式发送给 ResourceManager 来申请资源。具体是 SlotPoolService 向 SlotManager 来申请资源。
    SlotManager 的具体实现目前有:DeclarativeSlotManagerFineGrainedSlotManagerDeclarativeSlotManager 支持作业级动态调度,FineGrainedSlotManager支持任务级动态调度。早期版本还有 SlotManagerImpl,其只支持静态调度,已被抛弃。
    SlotManager 接收到 JobMaster 所需的资源后,会与已注册的资源以某种策略进行匹配,匹配成功后,会将资源发送给 JobMaster。
  5. JobMaster 向 TaskManager 申请资源
    JobMaster 从 ResourceManager 得到可用的资源的信息后,会向每个资源对应的 TaskManager 发送资源信息。TaskManager 在收到资源信息后,会从它的资源中划分出相应的资源,并创建 Slot,然后激活 Slot。之后 TaskManager 会将已激活的 Slot 资源信息返回给 JobMaster。
    JobMaster 将发送给 TaskManager 的资源信息与TaskManager 返回的资源信息进行对比,若对比无误,则将 Slot 资源存储至 SlotPool。
  6. 部署 Task
    经过上面几步,Slot 已准备完毕。接下来,就是期望的资源信息会与已准备的资源进行匹配,若匹配成功,则部署。
http://www.lryc.cn/news/384355.html

相关文章:

  • upload-labs第十三关教程
  • 基于springboot实现宠物商城网站管理系统项目【项目源码+论文说明】计算机毕业设计
  • Fragment与ViewModel(MVVM架构)
  • Linux开发讲课16--- 【内存管理】页表映射基础知识2
  • uniapp地图点击获取位置
  • Unity程序开发:1.基本概念及操作
  • 前端新手小白的第一个AI全栈项目---AI聊天室
  • 金升阳电源被制裁,广州顶源电源模块可以完美替换
  • 《数据赋能:一本书讲透数字化营销与运营》—— 从正确的数据观开始
  • JDK 24:Leyden
  • 对于图片转3d人脸方面的研究
  • .NET C# 八股文 代码阅读(一)
  • C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示
  • 南信大尹志聪教授为一作在顶级综合性期刊《Natl. Sci. Rev.》发文:传统梅雨停摆,江南缘何不再多烟雨?
  • 程序员如何用ChatGPT解决常见编程问题:实例解析
  • 初识 SpringMVC,运行配置第一个Spring MVC 程序
  • STM32F1+HAL库+FreeTOTS学习1——FreeRTOS入门
  • 杭州代理记账报税全程托管专业实力全面指南
  • PHP 界的扛把子 Swoole 异步通信利器
  • 40.连接假死-空闲检测-发送心跳
  • hdfs高可用文件系统架构
  • 从官方源码精简出第1个FreeRTOS程序
  • 谷歌上搞下来的,无需付费,可以收藏!
  • 宿主机无法通过ip连接wsl2解决方案
  • Ruby编程语言学习
  • Redis实战—基于setnx的分布式锁与Redisson
  • ARM功耗管理框架之LPI
  • Unity太空避障Demo总结
  • SpringSecurity-重写默认配置
  • C# 判断值是否在枚举里