flink源码分析之功能组件(四)-slot管理组件II

简介

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。

本文解释slotpool组件,严格来说,slot组件不属于功能组件,而是业务组件,包括slotpool和slotmanage,++资源消费者++ 申请到资源后,在本地管有资源slot,避免**++资源管理器++** 异常导致作业运行失败,同时**++资源管理器++**不可用也不会影响作业的继续执行,只有资源不足时才会导致作业执行失败。

slot管理组件也是实现声明式资源管理核心,值得我们细细分析。本文slot管理组件II 分析声明式资源管理, slot管理组件I分析slotpool组件的分配/申请资源

检查资源需求/检查资源声明

检查资源需求/检查资源声明是flink声明式资源管理的核心方法

上面的资源场景分为两类,++提出资源需求++ 和**++提供资源++**, 检查资源请求/检查资源声明是交汇点,处理资源请求,该分配的分配,该请求新的请求新的资源;检查资源声明,哪些资源可以释放,需要新资源请求新worker。

本章深入分析两方法,上游提出资源需求和下游提供资源的串联,资源状态演变,存储型态

检查资源需求(checkResourceRequirements)

**++检查资源需求++**是真正的分配资源

1) 获取作业的未完成资源请求

2) 尝试分配可用资源到作业

之所以尝试,资源变更触发调用检查资源请求,但不一定是增加,可能是无效分配

slotTracker获取所有可用资源,与请求匹配,合适的分配allocateSlot,该方法对应场景9.6 请求使用资源/提供资源

3) 尝试使用待定的资源

待定资源是指申请了新的worker或者将要申请新worker所产生的资源,两者都是目前没有物理上的对应资源,通俗说就是先占个坑,等申请了资源再填回去

同样,首先匹配现有的待定资源,若还有未分配打开新的待定资源

tryAllocateWorkerAndReserveSlot调用TaskExecutorManager的allocateWorker,预先挖好"坑",创建待定资源PendingTaskManagerSlot

declareNeededResourcesWithDelay方法下节介绍,按需要申请新的worker,增加物理资源

到此还有一个问题,物理资源到位后怎样填"坑"

自然想到9.5 注册任务管理器/报告资源,使用新增资源抵消待定资源

TaskExecutorManager的registerTaskManager方法

检查资源声明(checkResourceDeclarations)

声明资源,要申请多少资源,可释放多少资源,上一节检查资源请求打开新待定资源,最终调用checkResourceDeclarations,实际申请新worker获得物理资源,为了支持动态/静态资源申请,中间ResourceAllocator转接了一下,这里不详细分析

现有的worker数量-需要的worker数量,大于0,worker多了可以释放;反之,worker少了,需要打开新worker

requestNewWorker参看 请求新worker

ResourceDeclaration怎么来?

主要是计算totalWorkerNum,目前worker总数量

totalWorkerNum = pendingWorkerNum + neededRegisteredWorkers

pendingWorkerNum 待定的slots除以每个worker的slots,向上修正,只多不少

neededRegisteredWorkers是已经注册的worker减去待释放的worker

相关推荐
Chasing__Dreams18 小时前
kafka--基础知识点--3.1--生产者架构
分布式·架构·kafka
LDG_AGI18 小时前
【推荐系统】深度学习训练框架(十六):模型并行——推荐系统的TorchRec和大语言模型的FSDP(Fully Sharded Data Parallel)
人工智能·pytorch·分布式·深度学习·语言模型·自然语言处理·推荐算法
豫狮恒18 小时前
OpenHarmony Flutter 分布式任务调度:跨设备负载均衡与资源优化方案
分布式·flutter·wpf·openharmony
song50120 小时前
鸿蒙 Flutter 支付安全:TEE 可信环境下的支付校验实战
分布式·flutter·百度·重构·交互
Blossom.1181 天前
基于Embedding+图神经网络的开源软件供应链漏洞检测:从SBOM到自动修复的完整实践
人工智能·分布式·深度学习·神经网络·copilot·开源软件·embedding
Jackeyzhe1 天前
Flink学习笔记:多流 Join
flink
song5011 天前
鸿蒙 Flutter 图像识别进阶:物体分类与花卉识别(含离线模型)
人工智能·分布式·python·flutter·3d·华为·分类
阿里云大数据AI技术1 天前
Forrester发布流式数据平台报告:Ververica首次跻身领导者行列,实时AI能力获权威认可
人工智能·flink
西格电力科技1 天前
源网荷储与碳中和:推动能源清洁转型的关键路径
大数据·人工智能·分布式·系统架构·能源
-Xie-1 天前
Redis(十四)——分布式锁
数据库·redis·分布式