实时数仓Hologres TPC-H及点查性能开箱测试

news2024/9/23 13:17:39

实时数仓Hologres是阿里云自研一站式实时数仓引擎,提供统一、实时、弹性、易用的一站式实时数仓引擎,分析性能打破TPC-H世界记录,一份数据可同时支持多维分析(OLAP)、即席分析(Ad Hoc)、点查(Servering)、向量计算等多种场景,替换各类OLAP 引擎(ClickHouse/Doris/Greenplum/Presto/Impala等)、KV 数据库(HBase/Redis等)。本次开箱测试主要通过96CU进行OLAP场景的TPC标准查询测试以及Serving场景会包含例如insert场景、update的场景,如果您也需要测试可以在官网购买59元150000CU时进行测试(1个96CU实例1小时消耗96CU时)

一、Hologres测试流程

OLAP场景通常主要会选用TPC标准查询测试。Serving场景会包含例如insert场景、update的场景,按照主键去进行整行更新、按照进主键去做部分列的更新以及key value的这种点查的性能测试。

Hologres现在仍然是TPCH-30000榜单的全球第一,领先第二名高达23%。OLAP的场景会选用TPCH数据集的数据和SQL进行测试。

最新发布的2.2版本重构了QO和QE,相比之前的1.x的版本性能大约提升100%。1.x的版本约为200秒左右,在2.2的版本约为110秒左右,性能提升非常明显。其中2.2版本也引入了很多优化,包括runtime filter的全场景支持。在支持local的runtime filter、global的runtime filter、HQE的RPC的连接的机制,以及worker内数据先进行合并,再进行worker的分发。包括QO在Plan的生成阶段,处理阶段都有一些新的优化,才能达到现在这个性能的这个效果。

以下为性能测试的流程及说明

1.1 创建实例

Hologres是存储计算分离的架构。存储使用高性能的盘古的DFS的存储,同时支持直读maxcomputer中的数据,实现高性能的透明加速,同时支持冷热数据分离的能力,支持多种的存储格式,包括适合serving场景的行存,以及适合OLAP场景的列存,以及行列共存。 计算层使用容器化的部署,Hologres是16CU 1个容器的节点,例如购买实例的时候,32CU是两个节点。扩容为计算资源的扩容。

这是购买实例的界面。那么购买实例的时候,选择这个计算资源的信息,选择网络等信息即可创建实例。如果您也需要测试可以在官网购买59元150000CU时进行测试(1个96CU实例1小时消耗96CU时)

1.2 管控台

创建完毕之后,在实例的管控台上可以找到实例。点击具体的这个实例名称就可以进入实例详情页面。在这个页面上可以看到实现实例所在的可用区,实例的规格,计算资源有多少网络信息。例如比如说VPC的域名是什么.在测试的时候,需要购买一台VPC的ECS,需要从这个VPC的域名去连接实例。同时我们可以在管控台或者云监控里面去查询实例相关的这种监控信息。

1.2.1监控Metrics

每种类型的实例都提供15个以上的这种监控Metrics。其中包括不同引擎的QPS、RPS、latency, 还有binlog、serverless等等的这些运行情况,以便及时的了解例如任务的负载等等的一些情况。同时也提供锁、analyze等等健康度的指标,可以帮助大家快速的观察业务实例的运行状况以及发现异常,以便出现问题可以尽快去处理。

1.3 连接数据库

支持psql等PostgreSQL生态工具连接实例,同时我们提供了多种工具去开发和管理。 对于开发的场景、调度的场景, 推荐使用DataWorks 中的DataStudio作为开发和运维开发的这种平台。HoloWeb更适合作为运维平台、实例诊断。

1.3.1 创建表

Hologres里面有多种的表的存储格式。Hologres存在两种表,一种叫内表,一种叫外表。

内表

  • 列存表:用于服务OLAP查询场景,默认建表类型

  • 行存表:用于服务Key / Value查询场景、Flink的维度表场景

  • 行列共存表:用于既有点查,又有OLAP查询的场景、非主键点查场景。

外表

  • 外表:MaxCompute外表、OSS外表

建表语句示例

Hologres 从第一天起就支持了主键模型,支持主键的去重以及高性能的这种更新场景。建表时就可以设置主键,同时还支持多种存储格式,支持行存、列存、行列共存等等。可以设置聚簇索引 Clustering key 以及 Segment key 分段的键以及 Distribution key,数据会按照 Distribution key 打散数据变成一个分片。还有Bitmap和 字典编码以及数据的生命周期。当然也支持设置表的注释,字段的注释等等。 Hologres是兼容PostgreSQL生态,建表语法与PostgreSQL相同,但是索引与PostgreSQL不同,Hologres支持的索引请参见设置表属性和索引。建表时选择合适的索引,能够使SQL在执行时快速命中数据,减少IO消耗,以更少的计算资源,实现更快的查询性能。下图是一个SQL从发起到获取数据的执行流程,可以通过下图理解每个索引的作用,以方便实际业务中更加方便高效的为表选择合适的索引。

  1. SQL执行时,如果是分区表,那么会通过分区裁剪,定位到所在分区。

  2. 通过Distribution Key快速定位到数据所在的数据分片(Shard)。

  3. 通过Event Time Column(原Segment Key)快速定位到数据所在的文件。

  4. Clustering Key为数据在文件内的排序,可以通过Clustering Key快速定位到所在的文件块。

  5. 位图索引Bitmap是文件内的索引,可以通过Bitmap快速定位到符合条件的数据所在的行号。

索引适用的场景如下。

数据导入模式其实有多种,例如本地文件的导入,使用 copy 的方式把本地文件导入到对应 DB 的表中。当然也支持 MaxCompute 的外表数据导入的模式。下面列出了在公网 VPC 网络下使用本地文件上传的预估时间,以及使用 MaxComputer 外表上传的预估时间。

1.3.2 导入数据模式

以下为在公网、VPC网络下使用本地文件上传的时间,以及使用maxcompute外表上传的时间。推荐尽量使用在VPC的网络下进行测试,带宽会更高。如果使用公网的话,话费时间会更长,网络也会有更多的抖动,不适合用来做性能测试。

1.3.3运行SQL语句

使用HoloWeb执行SQL语句

图形化执行计划界面,可以有效的帮助我们分析查询中间的瓶颈。节点颜色越深,扫描节点花费时间更多

二、测试

2.1 Demo:场景介绍

  • TPC-H书记OLAP场景

  • 写入、更新、点差场景压测

2.2Demo: 环境准备

基础环境准备

创建ECS实例,用于客户端测试。建议ECS规格如下:

• 实例规格:ecs.g6.4xlarge。

• 操作系统:Alibaba Cloud Linux 3.2104 LTS 64位。

• 存储:ESSD云盘。

• ECS与Hologres实例需在相同地域,使用相同的VPC网络,并处于同一服务可用区。

创建Hologres实例。

创建测试数据库。

测试工具准备

在ECS实例中安装JDK,详情请参见安装JDK。

在ECS实例中安装psql客户端,yum install postgresql-server -y

下载测试工具holo-e2e-performance-tool,用于写入、更新、点查场景压测

下载测试工具hologres_benchmark_for_tpch,用于TPC-H 数据集场景测试。

将测试工具导入ECS实例

2.3 测试

2.3.1 OLAP测试

  • 解压工具包,进入到hologres_benchmark文件夹,编辑group_vars文件

  • 填写相关信息

要填几个信息,

  1. 实例的 VPC 的endpoint,

  2. 填写账号的AK,以及端口号。

  3. 需要两个路径用来存放生成的 TPC-H 数据的文件,以及相关的一些工作文件包括生成的SQL、查询的结果等等都会放在该文件夹中。

  • 执行bin目录下面的 TPC-H脚本,系统就会默认的开始生成这些相关的数据,并在实例下面创建一个TPC-H数据库

  • 执行run_tpch.sh query 会开始运行,进行查询测试,查询为随机生成。运行完毕后会生成一个文件并保存在本地

  • 查询结果:会打印每一条查询的时间以及总的running时间。

查询的结果会保存在对应的目录中。

2.3.2 KV查询

  • 在官网下载文件包以及官方工具并上传到ECS

  • 安装Java的JDK环境、配置文件。配置文件中包括连到的实例,以及用户名,密码,多少个进程等等。表使用fixed copy写入数据,写入完成之后会启动

  • 查询结果会保存在result文件下,面会有开始时间、结束时间、多少行,QPS,以及平均的这个延迟,P99的延迟等等

  • 其他select 的场景,update 场景和部分更新的场景都类似,按照官方手册上的描述可以直接进行相关的测试。手册上也列出了一些相关结果,例如20 列场景下 64 CU 是什么样的测试结果,例如在 50 列的情况下是什么样的结果,在100 列的情况下是什么样的结果。

2.3.3 后台监控数据

可以在后台监控到各项数据,例如时间、QPS等等。压测时推荐也查看这些信息。

最后进行总结。今天做了两个场景的演示,一个是 OLAP 场景的压测演示,一个是点查场景的压测演示,欢迎大家访问 Hologres 的官网进行了解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1964303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第XX天|10-使用静态图加速

MindSpore设计的AI编译框架提供了动态图和静态图两种运行模式,用户可根据需求在这两种模式间手动切换,以平衡开发效率与运行性能。 动态图模式(PyNative)允许模型构建与计算同步进行,便于调试,但优化受限。…

2-51 基于matlab的IFP_FCM(Improved fuzzy partitions-FCM)

基于matlab的IFP_FCM(Improved fuzzy partitions-FCM),改进型FCM(模糊C均值)聚类算法,解决了FCM算法对初始值设定较为敏感、训练速度慢、在迭代时容易陷入局部极小的问题。并附带了Box和Jenkins煤气炉数据模型辨识实例。程序已调通&#xff0…

理解 Unix/Linux 中的 Terminal、Shell、TTY 和 Console

文章目录 1 Terminal1.1 传统意义上的 Terminal1.2 现代的 Terminal 2 TTY2.1 TTY 的起源2.2 Linux 中的 TTY2.3 虚拟终端2.3.1 虚拟终端为什么是虚拟的? 2.4 伪终端2.4.1 伪终端的组成2.4.2 伪终端的工作原理2.4.3 伪终端的应用 3 Console3.1 Console 的定义3.2 Li…

7.31日学习打卡---Spring Cloud Alibaba(一)

7.31日学习打卡 目录: 7.31日学习打卡一.架构的演变单体应用阶段垂直应用阶段分布式系统阶段微服务阶段 二. Spring Cloud Alibaba什么是Spring Cloud Alibaba分布式配置中心_搭建微服务项目环境为什么需要服务治理分布式配置中心_Nacos四大功能Windows 搭建部署Nac…

基于SSM框架的学生考勤管理系统设计与实现源码+lw+部署文档+讲解等)

文章目录: 目录 详细视频演示 系统实现界面 .2管理员功能模块实现 5.3学生功能模块实现 技术栈查看 2.1 人脸识别技术的概念 2.2 Java介绍 2.3 MySql数据库 2.4 Tomcat简介 2.5 B/S架构 2.6 SSM框架 系统整体设计 系统测试的目的 6.2软件测试过程 6.…

C语言典型例题14

//《C程序设计教程(第四版)——谭浩强》 //习题2.2 中国在2020年11月1日进行第7次全国人口普查,全国人口为1411778724人,假设年增长率为0.5%,计算到2050年有多少人口? //《C程序设计教程(第四版…

[玄机]流量特征分析-蚁剑流量分析

题目网址【玄机】:https://xj.edisec.net/ AntSword(蚁剑)是一款开源的网络安全工具,常用于网络渗透测试和攻击。它可以远程连接并控制被攻击计算机,执行命令、上传下载文件等操作。 蚁剑与网站进行数据交互的过程中&a…

iOS开发-图片上涂鸦绘制撤销功能

iOS开发-图片上涂鸦绘制撤销功能 当我们需要重新在图片上进行绘制涂鸦生成新的图,这里使用到了Graphics中的API功能。 Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。 微信搜索小游戏…

wps在pc端在线预览,而不是下载

如果有有java后端代码如下 SneakyThrowsApiOperation("访问文件")GetMapping("/download/{name}")public void getImage(HttpServletResponse response, PathVariable("name") String name) {String imagePath uploadFilePath File.separator …

文件上传漏洞--之upload-labs靶场第 11-15关(后三关需要制作图片马)持续更新ing...

第11关 第一步:查看源码 这是一个白名单,里面限制了只可以提供它所规定文件jpg,png,gif。 这段 PHP 代码主要实现了文件上传的功能,并进行了一些条件判断和处理: 首先,定义了两个变量 $is_upload 并初始…

GitHub Pages上用vue搭建个人网站简记

新建仓库 将仓库取名为:<你的用户名>.github.io 就像这样 GitHub会帮你自动部署在 https://jerryqjr.github.io/ 上 npm run build后把disk传入新的分支 git subtree push --prefix dist origin gh-pages将子目录 dist 的内容推送到远程分支 gh-pages 随后在 Settin…

综合点评!史上最强开源大模型Llama 3.1

在人工智能领域&#xff0c;开源模型一直是推动技术进步和创新的重要力量。 北美时间7月23日&#xff0c;Meta公司&#xff08;原Facebook&#xff09;宣布了一项重大突破&#xff1a;开源模型Llama 3.1的正式发布。这一举措预示着AI技术的又一次飞跃&#xff0c;Llama 3.1有望…

java~反射

反射 使用的前提条件&#xff1a;必须先得到代表的字节码的Class&#xff0c;Class类用于表示.class文件&#xff08;字节码&#xff09; 原理图 加载完类后&#xff0c;在堆中就产生了一个Class类型的对象&#xff08;一个类只有一个Class对象&#xff09;&#xff0c;这个对…

IOday4

一、思维导图 二、练习 1、使用父子进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半内容&#xff0c;子进程拷贝后一半内容&#xff0c;子进程结束后退出&#xff0c;父进程回收子进程的资源 #include<myhead.h> int main(int argc, const char *argv[]) {//判断终…

分享:Vue3中如何使用echarts工具开发可视化图表

官方链接 点此进入 导入 import * as echarts from echarts 页面 <div id vdrBarChart style"height: 300px;width: 500px;"></div> 调用 //DOM 更新完成后&#xff0c;延时100ms执行setBarChart方法this.$nextTick(() > {setTimeout(() >…

电路设计-基础2-电阻电容

电路设计-基础2-电阻电容 分立元件常见的分立元件及其功能分立元件的特点 电阻**注意**电阻种类1. 直插电阻&#xff08;色环电阻&#xff09;2. 贴片电阻&#xff08;SMD电阻&#xff09;3. 电位器&#xff08;可变电阻器,滑动变阻器&#xff09;4. 热敏电阻&#xff08;NTC/P…

如何解决部分设备分辨率不适配

1&#xff09;如何解决部分设备分辨率不适配 2&#xff09;Unity中如何实现草的LOD 3&#xff09;使用了Play Asset Delivery提交版本被Google报错 4&#xff09;如何计算弧线弹道的落地位置 这是第396篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&#xff0c;…

运筹说 第120期 | 确定型存储模型

上一期我们一起学习了存储问题及其基本概念&#xff0c;本期小编将带大家学习确定型存储模型的相关内容。 下面我们一起来学习确定型存储模型的五个基础模型吧&#xff01; 模型一&#xff1a;不允许缺货&#xff0c;补充时间极短 为了便于描述和分析&#xff0c;对模型作如下…

基于视觉的语义匹配见多了,那基于雷达的呢?

论文题目&#xff1a; LiDAR-based HD Map Localization using Semantic Generalized ICP with Road Marking Detection 论文作者&#xff1a; Yansong Gong, Xinglian Zhang, Jingyi Feng, Xiao He and Dan Zhang 作者单位&#xff1a;北京驭势科技有限公司 导读&#xff…

【C++哈希应用】模拟实现STL中的unordered_map和unordered_set

目录 &#x1f680; 前言一&#xff1a; &#x1f525; 哈希表的改造1.1 模板参数列表的改造1.2 增加迭代器操作 二&#xff1a; &#x1f525; 封装unordered_map和unordered_set 2.1 unordered_map的模拟实现&#xff1a;2.1.1 unordered_map的测试 2.2 unordered_set的模拟实…