Hologres揭秘:优化COPY,批量导入性能提升5倍+

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 揭秘Hologres优化COPY的技术原理,实现批量导入性能提升5倍+。

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


往期精彩内容:

背景

在PostgreSQL中,COPY命令用于文本文件数据导入,其在PG生态里面有着重要的作用:

  • 完美兼容PG几十种数据类型,包括自定义类型等等。
  • 文本解析导入细节考虑的非常完善,也是业界标杆。
  • 业务价值,业务集成的成本低,psql一条命令或者copy manager等等无需第三方的集成依赖。
  • 日常开发测试中高频使用,比如tpch测试,功能验证,线上问题复现等。


Hologres完全兼容PG(PostgreSQL)生态,支持使用COPY命令导入数据,但是在PostgreSQL中,COPY的导入性能差强人意,只有20MB/s。而大数据处理场景,往往需要高性能的写入,PG的COPY写入性能不能满足实际业务。
基于此,Hologres对COPY写入性能进行了优化,以达到高性能、高可用的目的。本文将会介绍Hologres对COPY命令优化的技术原理,从而实现导入性能5倍+。


COPY瓶颈定位


在早期版本中,COPY导入在Hologres的实现流程图如下:1.png
执行流程:

1.FE(FrontEnd,前端节点)负责接收用户的请求,数据流入,以及具体的解析工作(包括分行,拆列,类型Format解析等)。

2.FE把完成解析的数据转成Arrow写入到Shuffle Service。

3.HQE(Hologres Query Engine)从Shuffle Service获取数据,并根据分布键完成Shuffle。

4.SE(Storage Engine)把数据流写入Pangu。


在COPY工作的过程中,能够看到FE的进程一直处于CPU打满的状态,下图是性能调试时的记录:

2.png


可以确定以下瓶颈:

  • Shuffle Service中间节点引入的性能损耗。如上图的红框部分,需要将PG的内部数据结构HeapTuple转换成Arrow并写入Shuffle Service。
  • PG解析本身的耗时,比如,I/O,对数据流切分,按照类型Format解析等等。


改造技术难点

定位了瓶颈之后,结合Hologres现有技术架构,要提升性能,主要有以下几个难点:

  • PostgreSQL的进程模型,有很多Global Runtime Context,多线程改造成本高。
  • 类型解析依赖PostgreSQL类型系统,所以无法简单的利用第三方文本解析库加速,比如Arrow。
  • FE Meta管理过程中,需要PostgreSQL系统表和COPY的交互,从而保证PostgreSQL COPY系统表的行为稳定及正确性。


Hologres优化方案

为了突破上面的难点,从而解决导入效率的问题,Hologres针对FE做了优化,主要是解耦FE工作流程:


  • 保证Request进程只负责,接收请求,数据流入以及简单的数据切分;
  • 文本解析的工作交给具备PG计算能力支持的PQE分布式执行,
  • 优化后的执行方案如图:

技术揭秘电子书_9.4.png


优化后,数据通过COPY导入Hologres的执行流程如下:

  • FE负责接收用户请求,并把流入的数据按行切片,并写入共享队列Queue。
  • Coordinator把FE和PQE调度到同一台机器,这样Queue能以Shared Memory的方式实现,FE和PQE交互更高效。
  • PQE从Queue里面获取对应的切片,并完成拆行,分列,以及具体类型解析。
  • HQE从PQE拖取数据,并计算分布并Shuffle。
  • SE负责把流入数据写入到Pangu。


5倍+性能提升

通过对系统的优化,Hologres的COPY导入性能有了质的飞跃。以TPCH lineitem表为例,1亿条数据,文件13G,COPY导入性能如下:



可以从图中看到,优化后,Hologres COPY上传速度能达200MB/s+,相比PostgreSQL快5倍以上!

技术揭秘电子书_9.5.png

总结

Hologres致力于一站式实时数仓,在数据接入上有着非常庞大的生态家族,支持多种异构数据源的离线、实时写入,包括DataWorks数据集成、Flink、MaxCompute等丰富的写入方式。在大数据场景中,Hologres完全兼容PostgreSQL的COPY命令,并在此基础之上,对系统优化,实现了COPY导入性能比PG快5倍+。COPY命令方式导入数据,为Hologres数据接入生态又新增一种方式,满足业务高性能写入需求,助力快速搭建企业级实时数仓。


作者:郑晓文(鲁来) 现从事交互式分析Hologres引擎研发工作。


后续我们将会陆续推出有关Hologres的技术底层原理揭秘系列,具体规划如下,敬请持续关注!


感谢您的阅读,也欢迎使用体验Hologres,可以参考使用手册,同时也欢迎扫码加入钉群进行技术交流:

holo公共云用户群.jpg

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
相关文章
|
3月前
|
存储 运维 Kubernetes
实时数仓Hologres提升问题之调度性能如何解决
Hologres可以支持的最大节点规模是多少?
43 1
|
1月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
98 0
|
2月前
|
消息中间件 Java 数据库连接
Hologres 数据导入与导出的最佳实践
【9月更文第1天】Hologres 是一款高性能的实时数仓服务,旨在提供快速的数据分析能力。无论是从外部数据源导入数据还是将数据导出至其他系统,都需要确保过程既高效又可靠。本文将详细介绍如何有效地导入数据到 Hologres 中,以及如何从 Hologres 导出数据。
96 1
|
3月前
|
存储 SQL 数据管理
如何优化Hologres的性能?
【8月更文挑战第24天】如何优化Hologres的性能?
108 3
|
4月前
|
存储 SQL OLAP
分析性能提升40%,阿里云Hologres流量场景最佳实践
分析性能提升40%,阿里云Hologres流量场景最佳实践
|
3月前
|
DataWorks 负载均衡 Serverless
实时数仓 Hologres产品使用合集之如何导入大量数据
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
4月前
|
SQL 弹性计算 测试技术
实时数仓Hologres TPC-H及点查性能开箱测试
Hologres现在仍然是TPCH-30000榜单的全球第一,领先第二名高达23%,最新发布的2.2版本相比之前的1.x的版本性能大约提升100%。
|
3月前
|
Dragonfly Docker 容器
实时数仓Hologres容器镜像问题之优化私有化部署如何解决
容器镜像常遇问题包括:将过多组件打包至单一容器、使用systemd导致状态不一致、私有部署中传输未优化的镜像包及基础镜像频繁下发致网络拥堵。应采用轻量化基础镜像,明确镜像版本,并利用镜像层复用来优化。[了解更多](https://developer.aliyun.com/ask/666077)。 避免容器臃肿的方法是选用精简基础镜像,固定镜像版本,并通过镜像层复用来减少重复内容,实现高效部署。[查看详情](https://developer.aliyun.com/ask/666078)。
48 0
|
3月前
|
SQL DataWorks 安全
DataWorks产品使用合集之怎么将数据导入或写入到 Hologres
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
分布式计算 数据库 Spark
实时数仓 Hologres产品使用合集之如何优化增加索引和主键
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。

热门文章

最新文章

相关产品

  • 实时数仓 Hologres