简介:Hologres技术揭秘系列继续更新中,本期咱们将带来Hologres高性能原生减速查问MaxCompute的技术原理解析。

Hologres(中文名交互式剖析)是阿里云自研的一站式实时数仓,这个云原生零碎交融了实时服务和剖析大数据的场景,全面兼容PostgreSQL协定并与大数据生态无缝买通,能用同一套数据架构同时反对实时写入实时查问以及实时离线联邦剖析。它的呈现简化了业务的架构,与此同时为业务提供实时决策的能力,让大数据施展出更大的商业价值。从阿里团体诞生到云上商业化,随着业务的倒退和技术的演进,Hologres也在继续一直优化核心技术竞争力,为了让大家更加理解Hologres,咱们打算继续推出Hologres底层技术原理揭秘系列,从高性能存储引擎到高效率查问引擎,高吞吐写入到高QPS查问等,全方位解读Hologres,请大家继续关注!

往期精彩内容:

  • 2020年VLDB的论文《Alibaba Hologres: A cloud-Native Service for Hybrid Serving/Analytical Processing
  • Hologres揭秘:首次公开!阿里巴巴云原生实时数仓核心技术揭秘
  • Hologres揭秘:首次揭秘云原生Hologres存储引擎
  • Hologres揭秘:Hologres高效率分布式查问引擎

本期咱们将带来Hologres高性能原生减速查问MaxCompute的技术原理解析。

随着数据收集伎俩不断丰富,行业数据大量积攒,数据规模已增长到了传统软件行业无奈承载的海量数据(TB、PB、EB)级别,MaxCompute(原名ODPS)也因而应运而生,致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及剖析建模服务,是一种疾速、齐全托管的EB级数据仓库解决方案。

Hologres在离线大数据场景上与MaxCompute人造无缝交融,无需数据导入导出就能实现减速查问MaxCompute,全兼容拜访各种MaxCompute文件格式,实现对PB级离线数据的毫秒级交互式剖析。而这所有的背地,都离不开Hologres背地的执行器SQE(S Query Engine),通过SQE实现对MaxCompute的Native拜访,而后再联合Hologres高性能分布式执行引擎HQE的解决,达到极致性能。

Hologres减速查问MaxCompute次要有以下几个劣势:

  • 高性能:能够间接对MaxCompute数据减速查问,具备亚秒级响应的查问性能,在OLAP场景能够间接即席查问,满足绝大多数报表等剖析场景。
  • 低成本:MaxCompute通过数年的倒退,用户在MaxCompute上存储了大量数据,不须要冗余一份存储可间接进行拜访;另一方面用户能够只需将局部高性能场景的数据迁徙到SSD上,报表等剖析场景的数据能够存储在MaxCompute进一步降低成本。
  • 更高效:实现对MaxCompute的Native拜访,无需迁徙和导入数据,就能够高性能和全兼容的拜访各种MaxCompute文件格式,以及Hash/Range Clustered Table等简单表,升高用户的应用老本。

SQE 架构介绍

如上图所示是SQE的整体架构,能够看出整个架构也是非常简单。MaxCompute的数据对立存储在Pangu,当Hologres执行一条Query去减速查问MaxCompute的数据时,在Hologres端:

  • Hologres Frontend通过RPC向SQE Master申请获取Meta等相干信息。
  • Hologres Blackhole 通过 RPC 向 SQEExecutor 申请获取具体的数据相干信息。
  • SQE由两种角色的过程组成:
  • SQE Master负责解决Meta相干的申请,次要负责获取表、分区元数据、鉴权以及文件分片等性能。
  • SQE Executor作为SQE的外围,负责具体读取数据申请,波及Block Cache、预读取、UDF 解决、表达式下推解决、索引解决、Metric、Meter等等性能。

MaxCompute表面引擎外围技术创新

基于SQE的架构,能做到对MaxCompute的数据高性能减速查问,次要是基于以下技术创新劣势:

1)形象分布式表面

联合MaxCompute的分布式个性,Hologres形象了一个分布式的表面,来反对拜访MaxCompute分布式数据。目前可反对拜访跨集群的MaxCompute分布式盘古文件,并按MaxCompute计算集群就近读取。

2)和 MaxCompute Meta无缝互通,反对带版本的元数据缓存

SQE和MaxCompute 的 Meta 无缝互通,能够做到 Meta 和 Data 实时获取,反对通过Import Foreign Schema命令,主动同步MaxCompute的元数据到Hologres的表面,实现表面的主动创立,构造自动更新。

3)反对UDF/表达式下推

SQE 通过反对 UDF/表达式下推,来实现用户自定义的UDF计算;将表达式下推能够缩小无用的数据传输带来的开销,进一步晋升性能。

4)异步ORC Reader,异步prefetch

目前MaxCompute大部分数据为ORC格局,在Hologres V0.10及以上版本,Hologres更新了执行引擎,应用异步 Reader 进行更高效的异步读取,还反对异步prefetch,进一步升高读取提早;此外Hologres反对了 IO 合并、LazyRead、Lazy Decoding 等一些列的优化技术手段,来升高在 IO 在整个查问上的提早,以带来极致性能。

5)反对Block Cache

为了防止每次读数据都用IO到文件中取,SQE同样应用BlockCache把罕用和最近用的数据放在内存中,缩小不必要的IO,放慢读的性能。在同一个节点内,通过一致性Hash实现将雷同拜访的数据共享一个Block Cache。 比方在Scan 场景可带来2倍以上的性能晋升,大大晋升查问性能。

6)常驻过程,缩小调度开销

传统的过程模型等架构须要动静实时的创立过程等调度操作,带来了较大的调度开销。SQE 采纳常驻过程模式,防止不必要的调度开销,此外还能够大大晋升Block Cache的命中率和无效使用率。

7)Network Shuffle,缩小落盘开销

Network Shuffle须要提供一种疾速且稳固的容错机制。因为Network Shuffle必须保障发送端和接收端过程同时alive能力实现数据shuffle。同样的,如果采纳传统落盘的形式来进行Network Shuffle的Retry,尽管可能保障稳定性,然而可能会在Retry过程中因为磁盘IO引入比拟大的性能overhead。为了解决这个问题,咱们优化了分阶段调度来解决疾速稳固的容错问题。

MaxCompute表面引擎降级到HQE

下面提到了咱们通过SQE进行减速查问MaxCompute表面,通过SQE查问时性能能够做到很好,然而和Hologres交互时两头会有一层RPC 交互,在数据量较大时网络会存在肯定瓶颈。

因而咱们基于Hologres已有的能力,在Hologres V0.10及以上版本咱们对执行引擎进行了优化,反对Hologres HQE查问引擎直读MaxCompute 表,在性能上失去进一步的晋升,较SQE形式读取有 30%以上的性能晋升。

这次要得益于以下几个方面:

1) 节俭了 SQE 和 Hologres两头 RPC 的交互,相当于节俭一次数据的序列化和反序列化,在性能上失去进一步的晋升。

2) 能够复用Hologres的Block Cache,这样第二次查问时无需拜访存储,防止存储IO,间接从内存拜访数据,更好的减速查问。

3) 能够复用已有的Filter 下推能力,缩小须要解决的数据量。

4) 在底层的IO层实现了预读和Cache,更进一步减速Scan时的性能。

以下是某客户某理论在线业务查问的性能数据:

E2E运行工夫SQL NumSQE查问性能(均匀响应)HQE查问性能(均匀响应)性能晋升
2-10s5474,956 ms2,609 ms+47.34%
10-30s20716,757 ms5,457 ms+67.43%
30s以上6378,686 ms12,666 ms+83.90%
Total81713,631 ms4,106 ms+69.87%
执行817个SQL,总体性能晋升70%,其中长 Query 晋升80%以上。阐明:该优化目前已在Hologres V0.10上线,欢送点击查看文档应用。# MaxCompute减速场景抉择在Hologres中减速查问MaxCompute有两种形式:1)创立表面(数据还是存储在MaxCompute中),性能相比在MaxCompute中查问会有2-5倍的晋升2)导入内表,性能相比表面约有10-100倍的晋升创立表面的形式其原理就是PostgreSQL中的Foreign Data Wrappers,通过内部拜访接口,来拜访存储在内部的数据。倡议您应用更不便的IMPORT FOREIGN SCHEMA 形式来创立表面,能够更好的简化元数据的同步,无需关注字段类型映射等。 间接建表面并的形式实际上是利用查问引擎的优化能力来提高效率的,然而没有利用到Hologres的索引能力。所以当把表面导到内表的时候,能够依据查问的形式指定内表的索引构造,通过这些索引能力带来更高的查问性能。这就是表面导入内表,内表的性能更好的起因,能够充分发挥数仓的索引优化能力。 目前这两种形式次要比照如下:
<span class="lake-fontsize-12">场景/维度</span><span class="lake-fontsize-12">性能</span><span class="lake-fontsize-12">存储老本</span><span class="lake-fontsize-12">数据量</span><span class="lake-fontsize-12">索引</span><span class="lake-fontsize-12">便捷性</span>
<span class="lake-fontsize-12">Hologres 内表</span><span>十分好</span><span>高</span><span>(SSD)</span><span>可反对PB级</span><span>可反对位图、聚簇等多种索引</span><span>须要导入数据</span>
<span class="lake-fontsize-12">Hologres 表面</span><span>较好</span><span>低</span><span>(HDD)</span><span>单次Query查问200GB</span><span>限度</span><span>只反对ODPS索引</span><span>无需迁徙和导入数据</span>
从下面比照能够看出:* 如果您是数据量很大、对性能有很高的要求时(比方100ms内等),对查问提早敏感,对查问有SLA要求时,建议您将数据导入Hologres内表,进行查问拜访。* 如果是临时性的探索性剖析,或者对提早不敏感的外部业务,能够应用MaxCompute表面形式,缩小数据挪动。* 除上述场景外,您能够依据具体业务状况抉择适合的应用场景。# MaxCompute与Hologres的组合关系下面介绍了很多Hologres表面查问引擎如何减速查问MaxCompute的场景,但并不是说所有类型的查问都适宜在Hologres的表面引擎上执行。Hologres是针对交互式剖析场景设计的同步的查问引擎,面向的是大数据进,小数据出的场景,典型用在Serving和Analytics的场景。而MaxCompute是针对海量数据加工解决解决场景设计的异步的数据加工引擎,面向的是大数据进,大数据出的场景,典型用在ETL的场景。在ETL的场景,作业异步提交,IO接口针对Scan优化,计算过程须要节点的冗余设计撑持高可用,须要计算状态落盘从而能够在失败时主动重试,而这些都是Hologres不具备的能力。因而MaxCompute+Hologres组合在一起,造成了数据加工+服务的一站式体验,缩小了数据的隔离和冗余,能够为大数据数仓提供正当的解决方案架构,撑持实时离线一体化的开发体验。# 总结Hologres通过SQE与MaxCompute深度整合,充分利用Hologres和MaxCompute的劣势,以极致性能为指标,间接就能减速查问MaxCompute数据,让用户更不便高效的进行交互式剖析,同时也升高了极大的剖析老本,实现离线数仓服务一体化。 作者简介:王奇(花名慧青),阿里巴巴技术专家,现从事交互式剖析引擎Hologres研发工作。后续咱们将会陆续推出无关Hologres的技术底层原理揭秘系列,具体布局如下,敬请继续关注! * Hologres揭秘:首次公开!阿里巴巴云原生实时数仓核心技术揭秘* Hologres揭秘:首次揭秘云原生Hologres存储引擎* Hologres揭秘:深度解析高效率分布式查问引擎* Hologres揭秘:高性能原生减速MaxCompute外围原理(本文)* Hologres揭秘:__如何实现MaxCompute与Hologres数据同步速度快百倍* Hologres揭秘:__如何反对高吞吐Upsert* Hologres揭秘:__如何反对在线服务场景的超高QPS* Hologres揭秘:__如何反对高并发查问* Hologres揭秘:__如何反对高可用架构* Hologres揭秘:__如何反对资源隔离,反对多种负载* Hologres揭秘:__向量检索引擎Proxima原理与应用实际* Hologres揭秘:__读懂执行打算,查问性能翻十倍* Hologres揭秘:__分布式系统如何设计Shard与Table Group* Hologres揭秘:__如何反对更多Postgres生态扩大包* Hologres揭秘:高吞吐写入Hologres的N种姿态* ...... 感谢您的浏览,也欢送应用体验Hologres,能够参考使用手册,同时也欢送扫码退出钉群进行技术交换:> 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。