是选impala还是presto_Kylin、druid、presto、impala四种即席查询对比

本文详细对比了四种即席查询框架——Kylin、Impala、Druid和Presto。Kylin采用预计算Cube技术,通过HBase存储,提供亚秒级查询;Impala基于内存计算,提供低延迟SQL查询;Druid是一个分布式实时分析系统,擅长亚秒级OLAP查询;Presto则是一个分布式SQL查询引擎,适用于交互式分析,支持多种数据源。针对不同的业务需求和数据规模,这四个框架各有优劣。
摘要由CSDN通过智能技术生成

一、什么是即席查询

即席查询是用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。普通查应用查询是定制开发的,即席查询是用户自定义查询条件

理解:快速的执行自定义SQL(可能无法提前运算和预测)

重点关注:数据存储格式和架构

理解了什么是即席查询之后,下面会从定义、框架原理、优化等几个方面介绍这四个框架、最后会做一个对比,面对不同的业务选择合适的框架

二、Kylin

1、定义:Apache kylin是一个开源分布式分析引擎、提供Hadoop、Spark之上的SQL

查询接口及多维分析(OLAP)能力,可以再亚秒内查询巨大的Hive表

(还可以与BI工具集成ODBC、JDBC、RestAPI、还有自带的Zepplin插件,来访问Kylin服务)

2、架构Kylin架构

a、REST 服务层:应用程序开发的入口点

b、查询引擎层:Cube准备就绪后,与系统中的其他组件进行交互,从而向用户返回对应的结果

c、路由层:将解析的SQL生成的执行计划转换成Cube缓存的查询,cube通过预计算缓存在hbase中,这些操作可以在毫秒级完成,还有一些操作使用的原始查询,这部分延迟较高(麒麟高版本中已删除该层)

d、元数据管理工具:kylin的元数据管理存储在hbase中

e、任务引擎:处理所有离线任务:包括shell脚本、javaAPI以及MapReduce任务等等

3、原理

学习kylin的原理之前我们需要掌握几个名词维度:即观察数据的角度

度量:即被聚合的统计值也就是聚合运算的结果

Cuboid:对于每一种维度的组合,将度量值做聚合计算,然后将结果保存为一个物化视图,称为Cuboid。

Cube:所有维度组合的Cuboid作为一个整体,称为Cube。

Apache Kylin的工作原理本质上是MOLAP(多维立方体分析),即对数据模型做Cube预计算,并利用计算的结果加速查询

a、指定数据模型,定义维度和度量

b、预计算Cube,计算所有Cuboid并保存为物化视图

预计算过程是kylin读取hive中的数据,按照我们选定的维度进行计算,将结果保存在hbase中,默认计算引擎为MapReduce,其中build一次的结果我们称为一个segment,其中涉及多个算法,由kylin.cube.algorithm参数决定,参数值可选auto,layer和inmen,默认值为auto。

逐层构建算法(layer)逐层算法中,按维度数逐层减少来计算,每个层级的计算(除了第一层,它是从原始数据聚合而来),是基于它上一层级的结果来计算的。比如,[Group by A, B]的结果,可以基于[Group by A, B, C]的结果,通过去掉C后聚合得来的;这样可以减少重复计算;当 0维度Cuboid计算出来的时候,整个Cube的计算也就完成了。

每一轮的计算都是一个MapReduce任务,且串行执行;一个N维的Cube,至少需要N+1次MapReduce Job。

缺点:该算法的效率较低,尤其是当Cube维度系数较大的时候

快速构建算法(inmem)也被称作“逐段”(By Segment) 或“逐块”(By Split) 算法,从1.5.x开始引入该算法,利用Mapper端计算先完成大部分聚合,再将聚合后的结果交给Reducer,从而降低对网络瓶颈的压力。该算法的主要思想是,对Mapper所分配的数据块,将它计算成一个完整的小Cube 段(包含所有Cuboid);每个Mapper将计算完的Cube段输出给Reducer做合并,生成大Cube,也就是最终结果;如图所示解释了此流程。

与旧算法相比,快速算法主要有两点不同:

1) Mapper会利用内存做预聚合,算出所有组合;Mapper输出的每个Key都是不同的,这样会减少输出到Hadoop MapReduce的数据量;

2)一轮MapReduce便会完成所有层次的计算,减少Hadoop任务的调配。

c、执行查询,读取Cuboid,运行,产生查询结果

下面举一个简单的例子说明,假设有一个电商的销售数据集,其中维度包括时间[time]、商品[item]、地区[location]和供应商[supplier],度量为销售额。那么所有维度的组合就有2的4次方-1 = 15种一维度(1D)的组合有:[time]、[item]、[location]和[supplier]4种;

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值