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核心原理在PostgreSQL中 COPY命令用于文本文件数据导入 其在PG生态里面有着重要的作用
完美兼容PG几十种数据类型 包括自定义类型等等。文本解析导入细节考虑的非常完善 也是业界标杆。业务价值 业务集成的成本低 psql一条命令或者copy manager等等无需第三方的集成依赖。日常开发测试中高频使用 比如tpch测试 功能验证 线上问题复现等。Hologres完全兼容PG(PostgreSQL)生态 支持使用COPY命令导入数据 但是在PostgreSQL中 COPY的导入性能差强人意 只有20MB/s。而大数据处理场景 往往需要高性能的写入 PG的COPY写入性能不能满足实际业务。
基于此 Hologres对COPY写入性能进行了优化 以达到高性能、高可用的目的。本文将会介绍Hologres对COPY命令优化的技术原理 从而实现导入性能5倍 。
在早期版本中 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工作流程
通过对系统的优化 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 可以参考使用手册 同时也欢迎扫码加入钉群进行技术交流
前言 统计科学家使用交互式的统计工具(比如R)来回答数据中的问题,获得全景的认...
本文转载自公众号读芯术(ID:AI_Discovery)。 这一刻你正在应对什么挑战?这位前...
TIOBE 公布了 2021 年 3 月的编程语言排行榜。 本月 TIOBE 指数没有什么有趣的变...
基本介绍 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径长...
在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多...
背景 我们知道 如果在Kubernetes中支持GPU设备调度 需要做如下的工作 节点上安装...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
溢价 域名 的续费价格如何?通常来说,因为溢价域名的价值高于普通域名,所以溢...
近几年,互联网行业蓬勃发展,在互联网浪潮的冲击下,互联网创业已成为一种比较...
本文转载自微信公众号「bugstack虫洞栈」,作者小傅哥 。转载本文请联系bugstack...