当前位置: 首页 > news >正文

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

实时数仓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 的官网进行了解。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 电商电子面单API对接方法
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十四)-租云服务器及配环境、docker基本命令
  • 一文速通GIT版本管理与分支控制
  • 数模打怪(八)之图论模型
  • Linux第六节课yum与vim
  • vue3中Cesium离线地图
  • 【未来餐饮】 配送设置
  • day06
  • Android SurfaceFlinger——GraphicBuffer的生成(三十二)
  • Leetcode—74. 搜索二维矩阵【中等】
  • 温故而知新-C++程序员的不平凡挑战
  • 4.1.1、操作系统的概述
  • 天气预报的爬虫内容打印并存储用户操作
  • c程序杂谈系列(加减乘除模篇)
  • 【前端element-ui】对于封装el-select和checkbox-group的多选控件导致数据双向绑定失败问题的处理
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • HomeBrew常规使用教程
  • input实现文字超出省略号功能
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Js基础知识(四) - js运行原理与机制
  • leetcode46 Permutation 排列组合
  • PAT A1092
  • Python3爬取英雄联盟英雄皮肤大图
  • Python连接Oracle
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 编写高质量JavaScript代码之并发
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端代码风格自动化系列(二)之Commitlint
  • 三栏布局总结
  • 通过git安装npm私有模块
  • 微信开源mars源码分析1—上层samples分析
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 译自由幺半群
  • 2017年360最后一道编程题
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #Ubuntu(修改root信息)
  • (1)bark-ml
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (pycharm)安装python库函数Matplotlib步骤
  • (SERIES12)DM性能优化
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (强烈推荐)移动端音视频从零到上手(下)
  • (五)MySQL的备份及恢复
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .ai域名是什么后缀?
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅