百度离线资源治理

news2024/12/28 17:49:59

在这里插入图片描述

作者 | 百度MEG离线优化团队

导读

近些年移动互联网的高速发展驱动了数据爆发式的增长,各大公司之间都在通过竞争获得更大的增长空间,大数据计算的效果直接影响到公司的发展,而这背后其实依赖庞大的算力及数据作为支撑,因此在满足业务迭代的前提下如何控制成本是公司非常重要的一环。

本文将介绍百度MEG(移动生态事业群组)在离线资源降本增效方面用到的一些技术以及取得的一些成果。

全文4478字,预计阅读时间12分钟。

01 业务背景

随着百度App的日活用户的持续增长,为了满足广大用户对信息资讯更加精准的需求,MEG的各个业务模块对于离线算力和存储的需求也不断增加通过其驱动上层模型获得更好的效果,因此离线成本也逐年增加,如何满足业务增长的情况下最小化机器资源成本是本文重点关注的问题。就拿百度App后端推荐服务(后简称Feed)举例,拥有离线大数据计算数百万核、分布式存储数百PB,成本以亿为单位,而且还在持续增长,因此我们希望能够在满足推荐效果的前提下优化降低离线的成本。整体离线计算主要分为两大类,即数据挖掘类和数据分析类,其中挖掘类场景主要是通过python脚本提交的MapReduce任务为主,分析类场景主要是Spark及SQL类为主,底层集群资源都是EMR,存储统一使用百度公司分布式文件存储Appendonly File Storage(后简称AFS)。

02 优化思路

下面介绍下我们的优化思路,在此之前说下整个离线的业务背景,主要从三个方面说明,第一是管理混乱,队列失控、任务失控;第二是成本高,千万核计算、EB级的存储使用率低,同时增量的需求无法满足;第三是效率,包括任务运行的效率和资源交付的效率,主要表现为队列拥堵,任务跑不动。

针对以上问题及痛点,首先针对管理混乱的问题我们通过平台进行离线资源任务的全生命周期管理;其次是针对资源使用率低成本高的问题,我们自研智能调度机制实现对不同使用率队列的削峰填谷,基于存算分离技术实现快速合池,通过潮汐算力分时调度优化白天紧张的算力供给增量业务,再就是与INF共建RSS技术并规模化落地优化混部资源的稳定性,还有就是针对EB级的存储进行动态扩缩容实现存储的优化和供给。整体的挑战是如何利用有限的资源满足无限的需求。

03 算力优化

3.1 合池技术

接下来介绍下算力优化的第一个优化点,合池技术,首先说下为什么要合池,因为碎片化的队列会导致弹性不足、使用率很难最大化,维护成本高。如下图所示,一个大约5w核的队列,它的峰值是达到上限了,但是均值很低,很难满足更大资源量但是执行较快的需求,因此一方面是期望能把小的这种队列合并,另一方面提升整体的使用率,如下图第二个队列,最终实现降本增效。

图片

合池最大的挑战分两块,一是合池后如何保证任务的性能不退化,同时如何保障资源效率,二如何对业务无感透明合池。

接下来大致粗略的说一下合池的过程,如下图所示:就是将等量资源的几个小队列进行合并,提升队列的使用率上限,满足业务需求的同时退订一部分资源。

图片

整体的技术方案主要包括两部分,一是智能调度,二是存算分离技术,下面会分开介绍下这两项技术的实现。

3.1.1 智能调度

如下图所示,智能调度的整体架构如下,首先一个基于python的client,负责将用户的程序、参数、环境依赖等等进行打包,然后通过智能调度系统异步提交,系统会根据任务维度多维的特征,比如优先级、并发、所需资源等信息结合资源实时的水位进行智能最优匹配,其中调度系统比较核心的也是首要的就是排序,即要解决先调度谁后调度谁的问题,如下图中的排序策略,首先是一个FIFO的队列模型,排序策略会根据任务的优先级、等待轮数进行加权,然后结合任务的并发系数进而计算出来先后顺序,优先级分位三挡,VERY-HIGH、HIGH、NORMAL,优先级越高权重越大,其次是等待的时长越长权重越大,越优先调度;有了顺序后后面会根据任务要读取数据的地域就近匹配计算队列,减少跨地域网络IO的开销,此外还有队列资源打满或异常等过滤策略,以及任务使用资源超限降级等策略,最后是针对排好序的任务进行队列分配,根据实时获取的队列资源水位结合任务提交所需要的资源量(并发数*单并发核数),分配好队列,任务会被worker正式提交到集群上面去。智能调度在整个合池过程中充当非常重要的角色,它能保障任务在合池后性能不退化,通过合理的编排,针对峰谷不一的资源进行打平调度,重复利用闲散资源提升整体资源利用率。

图片

3.1.2 存算分离

刚才介绍的是调度提交的过程,此外在合池过程中另外一项核心的技术是存算分离,它是解决碎片化队列快速合池的关键,核心的点是说我们会提前在各个集群新建一个计算的ugi,并且给这个ugi分配好计算所需要的临时存储并开通合池队列的计算权限,UGI存算分离后,原来用户的UGI只作为读写数据使用,代理计算的UGI提前开通各集群的权限,并分配好中间存储,调度系统会自动调度到有资源的合池队列,用户不需要改代码,合池透明化。

图片

总结下合池以后的效果,资源池化以后,千万核计算资源整体的使用率从55%提升到80%,增量供给和优化退订了数百万核资源,成本年化降低数千万。此外池化是得资源的交付效率大幅提升,从之前周级、月级缩短到天级,任务的整体耗时通过合理的调度和编排也降低了30%。

3.2 潮汐算力

接下来我介绍下算力优化的第二个优化点,潮汐,它的特点是体量大、数百万核、夜间特定时间段供给,成本低,免费用。可以用潮汐技术的场景包括策略模型调研类,数据回溯类等。如何把这部分资源充分利用好是项目的核心,主要通过如下三种方式实现潮汐的规模化应用,第一是显式的注册引导,第二是对存量可在夜间运行任务的画像挖掘,第三是对资源使用超限的分时管控,如下图所示:

图片

△潮汐规模化应用的方式

潮汐的挑战有两个,第一是如何对存量任务画像、怎么尽可能保障在潮汐退场前执行完,如下图所示,接下来重点介绍下方案,就是通过隐式挖掘存量任务转潮汐,因为潮汐资源是0点供给5点准时退场,因此我们期望对一些存量例行的任务进行画像让它能够通过潮汐时间段加速实现算力优化,释放更多白天的算力,这里画像主要包括执行周期、频次、并发数、task总量等,利用这些信息给任务打一个潮汐的tag,在这个任务下次提交的时候使用一个时间加速模型判断其是否能在潮汐退场前执行完,该模型主要是通过例行任务常规的运行时间以及map、reduce的数量、并发量等计算出一轮计算缩需要的时间,然后乘以提升并发量以后要跑的轮数,算出来加速后的预期完成时间,然后判断是否能在潮汐退场前执行完,这块分两种情况,0-5点,5-24点,公式略有差异。

图片

△潮汐时间加速模型

下面介绍一下潮汐的第二个技术点,也即是前面提到的另一个挑战,如何保障潮汐任务瞬时退场后不失败,第二天潮汐窗口来临后继续跑,解决方案是在现有的合池队列上进行扩展,在潮汐退场前提前降低并发,白天低速运行。

总结下潮汐在离线大规模应用的效果,首先是规模,目前潮汐的资源规模达到300W核,通过画像挖掘存量转夜间实现了年化约600万成本的节省。业务方面的话,有100+回溯、调研类任务通过潮汐实现了资源的满足,加速了模型调研的效率,提升了模型的效果。

图片

△潮汐队列断点续跑

3.3 RSS技术

接下来我介绍下算力优化的第三个优化点,RSS(Remote Shuffle Service)技术的规模化应用,大背景是离线标准型资源稳定,但成本高、稀缺,而混部资源成本低容易供给,但稳定性差、失败率高容易被抢占,如下图所示,失败率比较高。

图片

△混部资源task失败率高

图片

如果reduce2运行中被抢占,需要从所有上游map重新拉取数据,而上游map已经被另一个任务占用,也需要重新排队计算因此造成时长增加,因此RSS技术的核心是把shuffle数据存远程文件系统,这样reduce被抢占的话直接从afs拉取map产出,map不需要重算,开启RSS的任务执行时间基本与标准型资源性能持平。

04 储存优化

4.1 背景介绍

存储资源预算逐年收紧,为应对接下来的业务增长,需求基本靠优化来满足。当前整个公司储存空间的使用率大约为60%,从使用率维度看任然有一定的提升空间。Google Research于2021年发表了一篇名为Autopilot的论文《Autopilot: Workload Autoscaling at Google Scale》,核心思想是Quota Auto Resize By workloads,即根据实际quota使用情况动态分配,可引入一些简单的模型预测quota的需求变化量,该思想是我们实现AFS Quota超售的基本技术支撑,即按实际使用分配同时保障使用的时候能分配到,这样最大的好处就是存储是一个可被全局调度的大池,既能最大化提高存储流转回收的效率又可以提升整体存储的使用率进而达到成本优化的目的还能节省大量的运维成本,可谓一箭三雕。

回到我们实际的业务场景,大部分情况下业务申请预算都是按照全年需求的总量申请quota,实际交付后需要较长的时间才能将资源的使用率提升上来,这样就导致很大一部分quota的价值没有发挥出来,闲置在那,其他人也不起来,因此我们要实现quota的动态分配,实现资源全局最优。

4.2 Quota Resize

下面介绍下基于quota resize的优化模型,它会针对使用率低的存量账号进行动态的缩容,增量需求不再一次性分配,而是初始少量,根据实际使用情况逐步分配。

图片

△quota resize简版方案

下面介绍下resize的整体流程,首先是收口增量需求,所有的需求申请通过平台流程中心进行,例如申请1P先初始化300T,容量管理服务会根据实时的资源使用水位结合滑动窗口通过集团云的升降配接口进行动态扩缩,核心的技术点是分钟级感知资源水位,和buffer池的预留设计以及基于滑动窗口的阶梯缩容机制。

图片

△afs quota resize流程架构

总结下resize项目的效果,首先是EB级存储的使用率从63%提升到78%,成本降低数千万,同时使用率方面与业界持平,此外资源的交付效率也大幅提升。

05 总结

本文主要介绍了百度MEG离线大数据计算和分布式文件存储的治理及优化思路,取得了阶段性的优化效果,业务覆盖方面目前覆盖了MEG超过80%的离线资源,优化使得每年计算成本降低约4000万,存储成本降低约3000万,降本的同时很好的支撑了增量不断的业务需求。离线资源的治理是个长期持久的工作,需要不断优化不断挖掘新的方式,技术方面也需要不断创新,后续会持续更新分享优化经验。

——END——

推荐阅读:

百度APP iOS端包体积50M优化实践(三) 资源优化

代码级质量技术之基本框架介绍

基于openfaas托管脚本的实践

百度工程师移动开发避坑指南——Swift语言篇

百度工程师移动开发避坑指南——内存泄漏篇

增强型语言模型——走向通用智能的道路?

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何熟练的运用数学模型在水环境影响评价、防洪评价与排污口论证项目中的方法

数学模型在水环境评价、防洪评价和排污口论证等领域中的重要作用,随着人类活动的不断增加和环境问题的日益突出,对水资源和水环境的保护与管理变得至关重要。为了更好地理解和应对这些挑战,数学模型成为一种强大的工具,能够提供量…

使用HHDESK完成网站穿透

在工作和学习中,有很多内网网站,不能通过公网进行访问,需要特定的IP;而IP费用极高,比如按IP收费,费用根据流量带宽来,——这着实是一笔很大的开支。 而通过HHDESK,使用hhtp协议代理…

软考A计划-系统架构师-官方考试指定教程-(5/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Win10安装Java 配置环境变量

文章目录 概要下载jdk安装jdk配置环境变量测试环境变量是否配置成功总结 概要 学习java开发首先需要安装jdk,并设置环境变量。 接下来就来介绍一下如何在 windows 10 系统中配置java环境变量 下载jdk https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe…

【手撕Spring源码】一些值得注意的Spring底层细节

文章目录 FactoryBeanIndexed 原理Spring代理的特点Value 装配底层Autowired 装配底层事件监听器模拟事件发布器 FactoryBean FactoryBean是一个Factory对象,用于生成其他bean示例。当一个bean实现FactoryBean接口后,Spring容器调用其getObject方法返回该工厂所生成的bean,而不…

elasticsearch 8.2.3 安装及springboot简单使用

一、下载安装 官网下载地址https://www.elastic.co/cn/downloads/elasticsearch 解压 elasticsearch-8.2.3-windows-x86_64 修改配置 elasticsearch-8.2.3\config\elasticsearch.yml # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable…

自学大语言模型之GPT

GPT火爆的发展史 2017年6月OpenAI联合DeepMind首次正式提出的:Deep Reinforcement Learning from Human Preferences,即基于人类偏好的深度强化学习,简称RLHF 2017年7月的OpenAI团队提出的对TRPO算法的改进:PPO算法 GPT-1&#…

【笔记】算法简单题

题解&#xff1a; import java.util.HashMap; import java.util.Map;public class Test {//暴力解决法public static int[] twoSum(int[] nums, int target) {for(int i0;i<nums.length;i){for(int ji1;j<nums.length;j){if(nums[i]nums[j]target){int[] indexs{0,0};i…

澳大利亚道路安全的AiRAP自动化审核(英)(附下载)

项目概况 该项目由新南威尔士州交通局&#xff08;TfNSW&#xff09;领导&#xff0c;悉尼科技大学&#xff0c;国际道路评估计划&#xff08;iRAP&#xff09;和澳大利亚地理空间数据专家Anditi的研究和协助。 该项目开展的工作是全球首创&#xff0c;其活动和成果是澳大利亚和…

15、库函数开发小结

目录 0x01、初始化 0x02、数据输入输出 0x03、状态位、标志位 0x0001、事件 0x0002、标志位的检查与清除 0x04、外设函数分类 本节我们来总结一下ST库开发的步骤和共同点&#xff0c;在总结之前&#xff0c;我们来看一下基本所有外设都有的以下几类寄存器&#xff1a; 1…

chatgpt赋能python:Python就业指南:市场现状、薪资情况及就业前景

Python就业指南&#xff1a;市场现状、薪资情况及就业前景 Python作为一门既新颖又多用的编程语言&#xff0c;已经引起了越来越多的关注。据统计&#xff0c;在2019年&#xff0c;全球Python使用者数已经达到了960万人。而在中国&#xff0c;Python的应用也越来越普及&#x…

PolyFormer:将图像分割称为顺序多边形生成

文章目录 PolyFormer: Referring Image Segmentation as Sequential Polygon Generation\摘要本文方法Multi-modal Transformer EncoderRegression-based Transformer Decoder 实验结果 PolyFormer: Referring Image Segmentation as Sequential Polygon Generation\ 摘要 在…

为什么会有分布式锁?分布式锁实现方案

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。分布式环境下会出现资源竞争的地方都需要分布式锁的协调。 分布式锁的作用&#xff1a;在整个系统提供一个全局、唯一的锁&#xff0c;在分布式系统中每个系统在进行相关操作的时候需要获取到该锁&#xff0c;才能执…

Calibre 6.18.1 正式发布,功能强大的开源电子书工具

导读Calibre 开源项目是 Calibre 官方出的电子书管理工具。它可以查看&#xff0c;转换&#xff0c;编辑和分类所有主流格式的电子书。Calibre 是个跨平台软件&#xff0c;可以在 Linux、Windows 和 macOS 上运行。 Calibre 6.18.1 正式发布&#xff0c;此次更新内容如下&#…

数据挖掘(6.1)--神经网络

目录 神经网络简介 BP算法 Delta学习规则的基本原理 BP神经网络的结构 BP神经网络的算法描述 神经网络训练一般步骤 后向传播算法的主要步骤 优缺点 BP算法简单举例 神经网络简介 神经网络是一种计算模型&#xff0c;它受到人脑处理信息的生物神经网络过程的启发。人…

围绕工业 APT 攻击的主要问题

高级持续威胁 (APT) 行动在受害者网络内取得成功的关键因素包括人为因素、安全措施不足、网络安全解决方案更新和配置方面的挑战以及其他因素。 虽然其中一些原因可能看起来微不足道&#xff0c;但卡巴斯基专家在事件响应活动中经常遇到这些问题。 为帮助公司减轻相关威胁并确…

win系统将脚手架的软链接指向本地脚手架

先了解一下脚手架研发、发布、安装、调试发大致流程&#xff1a; 本地研发&#xff0c;具体研发过程略当前目录下登录npm npm login发布脚手架 npm publish安装脚手架 npm i -g xxxx&#xff08;win系统会在系统盘的nodejs文件夹下自动添加脚手架执行命令和执行文件&#xff0…

94.构建样品餐部分第二节

上节课完成的页面是这样的 ● 之后我们设置一下图标 .meal-attribute {font-size: 1.8rem;font-weight: 500;display: flex;align-items: center;gap: 1.6rem; }.meal-img {width: 100%; }.meal-icon {height: 2.4rem;width: 2.4rem;color: #e67e22; }● 为了突出这些参数的…

Go1.21 速览:新内置函数 clear、min、max 和新标准库包 cmp!

大家好&#xff0c;我是煎鱼。 前面给大家分享了 Go1.21 正式不支持 macOS 10.13 和 10.14 的支持。吓得我赶紧把我的 2017 款的老爷机从 10.14 升成 13.4。感觉 mbp 已经变成了暖宝宝。&#x1f605; 今天给大家分享的是 Go 1.21 中的两个双新增项&#xff0c;分别是新的 3 个…

QTYX量化系统实战案例分享|涨停股池中寻找反弹机会-202306

前言 “实战案例分享系列”是和大家分享一些股票量化分析工具QTYX在实战中的应用案例&#xff08;包括失败的案例&#xff09;&#xff0c;这样能够帮助大家更好地去理解QTYX中的功能设计&#xff0c;也能更好地帮助大家搭建出属于自己的量化交易系统。 关于QTYX的使用攻略可以…