OLAP引擎Kylin和Clickhouse的对比

目录

 

1. 概述

2. 技术原理对比

2.1 kylin技术原理

2.2 clickhouse技术原理

3. 二者存储结构对比

3.1 kylin存储结构

3.2 hbase存储结构详细解释

3.3 parquet存储结构详解介绍

6. 参考链接


1. 概述

本文内容根据这篇文章学习总结而的。主要介绍二者各方面的对比,以及目前两款olap引擎在国内公司的使用情况。

kylin和clickhouse都是目前市场流行的大数据OLAP引擎


2. 技术原理对比

2.1 kylin技术原理

kylin使用Java开发,与hadoop生态高度融合。kylin集群依赖zookeeper协调,只支持select查询语句。

  • 存储和计算引擎

存储引擎:hbase(V4.0后可选)、parquet(结合spark)。

计算引擎:mapreduce、spark、flink。

  • MOLAP:kylin是基于hadoop的MOLAP(Multi-dimensional OLAP)技术,核心技术是OLAP Cube。
  • 支持海量(TB到PB)数据

基于hadoop生态,kylin中计算引擎有Mapreduce、spark、flink,预计算好的多维cube保存到hbase,hbase提供低延迟亚秒级查询响应。

  • kylin4开始使用spark+parquet来替换hbase

这样,就进一步简化kylin自身的架构,不再依赖hbase等组件

  • 查询性能提高百倍/千倍

由于大量聚合计算已离线计算好,执行查询sql时会直接从hbase或者parquet中读取结果,只需进行二次计算直接返回,比直接访问原始数据性能高百倍。

  • 总结、使用场景

kylin运行时cpu使用率低,可以支持较高并发量,尤其适用于自助分析固定报表多用户交互式分析的场景。


2.2 clickhouse技术原理

  • ROLAP

基于map架构的分布式rolap(relational olap)分析引擎。

  • 多节点、对等集群

clickhouse各节点职责对等,各自负责一部分数据的处理(shared nothing)。

  • 向量化执行引擎

clickhouse具有向量化执行引擎,利用日志合并数稀疏索引cpu的simd(单指令多数据,single instruction multiple data)等特性,充分发挥硬件优势,实现高效计算。

  • 特点总结

ch面对大数据量的计算场景时,通常达到cpu性能的极限,压榨cpu,ch的并发量不高,官网说是100。



3. 二者存储结构对比


3.1 kylin存储结构


目前kylin有两种可选的存储引擎hbaseparquet

  • hbase存储引擎

利用hbase的rowkey索引来加速查询,使用hbase region server做分布式并行计算。

  • parquet存储引擎

在kylin V4.x版本,引入了parquet存储引擎(需配合spark同时使用)。
利用parquet的row group稀疏索引加速查询。利用spark executor做分布式并行计算。

3.2 hbase存储结构详细解释

使用hbase存储预聚合后的结果,rowkey主要有cuboid+dim的编码组成,其中cuboid可由8位二进制表示00000000,现例如共有2个维度<year,city>,一个度量price。

数据源表和维度编码后如下图所示:

在上图表2中,year维度中值1993被编码为 0, 1994被编码为 1。city维度中值beijing-->0,shanghai-->1。

因此,表3不同维度聚合后的度量值和维度,在hbase中的KV格式如第4张图。

rowkey=cuboid编码+维度编码

现在来分析一下表4中是如何在hbase中存储的。观察表4中的第8行,以<year,city>这两个维度举例,cuboid id = 00000011(因位维度<year,city>都有具体的值,而不是*号,故7、8位都是1),现在观察表4的第8行,次级cuboid的编码是11,因位他的值在表3中分别是1994-->1,上海-->1,因此rowkey最终是(即00000011 11)的组成。

提示:这里不清楚的,可以参考这篇文章

上图4中hbase值给出了一个column,如果计算多个度量值,例如还有sum(profit)计算总收益,则在hbase中会有多个column,即hbase中 RowKey&Column

 

3.3 parquet存储结构详解介绍

在使用 Parquet 作为存储格式时则会直接存储维度值聚合值,而不需要进行编码和 rowkey 拼接。在存成 Parquet 之前,计算引擎会根据维度对计算结果进行排序,维度字段越是靠前,那么在其上的过滤效率也就越。另外在同一个分区下 shard 的数量和 parquet 文件的 row group 数量也同样会影响查询的效率。


 

6. 参考链接

  • kylin专业术语和工作原理

https://www.jianshu.com/p/22f716d9c528

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值