实时OLAP分析需求
一、背景介绍
在之前的文章学习了离线数仓的构建,但是离线数仓的最大问题即:慢,数据无法实时的通过可视化页面展示出来,通常离线数仓分析的是“T+1”的数据,针对于时效性要求比较高的场景,则无法满足需求,例如:快速实时返回“分组+聚合计算+排序聚合指标”查询需求。
因此智慧物流系统的应用场景分为以下几个部分:
- Spark-to-Kudu 小时/日级场景
- Spark-to-ClickHouse 秒级场景
- Spark-to-ElasticSearch 秒级场景
二、技术选型
目前市面上主流的开源OLAP引擎包含不限于:Hive、Presto、Kylin、Impala、Sparksql、Druid、Clickhouse、Greeplum等,可以说目前没有一个引擎能在数据量,灵活程度和性能上做到完美,用户需要根据自己的需求进行选型。
框架 |
描述 |
---|---|
Hive |
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 缺点是慢 |
Spark SQL |
SparkSQL的前身是Shark,它将 SQL 查询与 Spark 程序无缝集成,可以将结构化数据作为 Spark 的 RDD 进行查询。SparkSQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive。 |
Presto |
Presto 是由 Facebook 开源的大数据分布式 SQL 查询引擎,适用于交互式分析查询,可支持众多的数据源,包括 HDFS,RDBMS,KAFKA 等,而且提供了非常友好的接口开发数据源连接器。 Presto由于是基于内存的,而hive是在磁盘上读写的,因此presto比hive快很多,但是由于是基于内存的计算当多张大表关联操作时易引起内存溢出错误。 |
Kylin |
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。 所以适合Kylin的场景包括: 1)用户数据存在于Hadoop HDFS中,利用Hive将HDFS文件数据以关系数据方式存取,数据量巨大,在500G以上 2)每天有数G甚至数十G的数据增量导入 3)有10个以内较为固定的分析维度 |
Impala |
Impala不提供任何对序列化和反序列化的支持。 Impala只能读取文本文件,而不能读取自定义二进制文件。 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。这个缺点会导致正在执行的查询sql遇到刷新会挂起,查询不动。 |
Druid |
Druid 是一种能对历史和实时数据提供亚秒级别的查询的数据存储。Druid 支持低延时的数据摄取,灵活的数据探索分析,高性能的数据聚合,简便的水平扩展。适用于数据量大,可扩展能力要求高的分析型查询系统。 与其他的时序数据库类似,Druid在查询条件命中大量数据情况下可能会有性能问题,而且排序、聚合等能力普遍不太好,灵活性和扩展性不够,比如缺乏Join、子查询等。 |
Greeplum |
Greenplum是一个开源的大规模并行数据分析引擎。借助MPP(大规模并行处理)架构,在大型数据集上执行复杂SQL分析的速度比很多解决方案都要快。 Greenplum基于Postgresql,也就是说GreenPulm和TiDB的定位类似,想要在OLTP和OLAP上进行统一。 |
ClickHouse |
Clickhouse由俄罗斯yandex公司开发。专为在线数据分析而设计。Yandex是俄罗斯搜索引擎公司。官方提供的文档表名,ClickHouse 日处理记录数"十亿级"。 特性:采用列式存储;数据压缩;支持分片,并且同一个计算任务会在不同分片上并行执行,计算完成后会将结果汇总;支持SQL;支持联表查询;支持实时更新;自动多副本同步;支持索引;分布式存储查询。 大家对Nginx应该不陌生,战斗民族开源的软件普遍的特点包括:轻量级,快。 ClickHouse最大的特点就是快,快,快,重要的话说三遍!与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级 |
总结
上面给出了常用的一些OLAP引擎,各自有各自的特点,将其分组:
- Hive,Impala - 基于SQL on Hadoop
- Presto和Spark SQL类似 - 基于内存解析SQL生成执行计划
- Kylin - 用空间换时间,预计算
- Druid - 一个支持数据的实时摄入
- ClickHouse - OLAP领域的Hbase,单表查询性能优势巨大
- Greenpulm - OLAP领域的Postgresql