前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从量化到优化,详解有赞离线数据降本之路

从量化到优化,详解有赞离线数据降本之路

作者头像
有赞coder
发布于 2020-08-24 03:12:06
发布于 2020-08-24 03:12:06
5920
举报

作者:见风

部门:数据中台

一、引言

1.1 背景

年初,一个月黑风高的夜晚,数据中台的TL独自坐在工位上,左手托着下巴,右手搭着键盘,指尖缓动,眉头紧锁。面对下边这张图,本可以下班的他,迟迟不愿离开。

过去的半年,有赞的业务高速增长,可喜可贺。但是数据中台的计算资源消耗也水涨船高,半年翻一番,甚至超过业务涨幅。再这么下去,部门恐怕要凉凉,想到这,不禁打了个寒颤。

数据是我们的重要资产,随着业务的发展以及历史的积累,所需存储和计算不断增长在所难免。但是“大”数据意味着大成本,如何有效控制成本合理增长?这个问题,值得深思。

1.2 整体思路

很直接的,找到无用的数据进行下线处理,找到可优化的任务进行改造……这些点都可以省资源。但是仅仅这样是不够的,因为做这些事情本身也需要成本,很琐碎也很费事,还需要各种推动讨人嫌。

我们需要是一种长效的,自运转的降本机制,让小伙伴们感知到成本,感受到浪费,自发地关注成本,节约成本。那么就需要做到这几点:

  1. 成本可量化,细到每个数据的成本以及它的构成
  2. 浪费可感知,能发现并提示出有多少浪费存在
  3. 降本便捷性,知道了浪费,还要知道如何优化,高效地降本
  4. 过程可跟踪,做的降本动作,需要被记录和跟踪,反应成本变化
  5. 机制运营,如何设计奖惩措施,激发自主降本,保持良性循环

于是,摆在眼前的几座大山,需要一一翻跃:怎么量化数据成本;怎么算清帐有没有浪费或者优化点;怎么降本和支持降本;怎么跟踪降本过程;怎么持续运营产生效益。

二、成本量化

合理地量化出直观的数据成本,是第一步。因此,首先要聊到我们的成本模型。

数据的成本在于硬件资源消耗(本文不考虑人力),存储需要磁盘,计算需要cpu和内存等。基于此,我们的核心做法其实很简单:数据成本=资源单价*消耗资源,下面我们来一一解释。

2.1 资源单价

根据实际情况,判断我们硬件的核心资源:cpu、内存、磁盘,需要估算各自的单价。

以猪价类比,影响因素有很多,关键几个是:

  • 全社会投入养猪的成本就是总成本。那么我们用于数据产出的所有机器的总投入就是我们的总成本。记为total_cost。
  • 猪有多少就是总资源量(准确得说,应该是总共有多少猪蹄、猪排、猪头、猪肉等)。对于机器也是,总的cpu(total_cpu)、内存(total_memory)、磁盘大小(total_disk)是多少。
  • 不同部位稀缺性不一样,根据整猪单价按不同比例分配,各个部位的总价。机器资源,是cpu贵还是内存贵(根据供需关系),每类资源的成本占比是多少。分别记为:cpu_ratio、memory_ratio、disk_ratio。
  • 出栏的猪量占比是一个水位,过多过少都会影响市场价格,同一时间应该是一个相对稳定的比例。用于计算的机器资源负载应该有个合理比例,过高需要扩容,过低考虑缩容。换句话说,机器资源用不到100%,空闲资源也是成本,把合理的资源水位记为load_factor。

有以上变量,可以估算出单价:

  • cpu单价,cpu_price= total_cost*cpu_ratio/(total_cpu*load_factor)
  • 内存单价,memory_price= total_cost*memory_ratio/(total_memory*load_factor)
  • 磁盘单价,disk_price= total_cost*disk_ratio/(total_disk*load_factor)

2.2 消耗资源

数据消耗的资源分为三类:

  1. 存储使用的磁盘,这里要注意的是,数据的备份也会占用空间。如存在hdfs集群上的数据,一般是3备份。
  2. 计算使用的cpu、内存等,通常跟占用时长也有关,这个可以想办法采集到。
  3. 时间,这里特指产出数据对应的任务的运行时段。由于不同时段,集群的资源紧缺程度不一样,从供需角度,应该考虑分时计费。

2.2.1 存储空间采集

这个比较简单,定时采集即可,这里就不赘述了。

占用存储资源:disk= data_size*replicator,其中data_size是数据名义大小,replicator是备份数。

2.2.2 资源消耗采集

首先,我们有yarn资源利用率监控,可以采集到分钟级的集群负载情况。但是这个是整体的,如何才能精确到每个计算任务的消耗呢?有两个关键的服务:

  • spark thrift server(以下简称sts),用于采集spark sql类任务的cpu和内存消耗,记为cpu_seconds(cpu占用秒数)和memory_seconds(内存占用秒数)
  • spark monitor(以下简称smnt,基于yarn的资源采集服务),用于采集非spark sql类任务的cpu和内存消耗

其中sts采集的结果是实际需要消耗的,但是yarn在分配资源时,会有一定的损耗(可以理解为资源分配、回收环节,占用了资源,但是不做实际计算)。这个系数记为loss_factor,它是一个经验值,可以通过大量任务测试对比得出。

为了统一公式,对于smnt的采集结果,loss_factor=0。这样,就可以算出每个任务消耗的资源:

  • cpu= cpu_seconds*(1+loss_factor)
  • memory= memory_seconds*(1+loss_factor)

2.2.3 分时计费

集群的负载随时间变化,看监控,可以发现夜间负载很高,白天负载偏低。同样的资源消耗,在白天跑和在夜间跑,如果计费相同,有违“市场规律”。

因此,为了调节供需关系,同时也鼓励不重要数据在空闲时段计算,我们考虑分时计费。

上图是我们集群某天cpu实际负载情况,可以发现三个时段:

  • 0-8 点是黄金时段,业务数据赶着在上班前跑出,任务繁重,资源负载接近极限
  • 8-13 点是白银时段,负载没那么高,相对次要点的数据和数据重刷任务会集中在这个时段
  • 13-24 点是青铜时段,集群相对空闲

我们有必要对以上三个时段设定不同权重,来“调节市场”。那么,权重怎么设计呢?关键原则是:设定权重后,保持资源总量合理

我们首先统计出过去一段时间不同时段需要消耗的计算资源总量,可以求出一个比例,如下表:

对于权重,要求:0.6*w1+0.3*w2+0.1*z=1w1>w2>w3。为了更好的效果,w1和w2、w2与w3之间,要拉开差距。

这样,就可以大概定一组权重(我们目前设定的是w1=1.2,w2=0.8,w3=0.4)。值得注意的是,对于可能跨越多个时段的任务,也要按比例加权求和。

定义好这三个权重,假设三个时段消耗的cpu_seconds分别是cs1、cs2、cs3,那么加权系数:

cpu_weight= (cs1*w1+cs2*w2+cs3*w3)/cpu_seconds,同理可以算出memory_weight

2.3 数据成本

评估好资源单价,采集到资源消耗以及运行时段,就可以评估出一个较为合理的数据成本了。

  • cpu_cost= cpu_price*(cpu*cpu_weight)
  • memory_cost= memory_price*(memory*memory_weight)
  • disk_cost= disk_price*disk

当然,实际计算成本,还有许多细节需要考虑,比如:

  • 数据对应的任务,可能同时产出多个数据,那成本怎么分摊(简化模型,等比分摊)
  • 数据的成本归属给谁,谁来负责关注和优化(确保每个数据有唯一的owner)

这里不再展开。

三、成本账单

数据有了成本,总不能让它自我优化吧,哈哈,得有人。接下来是,如何让大家感知到成本情况呢?成本账单是必要的。

3.1 账单内容

目前我们提供的账单有全局、部门、个人粒度的。主要内容包含:

  • 成本总览,负责数据的总成本、变化及其排名,心中有数
  • 成本趋势,过去n天,成本变化趋势,可以看不同资源的成本趋势,未来有预期
  • 必要的榜单,负责的数据里,哪些高成本或者高耗时的,关注和优化有抓手
  • 降本信息,累计节省多少成本,剩余多少不必要的浪费,感受动力和压力
  • 价值信息,数据服务了多少业务,被多少人使用,体现价值

3.2 数据模型

实现数据成本量化和账单,本身也需要数据开发。以数据为基础,为了实现多粒度账单,需要特别关注分层和复用。数据分层偏向数仓模型设计,此处不展开,着重讲一下复用。

上面这个图,表达了资源成本的核算过程。

  • 摊:一个计算任务只属于一个人,可能产出多张表,此时会将平均成本分摊到表。
  • 合:粗粒度的成本,通过细粒度聚合而来,不做重复计算。比如,单表有唯一的owner,可以汇总到人;另外,有专门的业务域管理,表和业务域是多对多的关系。
  • 联:由于很多数据无法直接关联到表或者人,在算粗粒度的时候,需要额外关联到对应实体。比如目前有许多临时查询任务,消耗资源,但是并非表的成本,但是应该算到人头上。

四、成本优化

成本可以量化,又有了账单,台子搭好了,接下来要邀请大伙儿来唱戏了。等等,唱什么戏?还得有剧本。

我的成本高企,怎么优化呢?经过我们深入调研,总结出降本“六脉神剑”(其实不止六种)。

  • 一脉:下线。对于无用的数据,直接下线,最直截了当。那么如何判定“无用”呢,这依赖于我们强大的“血缘”追踪能力。系统会自动采集数据的链路流转以及使用情况,结合一定规则,判定疑似无用的数据,并区分中高低档。当然,最终是否可下线,还需要人确认。因此,这点可以总结为人机结合。
  • 二脉:延迟启动。前面我们讲过分时计费,那么自然地想到“错峰执行”,利用闲暇时段执行不重要的任务,还能获得“折扣”。系统会挑出在黄金时段运行的非重要任务,推荐延迟启动(这个可以分阶段做)。
  • 三脉:高频转低频。很典型的例子,小时级任务一天运行24次,是否有必要,能否降低频率,是不是天级就够了。有些任务甚至不需要每天跑,隔三差五就行。实际推进过程中,我们发现了不少这样的例子。
  • 四脉:替换。比如,有许多数据由于历史原因,已经不再维护,可以用另一个替换(成本更低);有多个功能相似的任务,可以合为一个。这类优化不仅可以降本,还能节省运维、答疑成本。
  • 五脉:任务调优。对于hive任务,是否有任务倾斜?使用的数据量能否减少?语法使用能否优化?等等,这类优化需要具体问题具体分析。
  • 六脉:小文件合并。目前我们的任务支持spark和hive引擎执行,spark不能自动进行文件合并,有些任务并行度高,会产生过多小文件。对于这类case,hive有文件合并策略,能大幅减少文件数,提高task的利用率,节省资源。

除了以上优化点,其实还有很多,这里也不展开了。比如我们强大的数仓团队,使用hive cube能将多个中间层表一次计算得出,降低数倍计算量。

系统上我们做了很多配套服务,方便降本,也保障过程安全可控。同时对于哪些自主发起,系统监控不到的降本行为,也提供了“登记”功能,便于追踪和分析效果。

五、降本运营

降本的一切准备就绪,好像天衣无缝,但是我们发布了功能,反应平平啊,导演有点慌。不行,得想办法让机制运转起来,我们总结了四词真言:宣导、骚扰、反馈、奖惩。

首先是宣导,宣传成本意识,引导降本行动。

  • 在系统数据的详情页、个人工作台等地方,呈现成本相关信息,引起关注
  • 日常工作中,月会周会强调成本浪费问题
  • 发送成本账单给个人和TL等

其次是骚扰,主动出击推动降本。

  • 抓成本大户,给予足够的“关怀”
  • 对于高耗能数据,着重关注和优化
  • 建立迭代项目,以周为单位把相关人员聚集,集中开展优化

再次是反馈,平台与用户互动起来。

  • 注重降本过程体验,保证便利性,兼顾安全性
  • 行为可跟踪,体现降本成果,平台监控之外的降本动作,也可以登记
  • 推进过程中,探索和收集更多降本点,逐步完善覆盖面

最后是奖惩,鼓励减少浪费。

  • 必不可少的是榜单,“降本之星”和“降本潜力股”,分别作为红黑榜
  • 给每月降本top3的小伙伴发放有赞币
  • 公共场所秀成果,表扬和激励
  • 限制数据开发、任务发布(这条属于惩罚性措施,小伙伴们都比较积极,目前还没用到)

总之:降本意识靠宣导,成本大户要骚扰,既要用户多反馈,也要奖惩做到位。

以上之外,平台本身也需要对降本做全方面的统计监控,我们有专门的看板辅助运营。

六、总结展望

6.1 总结

经过半年的努力,我们建立起完善的离线数据降本机制。

半年以来,参与到降本行动的小伙伴有40人,降本行为660次,累计节省约17%离线集群成本。更可喜的是,有超过20%的节省是自主自发完成的。

机制的有效性得以验证,并可以持续产生效益,后续我们会更关注运营,让整个过程更高效。

6.2 展望

在降本方面,我们迈出了第一步,未来有几个重点事情:

  • 解决已知问题,精细化运营,提升效率和效益
  • 扩大战线,跳出离线集群,扩大成本运营覆盖面
  • 将成本归属至业务,知道钱花在哪,“对外”算账
  • 建立数据价值评估体系,知道投入,也要知道“产出”,这也是一个充满未知和挑战的方向
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有赞coder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
存储成本降低80%,有赞数据中台成本治理怎么做的?
从整体的资源角度看,有赞数据中台机器数量在 1500 台左右,其中大部分是物理机,也有一部分是虚拟机,同时有 100 个左右的应用、4 万个核,数据规模在 15 PB 左右。
腾讯云开发者
2020/08/05
7.8K0
kubernetes 降本增效标准指南|ProphetPilot:容器智能成本管理引擎
田奇,腾讯云高级工程师,专注大规模离在线混部,弹性伸缩,云原生成本优化,熟悉Kubernetes,关注云原生大数据、AI。 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务。 前言 随着 Kubernetes 的普及,企业已经普遍接受了容器,正在向云原生演进。但是当前的 Kubernetes 只解决云原生的第一步(Day 1),就是利用容器编排调度和声明式API等,来解决资源获取、应用部署、高可用容灾、基础运维等难题。但是目前采纳 Kubernet
腾讯云原生
2021/07/27
1.3K0
50W+小程序开发者背后的数据库降本增效实践
作为国内第一款云原生 Serverless 数据库,TDSQL-C 目前仅在微信生态上就为超过 50W 小程序开发者提供数据库底座,凭借按量计费、超强弹性、存算分离等特性,能有效降低用户的数据库使用成本。
石云升
2022/08/25
1.4K0
50W+小程序开发者背后的数据库降本增效实践
助力降本增效,腾讯云大数据DLC推出智能洞察功能
腾讯云数据湖计算 DLC 提供敏捷高效的 Serverless 数据湖分析与计算服务,作为分布式计算平台,其查询性能受到多项内外部因素影响,例如:引擎 CU 规模、同时提交排队的任务数量、SQL 编写形式、Spark引擎参数设置等。因此,在任务实际使用过程中,用户往往会面临大量的Spark性能调优问题,及因为作业或SQL编写不正确而产生的排障问题。原生Spark UI中虽然能够一定程度获取任务的相关问题,但仍需要用户具备一定的Spark使用经验与运维能力才定位分析问题,无法做到简易的多维感知,快速定位发现任务的潜在问题。
腾讯QQ大数据
2024/08/19
2910
助力降本增效,腾讯云大数据DLC推出智能洞察功能
【腾讯云Finops Crane集训营】降本增效神器Crane实战记录
这段时间有幸参与了一下腾讯Finops Crane集训营的Crane公开体验训练营。
程序员洲洲
2024/06/07
3080
【腾讯云Finops Crane集训营】降本增效神器Crane实战记录
大数据平台:计算资源优化技术&作业诊断
大数据平台的资源管理组件主要针对存储资源与计算资源进行分析优化。前文《大数据平台:资源管理及存储优化技术》主要介绍了存储资源优化,本文主要介绍大数据平台构建过程中,计算资源相关的优化技术。
Yiwenwu
2024/05/03
7710
大数据平台:计算资源优化技术&作业诊断
Redis详解(6)性能监控:问题分析和优化
尤其redis这类敏感的纯内存、高并发和低延时的服务,一套完善的监控告警方案,是精细化运营的前提。
黄规速
2022/04/14
3.5K0
Redis详解(6)性能监控:问题分析和优化
年均节省千万元的大数据成本管控体系,是如何构建的?| ArchSummit
企业降本增效是越来越热门的话题,除去较为粗暴的“毕业”之外,企业还可以在许多地方下功夫,例如降低大数据成本、营销成本、运营成本等等。在 ArchSummit 全球架构师峰会深圳站上,我们邀请了货拉拉大数据架构负责人王海华,他为我们分享了《货拉拉基于混合云的大数据成本管控体系建设实践》,本文为其演讲整理,期待你可以有所收获。 大家好,我是王海华,货拉拉基础架构负责人,我将从以下几方面展开分享。首先是背景与挑战;其次是大数据成本管理体系;接着是存储成本优化和计算成本优化技术细节;最后是总结与展望。 背景与挑
深度学习与Python
2023/03/29
1.2K0
年均节省千万元的大数据成本管控体系,是如何构建的?| ArchSummit
kubernetes 降本增效标准指南| 资源利用率提升工具大全
王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务。 晏子怡,腾讯云容器产品经理,在Kubernetes 弹性伸缩、资源高效利用领域有丰富的实战经验。 背景 公有云的发展为业务的稳定性、可拓展性、便利性带来了极大帮助。这种用租代替买、并且提供完善的技术支持和保障的服务,理应为业务带来降本增效的效果。但实际上业务上云并不意味着成本一定减少,还需适配云上业务的应用开发、架构设计、管理运维、合理使用等多方面解决方案,才能真正助力业务的降本增效。在《Ku
腾讯云原生
2021/04/09
3K1
生气!能省 50% 成本,为啥你不早点让我用 HPA
原文 https://www.chenshaowen.com/blog/how-to-set-hpa-for-kubernetes-app.html
陈少文
2023/06/09
4770
生气!能省 50% 成本,为啥你不早点让我用 HPA
【Dr.Elephant中文文档-6】度量指标和启发式算法
我们将作业的资源使用量定义为任务容器大小和任务运行时间的乘积。因此,作业的资源使用量可以定义为mapper和reducer任务的资源使用量总和。
一条老狗
2019/12/26
1.3K0
腾讯云流计算 Oceanus:新版弹性方案,助力实时业务降本超30%
进入大数据时代,数据量呈爆炸式增长,传统批处理计算模式难以满足日益增长的实时性需求。数据实时化已经成为数字经济时代的必然趋势。实时计算作为一种能够持续处理数据流的技术,能够以毫秒级延迟提供计算结果,为实时分析、风控、推荐等应用场景提供强有力的支持。
腾讯QQ大数据
2024/06/24
3520
腾讯云流计算 Oceanus:新版弹性方案,助力实时业务降本超30%
成本最高降低70%,腾讯大规模业务集群的云原生成本优化实践!
唐聪,腾讯云容器技术专家,极客时间专栏《etcd实战课》作者,开源项目kstone和crane内部雏形版 founder,etcd活跃贡献者,主要负责腾讯云大规模k8s和etcd平台稳定性和性能优化、业务集群成本优化、有状态服务容器化等产品研发设计工作。 背景 2021年下半年以来,在新冠疫情和互联网政策的冲击之下,各大互联网公司都在进行降本增效。降本增效的一大核心手段就是优化计算资源成本,本文将以腾讯某内部 Kubernetes/TKE 业务为案例,详细阐述如何从 0到1(成本数据采集与分析、优化措施、行
腾讯云原生
2022/07/01
3.1K0
成本最高降低70%,腾讯大规模业务集群的云原生成本优化实践!
【腾讯云 Finops Crane集训营】Finops Crane究竟能为我们带来什么价值和思考?深入探究Crane
最近报名参加了腾讯大型开源项目Finops Crane的集训营,深入了解并实践运用了关于Crane的一系列功能。云计算以及云平台是未来服务部署的主流趋势,可以在成本条件限制下极大节省运行部署成本。因此关于云计算平台的一系列计算我都十分感兴趣,而Crane能够在云原生发展火热的状态下作为大型开源项目,提供学习渠道以及实践,是一件十分有意义的事情。本篇文章将带大家了解Crane以及了解Crane能够帮助我们在哪些业务场景下解决困难,以及我们该如何使用Crane和部署服务。
fanstuck
2025/01/21
2820
【腾讯云 Finops Crane集训营】Finops Crane究竟能为我们带来什么价值和思考?深入探究Crane
深入探索PostgreSQL优化器的代价模型(建议收藏)
优化器的代价模型(Cost Model)是数据库查询优化器用于评估不同查询执行计划的代价,并选择最优执行计划的重要核心部分。PostgreSQL 的代价模型通过估算查询执行时的各种操作(如顺序扫描、索引扫描、连接等)的成本,来确定最有效率的查询执行路径。
PawSQL
2024/09/10
2270
深入探索PostgreSQL优化器的代价模型(建议收藏)
Kubecost | Kubernetes 开支监控和管理🤑🤑🤑
昨天浏览 Kubectl 插件的时候发现了 Kubecost,一看惊为天人啊,这个功能对于运营团队和 PM 团队领导来说太重要了。直接把监控数据换算成钱,而且明确告诉你钱花在哪个 namespace、哪个应用、哪个标签、哪个 deployment下,明确告诉你那些钱花得值、哪些钱浪费了,有哪些办法可以减少浪费… 真的都是实打实的「降本」功能。
东风微鸣
2022/04/22
1.8K0
Kubecost | Kubernetes 开支监控和管理🤑🤑🤑
52家企业,48家要降本:FinOps 能否拯救“下云潮”
“2020 年起,我们走访了很多客户,发现大家云资源的使用其实并不是很好,浪费很严重。”腾讯云 FinOps 产品负责人孟凡杰说道。今年初的一个月,腾讯云原生团队集中走访的 52 家客户中,48 家有降本需诉求,企业不只关心产品新能力,反而对降本能力更感兴趣。
深度学习与Python
2023/08/09
3450
52家企业,48家要降本:FinOps 能否拯救“下云潮”
FinOps LCComputing 成本优化
LCComputing是Low Carbon Computing(低碳计算)的缩写,我们致力于帮助客户节省30%以上的服务器/云资源成本,提升利用率,促进碳中和,成为FinOps领域全球领先的公司。
iginkgo18
2023/07/01
4950
腾讯云流计算Oceanus:首创弹性包年包月集群,助力流量波动业务降本20%
在实际业务场景中,很多客户的作业存在波动,资源需求有固定和弹性部分,包年包月和按量计费模式无法很好地贴合业务场景。腾讯云大数据流计算 Oceanus 首创弹性包年包月计费模式,打破了传统计费模式的局限性,为用户提供更加灵活、高效的计费方案。灵活应对业务波动,平均降低资源成本两成!
腾讯QQ大数据
2024/07/29
2730
腾讯云流计算Oceanus:首创弹性包年包月集群,助力流量波动业务降本20%
来自一线大厂的云原生成本优化实践指南
近年来,公有云、混合云等技术在全球迅速发展,云的普及度越来越高,Docker、Kubernetes、DevOps、Service Mesh 等云原生技术蓬勃发展。但在“上云”之后,企业却往往发现“用云”并没有那么容易。
深度学习与Python
2022/01/20
1.1K0
来自一线大厂的云原生成本优化实践指南
推荐阅读
相关推荐
存储成本降低80%,有赞数据中台成本治理怎么做的?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档