MaxCompute2.0索引优化实践

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 摘要:2017云栖大会阿里云大数据计算服务(MaxCompute)专场,阿里云高级专家戴谢宁带来MaxCompute的索引与优化实践分享。本文主要从MaxCompute数据模型开始谈起,接着分享了哈希分片和区域分片,着重分析了索引优化和join优化,并且列出了应用实例,最好作出了简要总结。

摘要:2017云栖大会阿里云大数据计算服务(MaxCompute)专场,阿里云高级专家戴谢宁带来MaxCompute的索引与优化实践分享。本文主要从MaxCompute数据模型开始谈起,接着分享了哈希分片和区域分片,着重分析了索引优化和join优化,并且列出了应用实例,最好作出了简要总结。

 

以下是精彩内容整理:

MaxCompute 除了是计算引擎之外,它也是个存储引擎,阿里巴巴99%数据都在这个平台上。那么,怎么去优化存储效率,从而提高计算效率是我们一直努力的目标。

ae437d4c9e1812f5b12f7a0d63130ad572227f75


MaxCompute的数据模型


1b5721b5098f6f0b94000f3970b428f75250d1f3

目前MaxCompute的数据模型包括:项目,表,分区。在分区下,分区下没有定义数据组织方式,数据无序存放。

那么,在分区下能否通过定义数据分片、排序和索引提高效率?答案是肯定的。

在MaxCompute2.0中,我们提供了两种切片方式,哈希分片和区域分片。

哈希分片 Hash Clustering

1f6f62d9790eddcf4f14e14a2071a164a760a8c3

哈希分片是指用户在创建table时,可以指定几个column作键值的链,MaxCompute可以按照这几个column做hash function,将hash value相同的record记录放到同一个分片中去,不同的颜色代表不同的record出来相同的hash值。同时,我们通过语法定义每一个切片数据是不是要有序存放,如果指定sorted by 子句,就会要求数据排序存放。这样就会呈现出两个效果,一是在每个file里建立index,一是在分片以上还有top level index,上层索引信息规定了表有多少个分片、哈希方式是什么、依据哪几个列,这些都可以帮助到我们后面的查询。

区域分片 Range Clustering

9f289c3c63be8c636fb69e594f3c45c953f82574

区域分片比哈希分片更加灵活高级,它的基本思想是指定区域分片的column后,语法为range clustered by ,MaxCompute根据column值域分布作全排序,根据值域分布按照合理方式进行切分,切分的原则包括分片大小、分片差异合理化,减少并行处理时遇到的种种数据问题。图中9个record,我们对其进行全排序,把它切到四个片上,同样也有个sorted by 的子句指定每个分片数据如何存放,有序存放会建立两个级别的索引,一是文件级别索引,一是上层索引,上层索引维护了每个分片,每个分片对应某个range和区间。

基于索引的查询优化

c7eb702becf22b5dbf013bf949349188dfe6478d

那么如何进行优化呢?例如id<3,如果id列刚好是我做的数据分片和排序索引,谓词会下推到存储层,利用谓词信息去做过滤信息,首先会到上层索引做一级索引,一级索引拥有所有分片的信息,id<3查询条件很快可以确定把bucket2和bucket3两个分片去掉;同时,我们还可以将谓词推到文件下面去,bucket1中有小于3和等于3的,还可以在文件内部进一步过滤,将数据量再减少,如果没有做数据分片index之前,对于id<3 懂得查询,需要去扫整个表,把所有数据全部读一遍,现在不需要读整个表,直接可以通过index把一大堆数直接去掉,效率也是非常可观的。

27f7955f57b1942eec2eea809071210e26fe1d54

图为TPC-H Q6查询,TPC-H是数据库和大数据领域的标准测试集,我们在100GB的测试数据集上拿到了数据,左边时间是使用index的时间,右边是没有使用index的时间,可以看到提升了10倍左右,无论是query的执行时间,还是CPU的使用时间和IO的使用时间,都会大大减少,通过index减少了很多IO操作,减少了很多数据装载。

Join优化

47c3a15a87f160f9b06e75236dafb08b33c602fa

除了在filter上应用index,还有对join的优化。Sort merge join是指有两个数据源在一个机器上将数据join完,一般是将数据源用哈希方式分到N个分片中去,保证join key相同的record会落到相同的分片上,每个分片内部对两个数据源进行排序,排序后再做merge join,就可以把key值相同的找出来,这个过程很复杂,也非常耗时,需要将数据进行哈希运算,再把数据传到另外一个机器上去,你需要先写在一个机器上,另外一个机器再从机器上读取,需要二次磁盘IO,这个过程叫做data shuffle。

099ed647610af2af8edd0763e26a4307cce31dc0

如图,两个table scan从数据磁盘加载进来,streaming read和streaming write来做data shuffle,如果数据已经做完分片和排序,并且把组织结构都存放在磁盘上面,在做join时就不需要再进行shuffle和排序过程,这就是join优化。演化如右图,如果M1和M2已经做了哈希分片排序,可以直接做如图执行计划。

TPC-H Q4

2eee52a2c0a5002a33502ffdd91109a667b9db43

没有哈希分片之前,执行计划如右边图中所示,共有7个stage,多个join和shuffle过程,如果把表改成哈希分片表,并且在join key上做哈希分片,只需要3个stage即可完成,简化了执行计划,基本上都提升了2倍效率。

应用实例

淘宝交易记录查询

82cd59a3f889236df4b3462b228c227db12aace2

淘宝交易量巨大,百亿级甚至千亿级的数据,查找单笔订单信息,这是一个大海捞针的操作。原有系统在改造以前执行如图,共有一千多个worker去扫描表,400多亿条记录,最后找到26条记录,共用1分48秒。

213a687bb9fa8398e7bb0248479f3887298c2e01

以id为主键,对表进行数据哈希切片排序,同样查询只需要4个mapper,扫描一万条记录6秒钟即可。

淘系交易表增量更新

e4ad0d16ad9363cdcc86d56dd97ee69624cc39c5

淘宝中有核心交易表,这是集团内部很多BU都会引用的数据来源,对它的正确性要求非常高。我们经常会有增量更新的操作,按周期性以增量表数据插入或者更新到原来表中,全量表数据量巨大,记录数在百亿、千亿,增量表可能是十分之一甚至百分之一,每次更新需要对原表和增量表进行shuffle,非常耗时。图中M1和M2在做增量表的shuffle和全量表的shuffle,增量表需要1分49秒,全量表共用2000个worker做了33分钟。

b8938e2adb9101aa956a514c84aa1c96336cffe3

全量表哈希分片后排序存储,更新时只需要按增量表shuffle,避免了对全量表的多次shuffle,整个join执行时间从60分钟降低到22分钟。

总结

我们通过对数据进行分片和排序,并建立索引,MaxCompute可以更好的理解数据。

查询条件谓词下推,减少了表扫描的IO量,以及运行时过滤操作的时间。

利用数据分片和排序特性,直接避免了多次对数据Shuffle的操作,简化了执行计划,节约资源,节省时间。


6c4b69af9fd1b465628b63fcee73224de0b62357


MaxCompute招聘信息:DT时代,与坚持梦想者同行!


阿里巴巴大数据-玩家社区 https://yq.aliyun.com/teams/6/

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

bba01b493e1c5d904e882b1c380673c6ebe49a98

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
20天前
|
资源调度 安全 Java
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
45 0
|
3月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
142 0
中国联通网络资源湖仓一体应用实践
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
本文围绕基于 Java 的大数据分布式存储在视频监控数据管理中的应用展开,分析管理现状与挑战,阐述技术应用,结合案例和代码给出实操方案。
|
机器学习/深度学习 数据采集 算法
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
本文围绕 Java 大数据机器学习模型在金融衍生品定价中的应用展开,分析定价现状与挑战,阐述技术原理与应用,结合真实案例与代码给出实操方案,助力提升金融衍生品定价的准确性与效率。
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
|
2月前
|
Cloud Native 大数据 Java
大数据新视界--大数据大厂之大数据时代的璀璨导航星:Eureka 原理与实践深度探秘
本文深入剖析 Eureka 在大数据时代分布式系统中的关键作用。涵盖其原理,包括服务注册、续约、发现及自我保护机制;详述搭建步骤、两面性;展示在大数据等多领域的应用场景、实战案例及代码演示。Eureka 如璀璨导航星,为分布式系统高效协作指引方向。
|
4月前
|
SQL 分布式计算 数据挖掘
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
川航选择引入 SelectDB 建设湖仓一体大数据分析引擎,取得了数据导入效率提升 3-6 倍,查询分析性能提升 10-18 倍、实时性提升至 5 秒内等收益。
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
|
4月前
|
存储 安全 数据挖掘
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
天翼云基于 Apache Doris 成功落地项目已超 20 个,整体集群规模超 50 套,部署节点超 3000 个,存储容量超 15PB
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
|
4月前
|
SQL 存储 消息中间件
vivo基于Paimon的湖仓一体落地实践
本文整理自vivo互联网大数据专家徐昱在Flink Forward Asia 2024的分享,基于实际案例探讨了构建现代化数据湖仓的关键决策和技术实践。内容涵盖组件选型、架构设计、离线加速、流批链路统一、消息组件替代、样本拼接、查询提速、元数据监控、数据迁移及未来展望等方面。通过这些探索,展示了如何优化性能、降低成本并提升数据处理效率,为相关领域提供了宝贵的经验和参考。
656 3
vivo基于Paimon的湖仓一体落地实践
|
4月前
|
SQL 分布式计算 运维
StarRocks 在爱奇艺大数据场景的实践
本文介绍了爱奇艺大数据OLAP服务负责人林豪在StarRocks年度峰会上的分享,重点讲述了爱奇艺OLAP引擎的演进及引入StarRocks后的显著效果。在广告业务中,StarRocks替换Impala+Kudu后,接口性能提升400%,P90查询延迟缩短4.6倍;在“魔镜”数据分析平台中,StarRocks替代Spark达67%,P50查询速度提升33倍,P90提升15倍,节省4.6个人天。未来,爱奇艺计划进一步优化存算一体和存算分离架构,提升整体数据处理效率。
StarRocks 在爱奇艺大数据场景的实践
|
5月前
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
本文整理自鹰角网络大数据开发工程师朱正军在Flink Forward Asia 2024上的分享,主要涵盖四个方面:鹰角数据平台架构、数据湖选型、湖仓一体建设及未来展望。文章详细介绍了鹰角如何构建基于Paimon的数据湖,解决了Hudi入湖的痛点,并通过Trino引擎和Ranger权限管理实现高效的数据查询与管控。此外,还探讨了湖仓一体平台的落地效果及未来技术发展方向,包括Trino与Paimon的集成增强、StarRocks的应用以及Paimon全面替换Hive的计划。
472 1
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目

相关产品

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