共计 3080 个字符,预计需要花费 8 分钟才能阅读完成。
简介:揭秘 Hologres 优化 COPY 的技术原理,实现批量导入性能晋升 5 倍 +
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 外围原理 [
](https://topic.atatech.org/art…
本期咱们将带来 Hologers COPY 导入性能优化实现性能晋升 5 + 倍方面的技术原理解读。
背景
在 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.FE(FrontEnd,前端节点)负责接管用户的申请,数据流入,以及具体的解析工作(包含分行,拆列,类型 Format 解析等)。
2.FE 把实现解析的数据转成 Arrow 写入到 Shuffle Service。
3.HQE(Hologres Query Engine)从 Shuffle Service 获取数据,并依据散布键实现 Shuffle。
4.SE(Storage Engine)把数据流写入 Pangu。
在 COPY 工作的过程中,可能看到 FE 的过程始终处于 CPU 打满的状态,下图是性能调试时的记录:
能够确定以下瓶颈:
- 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 分布式执行,
- 优化后的执行计划如图:
优化后,数据通过 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 倍以上!
**
总结
Hologres 致力于一站式实时数仓,在数据接入上有着十分宏大的生态家族,反对多种异构数据源的离线、实时写入,包含 DataWorks 数据集成、Flink、MaxCompute 等丰盛的写入形式。在大数据场景中,Hologres 齐全兼容 PostgreSQL 的 COPY 命令,并在此基础之上,对系统优化,实现了 COPY 导入性能比 PG 快 5 倍 +。COPY 命令形式导入数据,为 Hologres 数据接入生态又新增一种形式,满足业务高性能写入需要,助力疾速搭建企业级实时数仓。
作者:郑晓文(鲁来)现从事交互式剖析 Hologres 引擎研发工作。
后续咱们将会陆续推出无关 Hologres 的技术底层原理揭秘系列,具体布局如下,敬请继续关注!
- Hologres 揭秘:首次公开!阿里巴巴云原生实时数仓核心技术揭秘
- Hologres 揭秘:首次揭秘云原生 Hologres 存储引擎
- Hologres 揭秘:深度解析高效率分布式查问引擎
- Hologres 揭秘:高性能原生减速 MaxCompute 外围原理
- Hologres 揭秘:如何利用 COPY 实现高效率导入(本文)
- Hologres 揭秘:__如何反对高吞吐 Upsert
- Hologres 揭秘:__如何反对在线服务场景的超高 QPS
- Hologres 揭秘:__如何反对高并发查问
- Hologres 揭秘:__如何反对高可用架构
- Hologres 揭秘:__如何反对资源隔离,反对多种负载
- Hologres 揭秘:__向量检索引擎 Proxima 原理与应用实际
- Hologres 揭秘:__读懂执行打算,查问性能翻十倍
- Hologres 揭秘:__分布式系统如何设计 Shard 与 Table Group
- Hologres 揭秘:__如何反对更多 Postgres 生态扩大包
- Hologres 揭秘:高吞吐写入 Hologres 的 N 种姿态
- ……
感谢您的浏览,也欢送应用体验 Hologres,能够参考使用手册。
版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。