深入理解 Flink(七)Flink Slot 管理详解

1.JobMaster 注册成功之后开始调度

JobMaster 中封装了一个 DefaultScheduler,在 DefaultScheduler.startSchedulingInternal() 方法中生成 ExecutionGraph 以执行调度。

2.Flink 的资源管理机制

资源调度的大体流程如下:
在这里插入图片描述

a.TaskExecutor 注册

  • Register:当 TaskExecutor 启动之后,会向 ResourceManager 注册自己(TaskExecutor)和自己内部的 Slot(TaskManagerSlot)。
  • Status Report:TaskExecutor 启动之后,会定期向 ResourceManager 进行心跳汇报,在心跳 payload 中,会携带 Slot 信息,ResourceManager 会随即更新自己内部 Slot 状态。

b.JobMaster/ JobManager 内部分配

  • allocateSingleSlot:Scheduler 向 SlotPool 发送请求,如果 Slot 资源足够则直接分配,如果 Slot 资源不够,则由 SlotPool 再向 ResourceManager 中的 SlotManager 发送请求,此时即为 Job 向 Cluster 请求资源。
  • allocateSharedSlot : Scheduler 向 SlotSharingManager 发送请求,SlotSharingManager 构建好 Slot 树之后, 向 SlotPool 发送请求,如果 Slot 资源足够则直接分配,如果 Slot 资源不够,则由 SlotPool(JobMaster) 再向 SlotManager(ResourceManager)发送请求,此时即为 Job 向 Cluster 请求资源。

c.Job 向 Cluster 请求资源

  • 当通过 On YARN 的 per-job 模式 或者 sessionCluster 模式运行,则会在 YARN 集群中,启动一个 Flink 的小集群(申请一个 Continer 用来启动 JobManager 主节点,申请一堆 Container 用来启动 TaskManager 从节点)如果所有从节点提供的总 Slot 资源不够,则可以尝试从 YARN 中申请 Container 再启动 TaskManager 从节点,所以就多提供了一些 Slot 资源。直到 YARN 中的所有资源耗尽。
    • 申请一个 Continer 用来启动 JobManager(Flink 主节点)
    • Flink 主节点向 YARN 主节点申请一堆 Container 用来启动 TaskManager(Flink 从节点)
  • 如果 SlotManager 判断集群当中有足够的资源可以满足需求,那么就会向有资源的 TaskManager 发送 Request 指令,SlotPool 再去满足 Scheduler 的资源请求。
  • 在 ActiveResourceManager 资源部署模式下,当 ResourceManager 判定 Flink Cluster 中没有足够的资源去满足需求时,它会进一步去底层的资源调度系统(YARN,K8s)请求资源,由调度系统把新的 TaskManager 启动起来,并且 TaskManager 向 Resource Manager 注册,则完成了新 Slot 的补充。
  • 这种模式下,资源一共分为三级:SlotPool(job 已申请到的 slot)、SlotManager(cluster 已申请到的)、YARN(集群中剩余的)。

3.Flink 的 Slot 管理相关 RPC 请求

在这里插入图片描述
Flink 的 slot 管理分为 ResourceManager、TaskExecutor、JobMaster 3 个部分。

a.ResourceManager

  • ResourceManager 是资源管理者,通过 SlotManager 进行 slot 管理。
  • 负责处理 TaskExecutor 的 Slot 注册和 Slot 汇报。
  • 接收到 JobMaster 申请 slot 的请求,然后向 TaskExecutor 发送 RPC 请求申请 slot。

b.TaskExecutor

  • TaskExecutor 是资源提供者,通过 SlotTable 进行 slot 管理。
  • TaskExecutor 上线之初,会找 ResourceManager 进行 slot 注册,而后在心跳过程中,不停进行 SlotStatus 和 Payload 的 Report。
  • TaskExecutor 接收到 ResourceManager 的分派 Slot 的 RPC 请求之后,完成 slot 分派,并且告知 JobMaster。

c.JobMaster

  • JobMaster 是资源使用者,通过 SlotPool 进行 Slot 管理。
  • JobMaster 负责向 ResourceManager 申请 slot,或者取消申请。
  • JobMaster 会接收来自 TaskExecutor 的 slot 的分派完成,然后部署 Task 执行,当 Task 执行完毕之后,会释放 Slot。

关于 Flink 中 slot 的申请和释放的 RPC 调用关系:

  1. TaskExecutor 上线之初,通过 sendSlotReport 向 ResourceManager 注册 Slot。
  2. JobMaster 启动之后,通过 requestSlot 向 ResourceManager 申请 slot,申请期间,也可以通过 cancelSlotRequest 取消申请。
  3. ResourceManager 接收到 JobMaster 的 slot 请求,会通过 requestSlot 将请求转发给 TaskExecutor。
  4. TaskExecutor 接收到 ResourceManager 的 requestSlot 请求之后完成 slot 分派,然后通过 offerSlot 告知 JobMaster。
  5. JobMaster 在使用完毕 slot 之后,会通过 freeSlot 向 TaskExecutor 释放 slot。
  6. TaskExecutor 在接收到一个 freeSlot 请求之后,会通过 notifySlotAvailable 告知 ResourceManager 该 slot 可用。

JobMaster 申请 slot 的核心入口:

allocateSlots(executionVertexDeploymentOptions);

大体上分为四个大步骤:

1、JobMaster 发送请求申请 slot 的请求给 ResourceManager
2、ResourceManager 接收到请求,执行 slot 分派处理,然后转发请求给 TaskExecutor
3、TaskExecutor 处理 ResourceManager 发送过来的 Slot 请求,完成 Slot 分派
4、JobMaster 接收到 TaskExecutor 发送过来的 Slot 申请处理结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/322504.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从CISC到RISC-V:揭开指令集的面纱

对于大多数同学来说,计算机或智能手机的运行似乎就像魔法一样神奇。你可能知道它们内部都是一些复杂的电子组件,比如CPU、内存等等,但这些组件是如何协同工作,让我们可以在电脑上打字,或者在手机上看视频呢&#xff1f…

matplotlib绘制动态瀑布图

绘制瀑布图思路:遍历指定文件目录下所有的csv文件,每读一个文件,取文件前20行数据进行保存,如果超过规定的行数300行,将最旧的数据删除,仅保留300行数据进行展示。 网上找的大部分绘制瀑布图的代码&#x…

ssh远程登录协议 搞定远程访问控制

远程管理linux系统基本上都要使用到ssh,原因很简单:telnet、FTP等传输方式是以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。SSH(Secure Shell)目前较可靠,是专为远程登录会话…

走迷宫(c语言)

前言: 制作一个迷宫游戏是一个有趣的编程挑战。首先,我们需要设计一个二维数组来表示迷宫的布局,其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来,我们需生成迷宫。在生成迷宫的过程…

智能手表喇叭无气孔导致老化播放后没声音

智能音箱喇叭老化播放后没声音 智能手表要做防水,在外壳上打了防水胶,结果出现播放突然没声音的现象. 原因 一直播放,设备温度升高,因为做了防水密闭导致喇叭腔体气压异常,导致播放没声音. …

nginx入门学习

nginx简介 nginx 是什么?用来干嘛的 通俗解释:客户端向服务器请求时,提供让多个服务器一起处理请求的东西 是一个反向代理服务器,能够提供负载均衡,和进行反向代理的功能 正向代理&反向代理 客户端向代理服务器请求&#…

短剧分销系统,助力短剧市场发展,实现短剧收益

近几年来,我国短剧兴起,在经过几年的蓄力后迎来了爆发期,短剧市场规模一路狂飙!短剧拥有节奏快、剧情“爽”的优势,成功占领了各大观众的碎片化时间,短剧已经成为了影视行业的新力量,也成为了当…

微服务概述之微服务特性

前言 既然系统采用了微服务架构,就需要了解一些微服务的特性,这样在进行微服务开发时,脑海中才会有一些指导方向。微服务具有以下特性。 1. 服务组件化 组件是独立、可替换、可升级的软件的单元。将整体应用拆分成独立的服务组件后&#xff…

嵌入式软件开发对硬件知识的掌握要求要多高?

嵌入式软件开发对硬件知识的掌握要求要多高? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家&#xff0…

并发编程(一)线程基础知识与线程控制

进程与线程 进程:如任务管理器中各种程序叫做正在运行的进程。对于操作系统来说,仅仅是一个数据结构,并不真实的执行代码 线程:真实执行代码的 每个进程启动的是时候会同步启动一个主线程即main函数,当main函数结束…

倒F天线设计经验分享

一、IFA天线理论分析 为了改善ILA天线难以使用的缺点,在ILA天线的基础上再增加一个倒L结构,形成IFA天线,此种天线体积小、易于匹配并具有双极化的特点,而在蓝…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库,帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动,经查看文档,现在是通过驱动管理来上传, 但新版又不允许上传驱动JAR…

外贸群发邮件最好的软件?群发软件哪个好?

外贸开发信群发软件推荐?做外贸用什么邮件群发软件? 在外贸业务中,与潜在客户建立联系并保持沟通是至关重要的。那么,如何快速有效地发送邮件给大量的潜在客户呢?这就涉及到了外贸群发邮件。蜂邮EDM来探讨一下&#x…

presto/trino 入门介绍实战

引言 Presto是一款分布式SQL查询引擎,它能够在大规模数据集上实现快速、交互式的查询。本文将介绍Presto的基本概念并结合一些实际的代码示例,能够让的大家快速入门并在实际项目中应用。 官网:Launch Presto: Local download, JDBC, Docker…

11.云原生分布式数据库之TIDB

云原生专栏大纲 文章目录 为什么使用TIDB后端视角运维视角基础架构视角 TiDB Operator 简介软件版本要求部署tidbTIDB工具helm常用命令TIDB学习推荐资料 为什么使用TIDB 从后端视角、运维视角和基础架构视角来看,使用 TiDB 作为数据库系统可以获得分布式架构、高可…

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

云原生微服务之分布式锁框架 Redisson

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目…

动物多指标生理监测:ZL-019A大小鼠饮食饮水监测系统

ZL-019A大小鼠饮食饮水监测系统是一款能够实时监测和分析动物的饮食、饮水、站立、活动量和活动轨迹等行为和代谢过程的智能系统。 本系统旨在定期测量实验动物的饮食饮水摄入行为,用户可根据需要自定义测量时间。通过定期测量,研究者无需再费心记录单个…

代码随想录 Leetcode454. 四数相加 II

题目&#xff1a; 代码 (首刷看解析 2024年1月15日&#xff09;&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int n nums1.size();u…

【干货】数字化工厂常见术语合集

本文将为大家介绍一些行业通俗名称&#xff0c;希望对于从事“数字工厂”行业的朋友以及正在求职的朋友们有所助益。 数字化工厂&#xff08;"Digital factory"&#xff0c;简写为"DF"&#xff09;&#xff1a;是指利用先进的信息技术和数字化解决方案&am…