本期咱们将带来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,阿里巴巴资深技术专家,现从事Hologres研发工作。

后续咱们将会陆续推出无关Hologres的技术底层原理揭秘系列,敬请继续关注!返回主页查看往期精彩内容