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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 我们的集群规模不断地在加大, 与此同时我们却有着不同的感受,明显感觉到了各种任务的运行效率都在变低,其中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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
154 1
|
2月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
67 3
zdl
|
1月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
156 56
|
2天前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
36 8
|
1月前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
166 3
【赵渝强老师】基于大数据组件的平台架构
|
1月前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
1月前
|
负载均衡 Dubbo 算法
集群容错架构设计
集群容错架构设计
28 1
集群容错架构设计
|
2天前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
12 0
|
1月前
|
SQL 存储 大数据
单机顶集群的大数据技术来了
大数据时代,分布式数仓如MPP成为热门技术,但其高昂的成本让人望而却步。对于多数任务,数据量并未达到PB级,单体数据库即可胜任。然而,由于SQL语法的局限性和计算任务的复杂性,分布式解决方案显得更为必要。esProc SPL作为一种开源轻量级计算引擎,通过高效的算法和存储机制,实现了单机性能超越集群的效果,为低成本、高效能的数据处理提供了新选择。

相关产品

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