写点什么

湖仓一体,Hologres 加速云数据湖 DLF 技术原理解析

  • 2022 年 4 月 20 日
  • 本文字数:2833 字

    阅读完需:约 9 分钟

湖仓一体,Hologres加速云数据湖DLF技术原理解析

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

往期精彩内容:


本期我们将带来 Hologres 高性能分析引擎加速查询云数据湖 DLF 的技术原理解析。


随着云服务被接受的程度不断提升,云用户日益愿意将其收集的数据存储在低成本的对象存储里,比如 OSS,S3 等。与此同时,基于云的数据管理方式也得到相应的推广,元数据也不断存储在阿里云 DLF(Data Lake Formation)上。OSS 和 DLF 的结合成就了一种新的数据湖搭建方式。这种基于云存储的数据湖集累的数据规模也不断增长,相应的湖仓一体的需求也孕育而生。湖仓一体架构基于开放格式的外部存储,以及高性能的查询引擎,让数据架构灵活、可扩展、可插拔。


Hologres 在湖仓一体场景上与 DLF 天然无缝融合,无需数据导入导出就能实现加速查询由 DLF 管理存储在 OSS 的数据,全面兼容访问各种 DLF 支持文件格式,实现对 PB 级离线数据的秒级和亚秒级交互式分析。而这一切的背后,都离不开 Hologres 的 DLF-Access 引擎,通过 DLF-Access 实现对 DLF 元数据以及背后的 OSS 数据进行访问。另外,通过结合 Hologres高性能分布式执行引擎HQE的处理,访问 DLF/OSS 的性能得到进一步提高。


Hologres 加速查询 DLF/OSS 主要有以下几个优势:

  • 高性能:可以直接对 DLF/OSS 数据加速查询,具有秒级响应的查询性能,在 OLAP 场景可以直接即席查询,满足绝大多数报表等分析场景。

  • 低成本:用户在在 DLF/OSS 上存储的大量数据,无需迁移和导入数据而由 Hologres 直接进行访问。在享受云数据湖的低成本基础之上,也避免了数据迁移成本。

  • 兼容性:可以实现以高性能和全兼容的方式访问各种 DLF 文件格式,支持 CSV、Parquet、ORC、Hudi、Delta 等格式(其中 Hudi、Delta 在 1.3 版本支持)。而这些文件格式又是通用数据湖兼容的。

湖仓一体架构介绍

如图所示是 Hologres 访问 DLF/OSS 的湖仓一体架构,可以看出整个架构非常简洁:



云数据湖里的数据存储在 OSS,元数据存储在 DLF。当 Hologres 执行一条 Query 去加速查询 DLF/OSS 的数据时,在 Hologres 端:

  • Frontend 接收 SQL 请求,并对 SQL 进行解析转化,然后通过 RPC 向 DLF-Access 请求获取 Meta 等相关信息。

  • HQE(Hologres Engine)通过 DLF-Access 获取 OSS/DLF 具体的数据相关信息,再返回给 Frontend。

其中 DLF-Access 是一个分布式的数据访问引擎,由多个平等进程组成,具备横向扩展能力。任何一个进程都可以完成两种角色:

  • 处理 Meta 相关的请求,主要负责获取表、分区元数据、文件分片等功能。

  • 负责具体读取或写入数据请求,涉及列裁剪,数据转换,数据封装等功能。

DLF 外表引擎核心技术创新

基于 DLF-Access 的架构,能做到对 DLF/OSS 的数据高性能加速查询,主要是基于以下技术创新优势:

1)抽象分布式外表

结合 DLF/OSS 的分布式特性,Hologres 抽象了一个分布式的外表,来支持访问包括传统或云数据湖的数据。

2)和 DLF Meta 无缝互通

DLF-Access 和 Data Lake Formation 的 Meta 无缝互通,可以做到 Meta 和 Data 实时获取,支持通过 Import Foreign Schema 命令,同步 DLF 的元数据到 Hologres 的外表,实现外表的自动创建。

3)向量化数据读取及转换

DLF-Access 能充分利用数据湖列存文件的特点进行向量化的数据读取及转换,进一步提升性能。

4)返回共享式数据格式

DLF-Access 转换后的数据格式为共享式的 Apache Arrow 格式。Hologres 可以直接使用返回的数据,避免额外数据序列化及反序列化的开销。

5)Block 模式 IO

为了避免网络带来的延迟及负载,DLF-Access 和 Hologres 的内部传输数据单位为 block,默认为 8192 行数据。

6)编程语言隔离

Hologres 是用 C/C++开发出来的云原生 OLAP 引擎。DLF 云数据湖和传统的开源数据湖高度兼容,而开源数据湖大多提供的是基于 Java 的库。使用独立的 DLF-Access 引擎架构可以隔离不同编程语种,即避免了原生引擎和虚拟机之间的高成本转换,又保持了对数据湖灵活多样的数据格式的支持。

DLF 外表引擎升级到 HQE

上面提到了 Hologres 通过 DLF-Access 进行查询加速 DLF 外表,查询时性能可以做到很好,但是和 Hologres 交互时中间会有一层 RPC 交互,在数据量较大时网络会存在一定瓶颈。


因此基于 Hologres 已有的能力,Hologres V1.3 版本对执行引擎进行了优化,支持 Hologres HQE 查询引擎直读 DLF 表,在性能上得到进一步的提升,较早期版本读取有 30%以上的性能提升。


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

1) 节省了 DLF-Access 中间 RPC 的交互,节省了一次额外的数据的重分布,在性能上得到进一步的提升。

2) 复用 Hologres 的 Block Cache,这样多次查询时无需访问存储,避免存储 IO,直接从内存访问数据,更好的加速查询。

3) 可以复用已有的 Filter Pushdown(下推)能力,减少需要处理的数据量。

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

对事务数据湖(Hudi、Delta)的支持

目前 DLF 支持了事务数据湖所用的 Hudi,Delta 等表格式。Hologres 利用 DLF-Access 直接读取这些表中的数据,而不增添任何额外的操作,满足了用户对实时湖仓一体架构的设计需求。

总结

Hologres 通过 DLF-Access 与 DLF/OSS 深度整合,充分利用 Hologres 和 DLF/OSS 的各自优势,以极致性能为目标,直接加速查询云数据湖数据,让用户更方便高效的进行交互式分析,同时也极大降低了分析成本,实现湖仓一体的分析能力。


作者简介:Xuefu Zhang,阿里巴巴资深技术专家,现从事 Hologres 研发工作。


后续我们将会陆续推出有关 Hologres 的技术底层原理揭秘系列,敬请持续关注!往期精彩内容:


了解 Hologres:https://www.aliyun.com/product/bigdata/hologram



用户头像

还未添加个人签名 2020.10.15 加入

分享阿里云计算平台的大数据和AI方向的技术创新和趋势、实战案例、经验总结。

评论

发布
暂无评论
湖仓一体,Hologres加速云数据湖DLF技术原理解析_sql_阿里云大数据AI技术_InfoQ写作社区