阿里妈妈MaxCompute架构演进 - AON(MPI)集群

简介: 我们的集群规模不断地在加大, 与此同时我们却有着不同的感受,明显感觉到了各种任务的运行效率都在变低,其中AllOrNothing这类任务表现尤为明显

阿里云数加MaxCompute (原名:ODPS;https://www.aliyun.com/product/odps)

1.1   MPI集群

1.1.1   背景

我们的集群规模不断地在加大, 与此同时我们却有着不同的运行体验,明显感觉到了各种任务的运行效率都在变低

1.1.2   问题

问题1:

说明

Aon:all-or-nothing

FIFO/Fair:调度系统支持的两种调度策略

 

问题2:

 

问题3:

 

以上三个问题其实主要原因还是aon类任务跑不起来,但同时却占着大量的资源给不了别的任务用;

1.1.3   项目目标

最终的想法其实也很简单,就是拆出独立AON(但大家习惯了歪叫成MPI)集群,建设规模要达到6000台+,让且仅让所有的生产和实验aon任务(主要是PS和Xlib-mpi)跑在这个上面,尽量减少Aon任务攒资源引起的资源浪费。

1.1.4   项目收益

 

1.1.5   关键问题及解法

这个看似简单的结论却藏着一堆的问题要解

 

  • 关于混合机型;

像MaxCompute这种分布式计算平台的初衷是希望对用户屏蔽掉底层的物理细节的,在MR/Sql这种单instance对资源需求量(1Core + 2~3G)不是很大的情况下是基本成立的,但在这种大的PS任务情况下,发现这个问题很不好搞,AY87B上是混布的s10(128G + 32Core)和N41(192G + 64Core),而一个大的AON任务如PS的Server和Worker单个instance动不动就需要40~50G的资源需求量,你说是设置成50G好还是60G好,用户需要兼顾底层多种机型设置的同时还要考虑任务的执行效率,这给开发同学造成了很大的困扰,因此我们做的第一个决定就是统一aon集群机型,全部使用的是s10系列。

这里面实际还有另外一个问题:用s10还是N41?,考虑到两个我们选的s10,一是LR类迭代任务每轮迭代之后的网络通信量大,在同是万M网卡的情况下我们期望单机的Instance越少越好;二是当时的情况是s10机型为主,腾挪起来方便;

       这里关于机型选择的问题我觉得主要还是网络IO资源能不能纳入资源隔离的问题,如果能很好地控制网络的使用那么机型本身也就不是个多大的问题了。

  • 计算资源量储备

从单机来看,由于单个Instance的资源需求量大,很容易造成一个现象:“资源碎片”,经常出现20G以上的大“碎片”

从任务来看,独立集群的意义主要在于能让AON任务快速拿到资源,避免掉“攒”资源的过程,所以我们基本会按照需求的130%做资源准备

  • 资源利用率和调度策略

由于大碎片和超额的资源配置,集群利用率肯定就不会太高,因此如何把这部分资源用起来就是一个不得不解的问题;

这个时候主要靠的就是全局调度、超卖和抢占了

【全局调度】:顾名思义就是在多个集群间做资源负载均衡的,干的事主要就是当MR集群压力大时且AON集群有空间时将部分MR任务导到AON集群;

但这种做法和以前的做法貌似差别不大,最终也会是MR和AON混跑造成相互影响,唯一好处就是能保证AON是尽量最闲的,因此我们不得不再次升级策略:抢占

【抢占】

       抢占的前提是优先级,目前MaxCompute的任务优先级由project的优先级和job的优先级组成,跑在阿里妈妈AON集群上的任务有三大类:线上AON/实验AON/MR(含sql),他们的优先级通常是递减的。

抢占从粒度上分主要有两种:Quota组间的抢占和Quota内的抢占

       从力度上分也有两种:温和抢占和暴力抢占

       从我们要解决的问题来看,这几个策略都有涉及:

  • AON集群中的Aon资源组vs mr资源组:我们的quota是基于min保障和max共享的,一般max会是min的1倍以上,当AON集群中的mr任务所在的quota组资源用得比较超(大于min)时就需要使用组间抢占让aon组尽快把资源收回来;
  • AON资源组内:我们的aon任务分实验和生产,产生优先级是高于实验的,因此我们期望达到的效果是生产要跑时实验能把资源释放出来给生产用,因此组内也需要开抢占;
  • 暴力抢占:当aon需要抢占mr时,由于mr有自动的failover,因此可以直接把资源抢过来;
  • 温和抢占:从人性化和高效率的角度,这个才是正道,他的主要思想就是基于一个抢占协议和抢占消息,让任务的instance能够感知在X秒内将被强制终止,它可以根据自身情况选择跑完还是保存现场或者立即终止,这个事的难点是让mr/ps/xlib等计算框架都支持和能处理这些协议和消息。

这一整套要实施下来周期较长,在实施的过程中,我们发现了另外一个更有用的方案:超卖;

【超卖】

       抢占有一个不太好的地方就是基于plan资源的,而物理上机器的实际利用率可能不一定高,且由于需要单独划Quota也会挤占fuxi给AON任务的plan资源,因此最终我们决定用超卖的方式来斛利用率这个问题。

       超卖的基本思想:超卖的quota其min是一个很小值,不占用集群的plan额度,直接给集群设定一个超卖率(如20%),当某台机器的负载超过一定阈值的时候就将超卖的任务直接杀掉;

 

当然超卖也是可以和全局调度结合起来用,其实我觉得全局调度+超卖+温和抢占如果能全部支持的话这个场景下的调度策略的问题能解得基本差不多。

1.1.6   一点感想

建设aon集群实际就是在做物理资源的隔离,实际的建设进度不是很快,主要还是还重了(尤其是存储迁移最费事),我们也在想如果存储计算分离做得足够好后,较为轻便的虚拟集群是不是会更高效点,当然需要把相关的自动化配套建设起来才行,否则一大堆人肉工作也是很难受的。
最后感慨一下:系统调度是一个很难十分十美的跨学科工种;

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
存储 SQL 监控
数据中台架构解析:湖仓一体的实战设计
在数据量激增的数字化时代,企业面临数据分散、使用效率低等问题。数据中台作为统一管理与应用数据的核心平台,结合湖仓一体架构,打通数据壁垒,实现高效流转与分析。本文详解湖仓一体的设计与落地实践,助力企业构建统一、灵活的数据底座,驱动业务决策与创新。
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
1311 0
|
存储 SQL 分布式计算
19章构建企业级大数据平台:从架构设计到数据治理的完整链路
开源社区: 贡献者路径:从提交Issue到成为Committer 会议演讲:通过DataWorks Summit提升影响力 标准制定: 白皮书撰写:通过DAMA数据治理框架认证 专利布局:通过架构设计专利构建技术壁垒
|
12月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
983 1
|
消息中间件 分布式计算 大数据
“一上来就搞大数据架构?等等,你真想清楚了吗?”
“一上来就搞大数据架构?等等,你真想清楚了吗?”
279 1
|
SQL 存储 监控
流处理 or 批处理?大数据架构还需要流批一体吗?
简介:流处理与批处理曾是实时监控与深度分析的两大支柱,但二者在数据、代码与资源上的割裂,导致维护成本高、效率低。随着业务对数据实时性与深度分析的双重需求提升,传统架构难以为继,流批一体应运而生。它旨在通过逻辑、存储与资源的统一,实现一套系统、一套代码同时支持实时与离线处理,提升效率与一致性,成为未来大数据架构的发展方向。
|
架构师 Oracle 大数据
从大数据时代变迁到数据架构师的精通之路
无论从事何种职业,自学能力都显得尤为重要。为了不断提升自己,我们可以尝试建立一套个性化的知识目录或索引,通过它来发现自身的不足,并有针对性地进行学习。对于数据架构师而言,他们需要掌握的知识领域广泛而深入,不仅包括硬件、网络、安全等基础技术,还要了解应用层面,并熟练掌握至少一门编程语言。同时,深入理解数据库技术、具备大数据实操经验以及精通数据仓库建模和ELT技术也是必不可少的。只有这样,数据架构师才能具备足够的深度和广度,应对复杂的业务和技术挑战。 构建个人知识体系是数据架构师在学习和工作中的一项重要任务。通过系统化、不断深化的知识积累,数据架构师能够有效应对快速变化的商业环境和技术革新,进一
|
SQL 分布式数据库 Apache
网易游戏 x Apache Doris:湖仓一体架构演进之路
网易游戏 Apache Doris 集群超 20 个 ,总节点数百个,已对接内部 200+ 项目,日均查询量超过 1500 万,总存储数据量 PB 级别。
1344 3
网易游戏 x Apache Doris:湖仓一体架构演进之路

热门文章

最新文章

相关产品

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