当前位置:主页 > 查看内容

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

发布时间:2021-07-02 00:00| 位朋友查看

简介:Hologres 中文名交互式分析 是阿里云自研的一站式实时数仓 这个云原生系统融合了实时服务和分析大数据的场景 全面兼容PostgreSQL协议并与大数据生态无缝打通 能用同一套数据架构同时支持实时写入实时查询以及实时离线联邦分析。它的出现简化了业务的架构 为……

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核心原理

本期我们将带来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.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分布式执行 优化后的执行方案如图 3.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倍以上

4.png总结

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


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


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


Hologres揭秘 首次公开 阿里巴巴云原生实时数仓核心技术揭秘Hologres揭秘 首次揭秘云原生Hologres存储引擎Hologres揭秘 深度解析高效率分布式查询引擎Hologres揭秘 高性能原生加速MaxCompute核心原理Hologres揭秘 如何利用COPY实现高效率导入 本文 Hologres揭秘 如何支持高吞吐UpsertHologres揭秘 如何支持在线服务场景的超高QPSHologres揭秘 如何支持高并发查询Hologres揭秘 如何支持高可用架构Hologres揭秘 如何支持资源隔离 支持多种负载Hologres揭秘 向量检索引擎Proxima原理与使用实践Hologres揭秘 读懂执行计划 查询性能翻十倍Hologres揭秘 分布式系统如何设计Shard与Table GroupHologres揭秘 如何支持更多Postgres生态扩展包Hologres揭秘 高吞吐写入Hologres的N种姿势......

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

holo公共云用户群.jpg


本文转自网络,原文链接:https://developer.aliyun.com/article/785001
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐