【大数据技术干货】阿里云伏羲(fuxi)调度器FuxiMaster功能简介(一) 多租户(QuotaGroup)管理

简介: 转载自xingbao     各位好,这是介绍阿里云伏羲(fuxi)调度器系列文章的第一篇,今天主要介绍多租户(QuotaGroup)管理的实现 一、FuxiMaster简介 FuxiMaster和Yarn非常相似,定位于分布式系统中资源管理与分配的角色:一个典型的资源分配流程图如下所

免费开通大数据服务:https://www.aliyun.com/product/odps

转载自xingbao

 
 
各位好,这是介绍阿里云伏羲(fuxi)调度器系列文章的第一篇,今天主要介绍多租户(QuotaGroup)管理的实现

一、FuxiMaster简介

FuxiMaster和Yarn非常相似,定位于分布式系统中资源管理与分配的角色:一个典型的资源分配流程图如下所示: 




作为调度器,目前FuxiMaster支持的功能主要有:

1、多租户管理(本文)

2、调度模型及FIFO/FAIR调度策略

3、针对在线服务保持资源强稳定

4、支持NodeLabel动态划分集群

5、支持多机房调度

6、支持基于优先级的交互式抢占

7、支持AllOrNothing调度

8、支持基于硬件ID化的调度

9、单Master目前支持2w台机器的规模

10、......

二、多租户管理的用户场景

在典型场景下,可以简单理解为一个部门拥有一个QuotaGroup,这个QuotaGroup下可以有多位开发同学,他们使用的总资源是受到限制的。  

下面介绍有关的几个定义:

1、每个QuotaGroup拥有MaxQuota的语义,即可使用资源的上限;

2、每个QuotaGroup拥有MinQuota的语义,语义是当资源请求(Request,下同)小于MinQuota时,FuxiMaster必须分配Request这么多的资源;当Request大于MinQuota时,至少分配MinQuota这么多的资源;

3、由于系统总资源是固定的,所以每个QuotaGroup可用的资源一定是有限的、相互竞争的,每个QuotaGroup可以配置权重(Ratio),权重越大,分到的资源越多;

4、在某一时刻,有的QuotaGroup Request大,有的Request小;如果能够将Request小的QuotaGroup的Quota匀给Request大的QuotaGroup,那么系统的资源利用率会有明显提升;

5、最终QuotaGroup的Quota水位线我们称为RuntimeQuota;


用下图可以更好的描述上述概念:


假设系统中存在3个QuotaGroup组,为了简单,假设3个组的minQuota都为0; 左图中,蓝色部分是每个组的Request,红色部分是maxQuota,黄色虚线表示每个组按照ratio比列划分得出的可用quota水位线:
我们可以称之为RuntimeQuotaTmp,即:


然后我们发现,第一个组实际上request < RuntimeQuotaTmp,所以RuntimeQuotaTmp - request这部分可以匀给其他两个组使用;

在右图中,绿色虚线表示每个组最终的RuntimeQuota,可以看到对后面2个组,绿色虚线与黄色虚线的gap就是来自于第一个组的RuntimeQuotaTmp - request部分,分配的原则还是根据ratio比例:

由此可以总结出RuntimeQuota的计算公式:


三、一个典型的多租户管理的计算模型

根据上述描述,一个典型的计算模型为:

1、以各个QuotaGroup的ratio来分配集群总资源、得到RuntimeQuotaTmp;

2、当Request的总和小于集群总资源时,则每个用户的RuntimeQuota即是Request, 结束分配过程;

3、将用户分为两类,A类:Request小于RumtimeQuotaTmp;B类,Request大于RumtimeQuotaTmp;

4、对于A类用户,RumtimeQuotaTmp与Request的差可以分配给B类用户用;将这些差累计求和,记为系统中可以再分配的资源总量,记为∂

5、将∂按照ratio分配给B类用户,则B类用户新的RuntimeQuotaTmp =RuntimeQuotaTmp + 新得到的quota,记为Ω

6、如果B类用户的Ω大于Request,则Ω与Request的差还可以分配给B类用户中Ω仍小于Request的QuotaGroup,算法跳转回步骤3进行迭代,直到可再分配资源总量∂=0

这个算法有明显的缺点:时间复杂度是O(n2)

假设有n个用户,只有一个用户A的Request小于RuntimeQuotaTmp,更新可再分配资源总量∂,并分配给剩余n-1个用户后,假设只有一个用户B的新的资源配额Ω大于其Request,继续更新可再分配资源总量∂,并分配给剩余n-2个用户......如此反复,每次只有一个用户的RuntimeQuotaTmp大于其Request,那么则需要遍历n-1个用户才能完成分配过程,一次遍历时间复杂度是O(n),算法整体时间复杂度既是O(n2)。

四、FuxiMaster使用的多租户管理计算模型

FuxiMaster使用的模型算法复杂度是 O(logN), 模型如下:

1、将每个用户视为一个盛水的桶,桶的底边是Ratio,面积是Request, 高既是用户的资源饱和度Req/Ratio。分配资源配额的过程就是将水(集群总资源)灌入到各个桶中的过程。将用户按照Req/Ratio进行排序:



2、将集群总资源按照ratio比例均匀的撒到每个组(往桶里面倒水), 故所有桶的水面高度(h)一齐上升。 



3、若有的桶水面高度到顶且集群剩余可分配资源仍有剩余,则此桶的水面高度不再上升,继续向其他水面高度未到顶的桶中灌水,直到集群剩余可分配资源为0或者所有桶的水面均已到顶。

当集群剩余可分配资源为0后,我们需要找到Request得到满足和Request没有完全的满足的桶边界,在边界左边的桶的RuntimeQuota就是Request;而在边界右边的桶deRuntimeQuota是H * Ratio,其中H如下图所示。可知,如果能够计算出边界和H,那么每个用户的RuntimeQuota就是可知的。



判断边界的条件是:

Requst(A~D) + RequestE + (RequestE / RatioE) * (ratioF + ratioG) < TotalRes &&  Requst(A~D) + RequestE +(RequestF / RatioF)  * (ratioF + ratioG) >TotalRes


由于每个桶是按照Request/Ratio排序的,所以可以通过构建一颗自定义的旋转的红黑树,就可以以O(logN)的时间复杂度来找出边界点,找出边界点后,通过公式:



即可以求出H,进而得到每个Quota组的RuntimeQuota

4、如果考虑minQuota,则根据minQuota的定义将相应部分事先减去即可,如下图所示:




这个方法和典型方法从数学上可以推导对于runtimeQuota结果是保持一致的,由于比较复杂这里就不列出了,有兴趣的同学可以私下讨论

五、性能表现


我们同时实现了2种方法进行性能对比,其中组数是指QuotaGroup的个数;资源数是指资源维度的数目(资源分配是多维的),结果如下:





可以看到,FuxiMaster目前采用的方法与组数是对数关系,与资源数成线性关系,符合预期;相对于典型方法,性能提升巨大

下面进一步给出FuxiMaster方法在更大规模下面的表现:



欢迎加入“数加·MaxCompute购买咨询”钉钉群(群号: 11782920)进行咨询,群二维码如下:

96e17df884ab556dc002c912fa736ef6558cbb51 
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
4天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2天前
|
监控 大数据 数据处理
大数据组件之Storm简介
【5月更文挑战第2天】Apache Storm是用于实时大数据处理的分布式系统,提供容错和高可用的实时计算。核心概念包括Topology(由Spouts和Bolts构成的DAG)、Spouts(数据源)和Bolts(数据处理器)。Storm通过acker机制确保数据完整性。常见问题包括数据丢失、性能瓶颈和容错理解不足。避免这些问题的方法包括深入学习架构、监控日志、性能调优和编写健壮逻辑。示例展示了实现单词计数的简单Topology。进阶话题涵盖数据延迟、倾斜的处理,以及Trident状态管理和高级实践,强调调试、性能优化和数据安全性。
12 4
|
2天前
|
存储 机器学习/深度学习 数据采集
大数据处理与分析实战:技术深度剖析与案例分享
【5月更文挑战第2天】本文探讨了大数据处理与分析的关键环节,包括数据采集、预处理、存储、分析和可视化,并介绍了Hadoop、Spark和机器学习等核心技术。通过电商推荐系统和智慧城市交通管理的实战案例,展示了大数据在提高用户体验和解决实际问题上的效能。随着技术进步,大数据处理与分析将在更多领域发挥作用,推动社会进步。
|
4天前
|
分布式计算 DataWorks 大数据
DataWorks产品使用合集之在DataWorks中,在MaxCompute中使用解压缩功能如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
4天前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之在DataWorks中,将数据集成功能将AnalyticDB for MySQL中的数据实时同步到MaxCompute中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
17 0
|
4天前
|
分布式计算 DataWorks Java
DataWorks产品使用合集之阿里云DataWorks专有云环境下,上传MaxCompute的UDF(用户自定义函数)的JAR包的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
13 0
|
4天前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之阿里云MaxCompute对SQL语句的长度的长度限制是多少
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5天前
|
SQL 数据管理 API
数据管理DMS产品使用合集之阿里云DMS提供API接口来进行数据导出功能吗
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
9天前
|
弹性计算 运维 Kubernetes
阿里云轻量应用服务器与轻量容器服务简介与区别及收费标准参考
轻量应用服务器是深受个人和普通企业用户亲耐的一款轻量级云服务器产品,提供精品应用一键部署,支持一站式的域名、网站、安全、运维、应用管理等服务,极大优化搭建简单应用的体验,降低了入门级用户使用云计算产品的门槛。轻量容器服务是专为学生、个人开发者等用户打造的轻量级容器服务,帮助您在云上快速了解容器和Kubernetes(简称K8s)相关的基础概念和轻松进行入门实践。本文为大家介绍一下阿里云轻量应用服务器与轻量容器服务的区别以及收费标准,以供参考。
阿里云轻量应用服务器与轻量容器服务简介与区别及收费标准参考

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute