精打细算使用MaxCompute搭建数仓

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外,还能在费用上节省下一大笔前。墨迹天气使用MaxCompute,除了性能和稳定性也有提升外,整体存储和计算的费用比之前节省70%。这是如何做到的呢,这里有一些常用的规则。

MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外,还能在费用上节省下一大笔前。墨迹天气使用MaxCompute,除了性能和稳定性也有提升外,整体存储和计算的费用比之前节省70%。这是如何做到的呢,这里有一些常用的规则。

在讨论如何做到之前,我们先看下MaxCompute是如何计费的。根据目前的文档,目前的计费方式包含数据的存储、数据的下载以及计算费用。其中计算费用又分I/O后付费和预付费两种收费模式。I/O后付费根据实际的计算来进行收费;而预付费相当于包了几个CU只有购买者可以使用,这几个CU上随便怎么计算都不会产生计算费用。所以如何减少费用,也就是转换成如何减少存储的费用、如何减少下载的费用以及如何减少计算的费用。

存储

数据存储在MaxCompute上是使用列式存储并有压缩的,底层数据存储方式不需要用户自己维护。但是用户可以通过减少存储在MaxCompute上的数据量来减少存储的费用。可以通过及时删除不需要的数据来减少存储费用。这里需要推荐用一个叫生命周期(lifecycle)的功能来定时回收过期的数据。设置了生命周期后,如果是分区表,分区表里的某个分区如果在指定的时间内数据没发生变更,系统会认为这个分区已经不需要了,会自动删除这个分区。如果是非分区表的话,指定的时间内没有数据变化就会删除这整张表。这个功能可以用来配置到一些历史记录表上,比如说如果不想要一年之前的历史记录,可以把表根据写入时间做分区,然后设置生命周期为一年。数据写入的时候,每天数据只写入到当天的那个分区里。一年后,之前的数据因为一整年都没有数据写入,触发生命周期的条件,并后台定时作业删除对应的分区里的数据。

在实际使用中,除了因为没及时删除过期不要的历史记录造成的额外的存储费用外,更多的是因为对数据的管理不到位导致的一些不需要的表一直没删除导致的空间占用。仔细想想,在做查询的时候使用Create table xx as select先存了一些临时表,用好没删除一直放着占用从存储空间,这种事情应该每个人都做过一些。但是如果你真的要去找找哪些数据需要删除,哪些数据是业务数据不能动的时候,对着list tables;出来的几百几千张表也是很无从下手吧。对数据仓库做好分层,做好命名规范,对于每一层根据使用需要配置不同的生命周期回收策略,用一个好的数据管理来保证数据仓库的表的有序存储,不仅能节省一笔存储的钱,也能在实际使用的时候,快速找到需要的表,便于数据的管理和使用。而如果有一些计算过程产生的临时表,后续又确定用不到的,可以在计算结束及时删除。具体可以参考祎休写的基于阿里云数加的企业大数据仓库架构建设思路有比较详细的说明。

下载

下载数据并非全部都会收费的,有一些情况下数据下载也不会产生费用。合理利用这些规则,选择正确的下载方式就能减少下载的费用(而且下载不收费的方式也正好是下载最快的方式)。具体的规则可以参考文档

另外下载的费用,还和下载的文件的大小有关系。通过合理的表结构设置和数据生成方式,把每次需要下载的数据放到一张表(或一个分区)里,减少下载量也是减少费用的一种策略。比如说需要下载3年级的学生信息的时候,下载全部的学生信息后再执行过滤,肯定比不过先根据年级对学生进行分区,然后只下载3年级的分区来的方法好。

计算

计算里需要注意的相对会多一些。不过我们还是先看看计算的费用和什么有关。先说I/O后付费,现在暂时还只是收取了SQL的费用,所以本文也只讲SQL的部分。看到SQL的费用是根据输入的数据量和SQL的算法复杂度有关的。

计算引擎在计算的时候,合理设置表的分区字段可以减少数据的输入量。关于分区可以参考这里。计算引擎在做执行计划解析的时候,如果发现查询过滤条件是用分区字段做过滤的时候,可以只读计算涉及的分区的数据,从而减少输入的数据量。

除了减少输入的数据量,减少计算复杂度也是一种方法。算法复杂度的优化一般涉及到代码层面的优化,而且有时候需要和业务结合起来。比如前面已经有过一些数据预处理知道本次计算的数据某个字段没有重复,那这次计算的时候就可以少加一次distinct或者group by。通过代码层面结合业务逻辑,一起优化SQL语句减少计算的复杂度,是减少计算费用的一种方法。

另外减少计算的次数也是一种方法。比如某几个计算都需要用到某个实时表的数据,而且都是在某种过滤和汇总之后的再加工,那完全可以把中间可以复用的计算过程保存下来,在数据仓库上做适量的轻度汇总甚至高度汇总。后续的计算可以拿汇总数据再做进一步的计算。这样虽然中间多存了一些数据,但是后续的计算的时候可以少算一些逻辑。这是数据仓库里经常用到的空间换时间的方法。配合之前提到的生命周期,可以用最小的存储费用的代价获得最大的计算费用的减少。当然合理利用这种方法,除了可以减少计算费用外,因为减少重复计算,也可以减少计算的时间提高效率。

除了以上提到的这些,也可以考虑后付费的方式来跑计算,也就是计算费用是包年包月的。一般来说,满足以下条件可以考虑使用后付费

  1. 任务大部分是周期任务,任务量比较均匀。如果任务以偶发性的临时查询为主可能不合适用后付费
  2. 任务的提交事件比较分散,如果都集中在某个时间点一起算的,也不太合适
  3. 经过一段时间的试运行,任务数量已经基本可以估计,不会短期内有比较的明显的增加或者减少

如果不满足这些 条件,者很容易出现在高峰期购买的CU不够用,任务出现排队;低谷的时候资源又利用不起来,造成浪费。

其他

关于费用,其实还有两个非常关键的问题

  1. 我每天都花了多少钱,如何优化?
    可以参考这里,看看每天的账单,通过检查里面的计算、存储和下载分别产生了多少费用。从而从对应的角度去做优化。另外也可以在表格里做金额的排序,看看金额最高的几笔费用是什么费用,看看能否针对性做一些优化。
  2. 我这个SQL提交后会产生多少费用?
    如果产生的费用都不清楚,那提交一个SQL时心里是没底的。在大数据开发套件的数据开发里,跑SQL会跳出消费提醒,从而提前知道提交后会产生的费用。如果发现金额特别高,可以考虑先做一些优化后再提交以免产生不必要的费用。如果是直接在MaxCompute客户端里跑SQL的话,可以用cost sql <SQL Sentence>;估算SQL的费用。
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
6月前
|
数据采集 大数据
大数据实战项目之电商数仓(二)
大数据实战项目之电商数仓(二)
163 0
|
6月前
|
SQL 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之湖仓加速版查询maxcompute外部表,有什么优化途径吗
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
5月前
|
数据采集 运维 Cloud Native
Flink+Paimon在阿里云大数据云原生运维数仓的实践
构建实时云原生运维数仓以提升大数据集群的运维能力,采用 Flink+Paimon 方案,解决资源审计、拓扑及趋势分析需求。
18531 54
Flink+Paimon在阿里云大数据云原生运维数仓的实践
|
7月前
|
存储 SQL 分布式计算
闲侃数仓优化-大数据治理和优化
闲侃数仓优化-大数据治理和优化
79 0
|
4月前
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
168 1
|
4月前
|
存储 运维 Cloud Native
"Flink+Paimon:阿里云大数据云原生运维数仓的创新实践,引领实时数据处理新纪元"
【8月更文挑战第2天】Flink+Paimon在阿里云大数据云原生运维数仓的实践
295 3
|
4月前
|
分布式计算 关系型数据库 Serverless
实时数仓 Hologres产品使用合集之如何将ODPS视图表数据导入到Hologres内表
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
4月前
|
存储 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之创建外部表时提示不支持ODPS的datetime数据类型,该怎么解决
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
7月前
|
存储 数据采集 算法
大数据平台治理——运营的角度看数仓
大数据平台治理——运营的角度看数仓
64 0
|
7月前
|
存储 数据挖掘 大数据
大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
数据仓库建模是组织和设计数据以支持数据分析的过程,包括ER模型和维度建模。ER模型通过实体和关系描述数据结构,遵循三范式减少冗余。维度建模,特别是Kimball方法,用于数据仓库设计,便于分析和报告。事实表存储业务度量,如销售数据,分为累积、快照、事务和周期性快照类型。维度表提供描述性信息,如时间、产品、地点和客户详情。数仓通常分层为ODS(源数据)、DWD(明细数据)、DIM(公共维度)、DWS(数据汇总)和ADS(应用数据),以优化数据管理、质量、查询性能和适应性。
1975 3

热门文章

最新文章