你需要的不是实时数仓 | 你需要的是一款强大的OLAP数据库(下) (3)

而Kylin自身就是一个MOLAP系统,多维立方体(MOLAP Cube)的设计使得用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体进行数据的预聚合。

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

file

Kylin的优势有:

提供ANSI-SQL接口

交互式查询能力

MOLAP Cube 的概念

与BI工具可无缝整合

所以适合Kylin的场景包括:

用户数据存在于Hadoop HDFS中,利用Hive将HDFS文件数据以关系数据方式存取,数据量巨大,在500G以上

每天有数G甚至数十G的数据增量导入

有10个以内较为固定的分析维度

简单来说,Kylin中数据立方的思想就是以空间换时间,通过定义一系列的纬度,对每个纬度的组合进行预先计算并存储。有N个纬度,就会有2的N次种组合。所以最好控制好纬度的数量,因为存储量会随着纬度的增加爆炸式的增长,产生灾难性后果。

Impala

https://impala.apache.org/

Impala也是一个SQL on Hadoop的查询工具,底层采用MPP技术,支持快速交互式SQL查询。与Hive共享元数据存储。Impalad是核心进程,负责接收查询请求并向多个数据节点分发任务。statestored进程负责监控所有Impalad进程,并向集群中的节点报告各个Impalad进程的状态。catalogd进程负责广播通知元数据的最新信息。

Impala的架构图如下:

file

Impala的特性包括:

支持Parquet、Avro、Text、RCFile、SequenceFile等多种文件格式

支持存储在HDFS、HBase、Amazon S3上的数据操作

支持多种压缩编码方式:Snappy、Gzip、Deflate、Bzip2、LZO

支持UDF和UDAF

自动以最有效的顺序进行表连接

允许定义查询的优先级排队策略

支持多用户并发查询

支持数据缓存

提供计算统计信息(COMPUTE STATS)

提供窗口函数(聚合 OVER PARTITION, RANK, LEAD, LAG, NTILE等等)以支持高级分析功能

支持使用磁盘进行连接和聚合,当操作使用的内存溢出时转为磁盘操作

允许在where子句中使用子查询

允许增量统计——只在新数据或改变的数据上执行统计计算

支持maps、structs、arrays上的复杂嵌套查询

可以使用impala插入或更新HBase

同样,Impala经常会和Hive、Presto放在一起做比较,Impala的劣势也同样明显:

Impala不提供任何对序列化和反序列化的支持。

Impala只能读取文本文件,而不能读取自定义二进制文件。

每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。这个缺点会导致正在执行的查询sql遇到刷新会挂起,查询不动。

Druid

https://druid.apache.org/
https://blog.csdn.net/warren288/article/details/80629909

Druid 是一种能对历史和实时数据提供亚秒级别的查询的数据存储。Druid 支持低延时的数据摄取,灵活的数据探索分析,高性能的数据聚合,简便的水平扩展。适用于数据量大,可扩展能力要求高的分析型查询系统。

Druid解决的问题包括:数据的快速摄入和数据的快速查询。
所以要理解Druid,需要将其理解为两个系统,即输入系统和查询系统。

Druid的架构如下:

file

file

Druid的特点包括:

Druid实时的数据消费,真正做到数据摄入实时、查询结果实时

Druid支持 PB 级数据、千亿级事件快速处理,支持每秒数千查询并发

Druid的核心是时间序列,把数据按照时间序列分批存储,十分适合用于对按时间进行统计分析的场景

Druid把数据列分为三类:时间戳、维度列、指标列

Druid不支持多表连接

Druid中的数据一般是使用其他计算框架(Spark等)预计算好的低层次统计数据

Druid不适合用于处理透视维度复杂多变的查询场景

Druid擅长的查询类型比较单一,一些常用的SQL(groupby 等)语句在druid里运行速度一般

Druid支持低延时的数据插入、更新,但是比hbase、传统数据库要慢很多

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgdjj.html