去 HBase,Kylin on Parquet 性能表现如何?

去 HBase,Kylin on Parquet 性能表现如何?Kylin on HBase 方案经过长时间的发展已经比较成熟,但也存在着局限性,因此,Kyligence 推出了 Kylin on Parquet 方案。通过标准数据集测试,与仍采用 Kylin o

去 HBase,Kylin on Parquet 性能表现如何?

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 万数据量下,新的构建引擎构建速度快了一倍,最终占用存储空间也减少了接近一倍。

Building Duration Over SSBResult Size Over SSB

值得一提的是,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 on Parquet

Kylin 3.0

      △ 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 秒内返回。

Query Response Over SSB

Over TPC-H

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

Query Response Over TPC-H

 

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。

QRcode

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

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8614.html

(0)
上一篇 2023-02-25 12:30
下一篇 2023-02-25

相关推荐

  • Aerospike配置[通俗易懂]

    Aerospike配置[通俗易懂]Aerospike数据库配置说明 vi /etc/aerospike/aerospike.conf service {} #调整参数和进程所有者 network { #用于配置集群内和应用程序节点通…

    2023-02-25
    111
  • TiDB Contributor 人数突破 400,有关开源理想,我们同在!

    TiDB Contributor 人数突破 400,有关开源理想,我们同在!从 2015 年 5 月写下第一行代码,TiDB 作为一款新型开源分布式数据库项目,走过了 0 到 1 的蜕变之日;走过了存储层 TiKV 项目晋级为 CNCF Incubating Project…

    2023-02-03
    106
  • SqlServer2008R2自动删除备份「建议收藏」

    SqlServer2008R2自动删除备份「建议收藏」前言:当项目上线并稳定运行后,我们就需要考虑自动备份功能了,自动备份固然简单,但是需要相应的自动删除来配合使用。 首先我们打开SqlServer管理工具(SSMS),在左侧目录中找到 管理–>

    2023-02-18
    110
  • oracle 查询两个字段值相同的记录

    oracle 查询两个字段值相同的记录select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol A group by A.Typeid,

    2022-12-22
    116
  • 制造行业的数据管理「建议收藏」

    制造行业的数据管理「建议收藏」制造行业的IT应用ERP/CRMOA/邮件系统制造业数据管理需求汇总数据分层管理数据库实时复制终端数据管理集中备份备份到云连续数据复制到云在云中恢复云中备份、多数据中心今天先到这儿,希望对技术领导力,

    2023-01-24
    108
  • Python中的实数和浮点数:区别和应用

    Python中的实数和浮点数:区别和应用在数学中,实数是指包括正数、负数和0在内的所有实数,它们可以通过一个无限不循环的十进制小数来表示。而浮点数则是指带有小数点或指数的数,包括单精度浮点数和双精度浮点数。在Python中,实数可以使用int和long类型来表示,而浮点数则使用float或complex类型。

    2024-01-05
    65
  • 关于python超时控制源代码解读的信息

    关于python超时控制源代码解读的信息源代码是指原始代码,可以是任何语言代码。Python源码就是指编写的最原始程序的代码。运行的软件是要经过编写的,程序员编写程序的过程中需要他们的“语言”。

    2023-12-02
    74
  • Python静态类的使用

    Python静态类的使用Python作为一门高级编程语言,在软件开发和数据分析领域中非常流行,其中类是Python的重要特性之一。Python的类有很多种类型,其中静态类是一种非常重要的类型,它使得程序员能够使用Python在类中实现静态变量和静态方法,从而更好地实现代码重用和优化。本篇文章将介绍Python静态类的使用,包括静态变量和静态方法的定义、静态方法的调用以及与实例变量和实例方法的区别等方面。

    2024-04-30
    18

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注