简介:随同着大数据的倒退,以及直播等新媒体行业的衰亡,当初业务对实时场景的需要越发强烈,在面对高频迭代的业务需要中,如何可能确保实时、疾速的获取数据,辅助业务做好实时决策呢?看撑持阿里内外部业务场景实时数仓是如何运作的?云计算情报局带您解密实时数仓!
作者:金晓军(仙隐),阿里云资深技术专家,大数据畛域从业 10 年,现从事交互式剖析引擎 Hologres 设计与研发工作。
一、传统数仓痛点
1)传统数据仓库痛点
目前来说,大数据相干的业务场景个别有实时大屏、实时 BI 报表、用户画像和监控预警等,如下图所示。
- 实时大屏业务,个别是公司领导层做决策的辅助工具,以及对外成绩展现,比方双十一实时成交额大屏等场景。
- 实时 BI 报表,是经营和产品经理最罕用到的业务场景,实用于大部分的报表剖析场景。
- 用户画像,罕用在广告举荐场景中,通过更具体的算法给用户贴上标签,使得营销流动更加有针对性,更加无效的投放给指标人群。
- 预警监控大屏,比方对网站、APP 进行流量监控,在达到肯定阈值的时候能够进行报警。
对于下面这些大数据业务场景,业界在很早之前就开始通过数据仓库的建设来满足这些场景的需要,比拟传统的做法是如下图所示的离线数据仓库,其大抵流程就是:首先将各类数据收集起来,而后通过 ETL 解决,再通过层层建模对数据进行聚合、筛选等解决,最初在须要的时候基于应用层的工具对数据进行展示,或者生成报表。
下面这种形式尽管能够对接多种数据源,然而存在一些很显著的痛点:
- ETL 逻辑简单,存储、工夫老本过高;
- 数据处理链路十分长;
- 无奈反对实时 / 近实时的数据,只能解决 T + 1 的数据。
2)Lambda 架构痛点
随着实时计算技术的衰亡,呈现了 Lambda 架构。Lambda 架构的原理如下图所示,其思路其实是相当于在传统离线数仓的根底上再加上一个解决实时数据的层,而后将离线数仓和实时链路产生的数据在 Serving 层进行 Merge,以此来对离线产生的数据和实时产生的数据进行查问。从 2011 年至今,Lambda 架构被少数互联网公司所驳回,也的确解决了一些问题,然而随着数据量的增大、利用复杂度的晋升,其问题也逐步凸显,次要有:
- 由多种引擎和零碎组合而成,开发和保护老本高,学习老本高;
- 数据在不同的 View 中存储多份,空间节约,数据一致性的问题难以解决;
- 从应用上来说,Batch,Streaming 以及 Merge Query 等处理过程中均应用不同的 language,应用起来并不容易;
- 学习老本十分高,增大了利用老本。
下面讲到的问题,在阿里外部其实也都遇到过。如下图所示是阿里巴巴在 2011-2016 年积淀下来的一套实时数仓架构,其本质上也是 Lambda 架构,然而随着业务量及数据的增长,关系复杂度越来越大,老本急剧减少,因而,咱们迫切的须要一种更优雅的计划去解决相似的问题。
二、HSAP:服务剖析一体化
基于上述背景,咱们提出了 HSAP(Hybrid Serving and AnalyticalProcessing)理念,它既能反对很高 QPS 场景的查问写入,又能将简单的剖析场景在一套体系外面实现。那么,HSAP 理念落地的外围是什么?
- 首先,要有一套十分弱小的存储,可能同时存储实时数据和离线数据,对立数据存储;
- 同时还要有一种高效的查问服务,在同一个接口下(比方 SQL),可能反对高 QPS 的查问,反对简单的剖析以及联邦查问和剖析;
- 零碎可能间接对接前端利用,例如报表和在线服务等,不须要再额定的导入导出就能即席剖析,对立数据服务,缩小数据挪动。
三、对于 Hologres
基于 HSAP 的设计理念,咱们要开发并落地出相应的产品,于是便诞生了 Hologres。Hologres 是基于 HSAP 服务剖析一体化理念的最佳落地实际,兼容 PostgreSQL 生态、反对 MaxCompute 数据间接查问,反对实时写入实时查问,实时离线联邦剖析,低成本、高时效帮忙企业疾速构筑流批一体的实时数仓。Hologres 这个词是 Holographic 和 Postgres 的组合,Postgres 比拟好了解,代表着 Hologres 兼容 PostgreSQL 生态。而 Holographic 须要开展分享,先看下图:
Holographic 中文翻译是 ” 全息 ”,就是大家常常听到的 3D 全息投影技术的 ” 全息 ”。而 Holographic Principle(全息原理)在物理学中是用来形容一个空间的性质可编码在其边界上。上图是一副假想中黑洞的图片,间隔黑洞肯定间隔处于能够逃逸出黑洞引力的临界点形成了 Event Horizon,就是图中发亮光的那一圈。全息原理认为所有落入黑洞的物体信息内容可能会被齐全蕴含在 Event Horizon 的外表。Hologres 要做的事件就是对数据黑洞中的全副信息做存储和各种类型的计算。
四、Hologres 核心技术揭秘
Hologres 架构非常简单,是存储计算拆散的架构,数据全副存在一个分布式文件系统中,零碎架构图如下图所示:
- 服务节点 Backend 真正去接收数据、存储和查问,并且可能反对数据的计算;
- 执行引擎 Frontend 接管路由散发的 SQL,而后生成逻辑执行打算,再通过优化器生成分布式的物理执行打算,公布到 Backend 做分布式的执行;
- 接入端由 LBS 做相应的负载平衡工作。
- 下图中黄色局部均部署在容器中,整个分布式系统能够做到高度容错。
- 兼容 PostgreSQL 生态,在下层能够间接对接开源或者商业化的开发 /BI 工具,开箱即可用。
存储计算拆散
Hologres 采纳存储计算拆散架构,用户能够依据业务需要进行弹性扩缩容。分布式存储中,罕用的架构有如下三种:
- Shared Disk/Storage:就是在存储集群上挂载了很多磁盘,每个计算节点都能够间接拜访这些共享盘;
- Shared Nothing:架构就是每个计算节点本人挂载存储,节点之间能够通信,然而各个节点之间的盘不共享,存在资源节约的状况;
- Storage Disaggregation:就是相当于把存储集群看做一个大的磁盘,每个计算节点都能够拜访,且每个计算节点都有肯定的缓存空间,能够对缓存数据进行拜访,也无需关怀存储集群的治理,这种存储计算拆散的架构 便于灵便扩容,可能无效节俭资源。
流批一体的存储
Hologres 定位是流批一体对立存储。对于典型的 Lambda 架构,是将实时数据通过实时数据的链路写入到实时数据存储中,离线数据通过离线数据的链路写入到离线存储中,而后将不同的 Query 放入不同的存储中,再做 Merge,由此带来多份存储开销和应用层简单的 Merge 操作。而通过 Hologres,数据收集之后能够走不同的解决链路,然而解决实现之后的后果都能够间接写入 Hologres,这样就解决了 数据的一致性问题,也不须要去辨别离线表和实时表,升高了复杂度,也大大降低了使用者的学习老本。
存储引擎
Hologres 底层反对行存储和列存储两种文件格式,行存实用于基于 PK 的点查场景,列存实用于 OLAP 简单查问场景。对于两种存储格局 Hologres 在底层解决也有稍微不同,如图所示。数据写入的时候先写 log,log 存储在分布式文件系统,保障整个服务的数据不会失落,因为即使服务器挂掉也能够从分布式系统中复原。Log 写完之后再写 MemTable,就是内存表,这样零碎才认为是数据写入胜利。MemTable 有肯定的大小,写满了之后会将其中的数据逐步 Flush 到文件中,文件是存储在分布式系统中的。而对于行存储和列存储的区别就在 Flush 到文件的这个过程中,这个过程会将行存表 Flush 成行存储的文件,列存表会 Flush 成列存文件。在 Flush 的过程中会产生很多小文件,后盾会将这些小文件合并成一个大文件。
执行引擎
Hologres 执行引擎是通用的分布式查问引擎,侧重于优化高并发低提早的实时查问。通用是指能够表白和高效地执行所有类 SQL 查问。其它的分布式查问引擎,有的专一优化实时表的罕用单表查问,然而对简单查问体现不佳;有的反对简单查问,然而实时场景性能要差一截。Hologres 的理念是不做斗争,对这些场景都要瞄准极致性能。Hologres 执行引擎可能做到对各种查问类型的高性能解决,次要是基于以下特点:
- 端到端的全异步解决框架,能够防止高并发零碎的瓶颈,充分利用资源,并且最大可能地防止存储计算拆散零碎带来的读数据提早的影响。
- 查问用异步算子组成的执行图 DAG 示意,能够不便对接查问优化器,利用业界各种查问优化技术。
- 算子外部解决数据时最大可能地应用向量化执行。
- 和存储引擎的深度集成,灵便的执行模型,可能充分利用各种索引,并且最大化地提早向量物化和提早计算,防止不必要的读数据和计算。
- 对常见实时数据利用查问模式的自适应增量解决。
- 对一些查问模式的独特优化。
优化器
Hologres 的指标就是用户开箱即可用,即通过 SQL 就能实现日常所有的业务剖析需要,无需再做额定的建模解决等操作。基于新的硬件技术,Hologres 设计并实现了本人独特的计算和存储引擎,而优化器表演的角色就是将用户执行的 SQL 高效的运行在计算引擎上。Hologres 优化器采纳基于代价的优化器,可能生成简单的联邦查问执行打算,尽可能施展多套计算引擎的能力。同时,在长期与业务打磨的过程当中,也积攒积淀了大量的业务优化伎俩,让 Hologres 的计算引擎在不同的业务场景下都可能施展极致的性能。
HOS&HoloFlow
Hologres 最外围的组件名叫 blackhole,是一款齐全自研的存储计算引擎,采纳异步编程形式开发。blackhole 的底层提炼出了灵便高效的异步框架:holo-os(简称 HOS)。在实现高性能的同时,还实现了 load balance,解决了 query 长尾问题;实现了资源的高利用率、以及多种共享与隔离的机制。于此同时,holo-os 还推广到了分布式环境,倒退出了 holo-flow 分布式任务调度框架,这样就能保障在分布式环境下也能享受到单机调度的灵活性。
Frontend
Frontend 是 Hologres 的接入层,兼容 PostgreSQL 协定,负责用户申请的接入、解决以及元数据的治理。但因为 PostgreSQL 是单机零碎,解决高并发的用户申请能力无限。而 Hologres 面对的是简单的业务场景以及须要反对万甚至亿级别的用户申请,所以在实现上 Frontend 采纳分布式,通过多版本控制 + 元数据同步等形式实现了多 Frontend 之间信息实时同步,再配合 LBS 层的负载平衡实现了齐全线性扩大和超高 QPS 的能力。
扩大执行引擎
在 Frontend 的根底上,Hologres 也提供多扩大执行引擎。
- PQE(P Query Engine):运行 SQL 以及各种 Function 的执行器,Hologres 兼容 Postgres 提供扩大能力,反对 PG 生态的各种扩大组件,如 Postgis,UDF(pl/java,pl/sql,pl/python)等,完满满足不同场景不同用户的需要,从而提供更多的计算能力。
- SQE(S Query Engine):无缝对接 MaxCompute(ODPS)的执行器,实现对 MaxCompute 的 native 拜访,无需迁徙和导入数据,就能够高性能和全兼容的拜访各种 MaxCompute 文件格式,以及 Hash/Range clustered table 等简单表,实现对 PB 级离线数据的交互式剖析。
生态与数据集成
Hologres 作为流批一体的实时数仓,反对多种异构数据源的实时、离线写入,包含 MySQL、Datahub 等,可能达到每秒千万条的实时写入能力,写入即可查和每秒千万次的点查能力。而这些弱小的能力都是基于 Hologres 的 JDBC 接口。Hologres 在接口上齐全兼容 PostgreSQL(包含语法、语义、协定等),能够间接应用 PostgreSQL 的 JDBC Driver 去连贯 Hologres,并进行数据的读写。目前市面上的数据工具,例如 BI 工具、ETL 工具等等,都反对 PostgreSQL JDBC Driver,所以这意味着 Hologres 天生就有了宽泛的工具兼容性和弱小的生态,实现从数据处理到数据的可视化剖析残缺大数据生态闭环。
在线服务优化
Hologres 作为 HSAP 服务与剖析一体化的最佳落地实际,除了具备解决剖析型 query 的能力外,还具备非常弱小的在线服务能力,例如,KV 点查与向量检索。在 KV 点查场景中,Holgres 通过 SQL 接口能够轻松稳固地反对 百万级的 QPS 吞吐 与极低的延时。在向量检索场景,用户同样能够通过 SQL 的形式来实现向量数据的导入、向量索引的构建、查问等操作,无需额定转换就能查问,性能通过理论业务的测试也相比其余产品更优。此外,一些非剖析型的 query 通过正当的建表、配合上 Hologres 弱小的索引能力,也同样能够完满实用 serving 场景。
五、数仓架构降级
基于 Hologres,多个业务场景也实现了架构降级,极大的简化了业务架构的复杂度,如下图所示:
总结
Hologres 作为新一代云原生实时数仓,在往年阿里巴巴双 11 最外围的数据业务场景,连同实时计算 Flink 首次落地流批一体,并在稳定性、性能等方面禁受住考验,实现商业全链路实时化,毫秒级的海量数据处理能力,2020 双十一,Hologres 顶住了 5.96 亿每秒的实时数据洪峰,单表存储高达 2.5PB。基于万亿级数据对外提供多维分析和服务,99.99% 的查问能够在 80ms 以内返回后果,真正做到数据的实时及离线一体化,反对在线应用服务,为商家和消费者带来了更加智能的生产体验。随着业务的倒退和技术的演进,Hologres 也将继续优化核心技术竞争力,真正实现服务和剖析一体化的美好愿望,为更多用户继续赋能。
Hologres 诞生到参加 2020 年史上最强双十一的三年多工夫里,实现不少从 0 到 1 的冲破:
- 从一个业务到数百业务实例,笼罩了阿里巴巴团体内 90% 以上业务场景,包含双十一实时直播间、智能举荐、阿里妈妈数据平台、国内站数据平台、菜鸟数据平台、友盟 + 全域数据分析、CCO 智能客服、新批发数据平台、考拉、饿了么等业务。
- 集群规模从 0 到近万台,且存储集群和计算集群使用率都比拟高,并实现了零碎产品化 - 上云 - 商业化的三级跳,完满赋能阿里云公共云 + 专有云 + 金融云业务。
- 提出 HSAP(HybridServing & Analytics Processing)服务剖析一体化的零碎设计理念,同一份数据同时满足实时离线在线场景的计算需要,极大的简化了数仓架构的复杂度,升高了老本,从新定义数仓趋势。
- 同时,无关 Hologres 的技术解读 Paper 入选数据库顶会 VLDB《Alibaba Hologres: ACloud-Native Service for Hybrid Serving/Analytical Processing》(http://www.vldb.org/pvldb/vol13/p3272-jiang.pdf)
值此之际,咱们也将首次对外公开 Hologres 的外围底层技术,揭秘 Hologres 为何能撑持阿里巴巴外围场景的落地。
另,咱们将会继续推出以上核心技术的专题解读,敬请关注!
版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。