Kylin on HBase 方案经过长时间的发展已经比较成熟,但也存在着局限性,因此,Kyligence 推出了 Kylin on Parquet 方案(了解详情戳此处)。通过标准数据集测试,与仍采用 Kylin on HBase 方案的 Kylin 3.0 相比,Kylin on Parquet 的构建引擎性能有了很大的提升,对于复杂查询也有更好的性能表现。

本篇文章主要通过使用标准 SSB 数据集和 TPC-H 数据集,来分别获取 Kylin on Parquet 和 Kylin 3.0 构建引擎以及查询引擎的性能数据,然后进行对比分析,让用户们能够更清楚地了解到当前 Kylin on Parquet 相对于 Kylin 3.0(仍采用 Kylin on HBase )的优势和不足。

  • SSB(Star Schema Benchmark)是一套用于测试数据库产品在星型模式下性能表现的基准测试规范,也是 OLAP 领域经常会用到的数据集。
  • TPC(Transaction Processing Performance Council,即事务处理性能委员会)有多种基准测试体系,在这里我们使用了 TPC-H 数据集。使用 TPC-H 的主要目的是测试数据库系统复杂查询的响应时间,以此来评价特定查询的决策支持能力。

Kyligence 公司研发了适用于 Kylin 的 SSB 和 TPC-H 数据集工具,并且包含了标准 SQL,源码仓库地址如下:

  • https://github.com/Kyligence/ssb-kylin
  • https://github.com/Kyligence/kylin-tpch

01

测试环境配置

Hadoop 集群:

  • 4 个物理节点
  • Yarn 队列拥有 400G 内存和 128 个 CPU 核数

Kylin 3.0 使用的是 MapReduce 引擎。Kylin on Parquet 目前只支持内部定制版本的 Spark 引擎,定制版相对于社区版主要是做了性能方面的优化,其他方面与社区版 Spark 并没有区别。

  • Spark 源码仓库https://github.com/Kyligence/spark/tree/2.4.1-kylin-r3
  • Spark 二进制包下载https://download-resource.s3.cn-north-1.amazonaws.com.cn/osspark/spark-2.4.1-os-kylin-r3

02

构建性能对比

Over SSB

下面两个图分别表示构建时间和构建完成后占用存储空间的对比。我们可以看到在 SSB 6000 万和 9000 万数据量下,新的构建引擎构建速度快了一倍,最终占用存储空间也减少了接近一倍。

值得一提的是,Kylin on Parquet 最终构建的数据只包含 HDFS 上的数据,由于 Kylin on HBase cuboid 文件构建完成之后 HDFS 上的文件需要转换为 HFile,而且为了 merge 准备,HDFS 上的数据默认是不会清除的,所以实际存储还会多一倍空间;而使用 Parquet 后,只需要一份数据即可以用于查询,也可以用于 segment 合并,所以总体对比,Kylin on Parquet 的占用空间大约只有 Kylin on HBase 存储的 1/3 到 1/4 !

构建完成后前端页面会显示 Cube 的大小,如下图所示:

△ Kylin on Parquet

△ Kylin 3.0

03

查询性能对比

Kylin on Parquet 的查询引擎会在第一次查询的时候在 YARN 上创建一个常驻进程,专门用来处理查询任务,所以第一次查询会比较慢(初始化过程大约 20 秒),这里的测试并没有将第一次查询时间统计在内。

最近一周,查询引擎兼容性的问题也得到了进一步的修复,目前大部分 SQL 查询包括 CountDistinct, TopN, Percentile 等目前都已经能够支持。

我们使用 SSB 数据集(9000万行)和TPC-H(1200万行)官方标准 SQL 进行查询响应时间测试,查询响应时间越低,查询引擎性能表现越好。两个数据集的标准查询 SQL 可以在文章开始提到的 SSB 和 TPC-H 数据集工具仓库中找到。

Over SSB

从下图中我们可以看到对于 SSB 数据集, Kylin on Parquet 查询响应要比 Kylin 3.0 的要慢,但是大部分的查询还是能够在 1 秒内返回。

Over TPC-H

因为 TPC-H 的主要目的是测试数据库系统复杂查询的响应时间,所以 TPC-H 数据集的 SQL 更加复杂,要求更高,从下图中可以看到 Kylin on Parquet 对查询复杂的 SQL 处理时间更快,具有明显优势。

04

总结

通过 Kylin on Parquet 和 Kylin 3.0 查询构建引擎的性能对比数据我们能够看到,Kylin on Parquet 的构建引擎性能有了很大的提升,构建时间和存储空间都减少了接近一倍。从 SSB 数据集查询对比结果来看,查询引擎对于简单的查询请求和 Kylin 3.0 有一定差距,但是大部分还是能够做到秒级响应。而对于 TPC-H 数据集测试使用的比较复杂的 SQL 来说,一般后计算会比较多,新的查询引擎会有更好的性能表现。

目前, Kylin on Parquet 方案(了解详情戳此处)还处在不断完善的阶段,欢迎大家来体验。最后附上 GitHub 仓库地址:https://github.com/Kyligence/kylin-on-parquet-v2.git。

大家有问题可以提 issue 和 pr,也欢迎大家加一下上图的微信群,一起讨论完善。

了解更多大数据资讯,点击进入Kyligence官网

去 HBase,Kylin on Parquet 性能表现如何?的更多相关文章

  1. Kylin on Parquet 介绍和快速上手

    Apache Kylin on Apache HBase 方案经过长时间的发展已经比较成熟,但是存在着一定的局限性.Kylin 查询节点当前主要的计算是在单机节点完成的,存在单点问题.而且由于 HBa ...

  2. Hadoop + Hive + HBase + Kylin伪分布式安装

    问题导读 1. Centos7如何安装配置? 2. linux网络配置如何进行? 3. linux环境下java 如何安装? 4. linux环境下SSH免密码登录如何配置? 5. linux环境下H ...

  3. Reporting Services 的伸缩性和性能表现规划(转载)

    简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台.Re ...

  4. R语言︱ROC曲线——分类器的性能表现评价

    笔者寄语:分类器算法最后都会有一个预测精度,而预测精度都会写一个混淆矩阵,所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetiv ...

  5. spark生成大宽表的parquet性能优化

    1.  背景介绍 将一份数据量很大的用户属性文件解析成结构化的数据供查询框架查询剖析,其中用户属性包含用户标识,平台类型,性别,年龄,学历,兴趣爱好,购物倾向等等,大概共有七百个左右的标签属性.为了查 ...

  6. Unity 5.4 公开测试版发布:增强的视觉效果,更佳的性能表现

    为用户提供可靠稳定的产品是我们的一贯使命,现在我们将发布Unity 5.4 beta版本,提供所有的用户公开测试,这包含了Unity Personal Edition版本用户.我们非常希望大家下载并尝 ...

  7. HBase入门笔记--读性能优化

    一.前言 在生产环境使用HBase过程中,随着数据量的不断增加,查询HBase数据变得越来越慢,对于业务来说是不可用的,需要对读性能进行优化 二.问题定位 从hbase监控指标来看,发现FullGC次 ...

  8. HBase设计与开发性能优化(转)

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...

  9. 什么是HBase(六)性能调优

    硬件层面 内存要大,最好是ECC(Error Checking and Correcting),实现内存的动态纠错:CPU要多路(每个路彼此隔离)每个路一个CPU,每个cpu上面一般都是2~12核. ...

随机推荐

  1. OpenWrite 编辑器如何配置七牛云图床

    感谢用户 mutiantong.cn 的创作分享,原文链接:https://www.jianshu.com/p/29f33ca6e491 1. 配置七牛云 1.1 通过七牛云链接购买七牛云对象存储, ...

  2. AJ学IOS(49)多线程网络之线程的创建NSThreand

    AJ分享,必须精品 一:NSThread的基本使用 1:创建和启动线程 一个NSThread对象就代表一条线程 创建.启动线程 NSThread *thread = [[NSThread alloc] ...

  3. Java并发编程实战 02Java如何解决可见性和有序性问题

    摘要 在上一篇文章当中,讲到了CPU缓存导致可见性.线程切换导致了原子性.编译优化导致了有序性问题.那么这篇文章就先解决其中的可见性和有序性问题,引出了今天的主角:Java内存模型(面试并发的时候会经 ...

  4. PHP出现SSL certificate:unable to get local issuer certificate的解决办法

    当本地curl需要访问https时,如果没有配置证书,会出现SSL certificate: unable to get local issuer certificate错误信息. 解决办法: 1.下 ...

  5. [HarekazeCTF2019] web

    在 buuoj 上看到的这个比赛题目,期间平台关了,就拿了 Dockerfile 本地做了,web 题目感觉还不错 encode_and_encode [100] 打开靶机,前两个页面都是 html ...

  6. 算法笔记刷题1(codeup 1934)

    准备6月份的拼题甲级中(本来现在这两天就考试了,但是因为疫情的原因延期了) 刚刚开始按算法笔记刷题,今天是探索codeup的第一天. 一开始并没有把多点测试当回事,直到一错再错,心态爆炸... 附上我 ...

  7. redis5.0.3配置文件详解

    Redis最新版本5.0.3配置文件详解 单位 #当你需要为某个配置项指定内存大小的时候,必须要带上单位, #通常的格式就是 1k 5gb 4m 等: #1k => 1000 bytes #1k ...

  8. Redis持久化存储(一)

    Redis介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...

  9. 【JAVA基础】11 Scanner类

    1. Scanner的概述 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配.然后可以使用不同的 ne ...

  10. BeanDefinition源码解析

    我们知道BeanDefintion定义了Bean在IoC容器内的基本数据结构.在学习IoC之前先了解BeanDefition对我们理解IoC容器是有帮助的. 首先BeanDefinition是一个接口 ...