大数据OLAP系统比较
选择presto和clickhouse配合使用
理由:
先大致按照OLAP的设计思路把常用的系统分下类:
列式数据库加索引
预计算空间换时间
从所有的系统中选出相对符合的再进行深入一点的比较如下:
Clickhouse | Druid | Apache Kylin | |
---|---|---|---|
语言 | C++ | Java | Java |
Star | 7743 | 8405 | 2275 |
活跃度 | 活跃 | 活跃 | 活跃 |
亚秒级响应 | √ | √ | √ |
列式数据库 | √ | √ | × |
预计算 | × | √ | √ |
云存储 | × | √ | √ |
机器 | 省 | 省 | 费 |
join | √ | × | √ |
商业公司 | Altinity | Imply和Hortonworks | Kyligence |
至于clickhouse/druid/pinot三者的比较可以参见这篇文章:Comparison of the Open Source OLAP Systems for Big Data: ClickHouse, Druid, and Pinot,整体写的非常好而且有深度,对比表格翻译如下:
ClickHouse | Druid/Pinot |
---|---|
具备C++经验的组织 | 具备Java经验的组织 |
小型集群 | 大型集群 |
少量表 | 大量表 |
单一数据集 | 多个不相关的数据集(多租户) |
表和数据集永久驻留在集群中 | 表和数据集定期出现并从群集中退出 |
表格大小(以及它们的查询强度)在时间上是稳定的 | 表格随时间热度降低 |
查询的同质性(其类型,大小,按时间分布等) | 异质性 |
存在可以用于分区的维度,且经过该维度分区后,几乎不会触发跨分区的数据查询 | 没有这样的维度,查询经常触及整个集群中的数据 |
不使用云,集群部署在特定的物理服务器上 | 群集部署在云中 |
无需依赖现有的Hadoop或Spark集群 | Hadoop或Spark的集群已经存在并且可以使用 |
ClickHouse,Druid和Pinot三个系统都还不成熟。在这三个系统中,ClickHouse与Druid和Pinot略有不同,而后两者几乎完全相同,它们几乎是两个独立开发的完全相同系统的实现。
与ClickHouse相比,Druid和Pinot更适合优化大型集群的基础架构成本,并且更适合云环境。
Druid和Pinot之间唯一可持续的区别是,Pinot依赖于Helix框架并将继续依赖ZooKeeper,而德鲁伊可能会远离对ZooKeeper的依赖。另一方面,德鲁伊安装将继续依赖于某些SQL数据库的存在。
在CK和Druid中选择了CK,10个节点的规模CK更好
目前公司最大的单表数据为10B,也就是100亿:门店3公里内的所有门店以及经纬度数据,占用S3空间110G
项目地址:https://github.com/yandex/ClickHouse
架构概述:https://clickhouse.yandex/docs/zh/development/architecture/
支持primary key sorting,不支持inverted indexes
https://github.com/yandex/ClickHouse/issues/5125
不支持primary key sorting,支持inverted indexes
通过编写 Json 文件,以 HTTP 的方式请求 Druid
支持sql
国内使用Druid比较多,有赞,美团等
https://tech.youzan.com/realtime-olap-on-druid/
https://github.com/apache/incubator-druid
Java star 8405
项目地址:https://github.com/apache/incubator-pinot/
架构概述:https://pinot.readthedocs.io/en/latest/architecture.html
2323 star 活跃
国内使用Pinot的比较少
Doris前身是Palo,Palo是百度自研的基于MPP的交互式SQL数据仓库
架构概述:https://doris.incubator.apache.org/Docs/cn/internal/metadata-design.html#id3
项目地址:https://github.com/apache/incubator-doris
1294 star 活跃
C++
来源百度
国内使用Pinot的比较少
https://github.com/apache/kylin
来源:eBay
语言:Java
2275 star 活跃
在国内广泛使用
链家使用Kylin:https://www.infoq.cn/article/lianjia-data-analysis-apache-kylin
典型的空间换时间:维度优化,预计算的结果需要存储到 Hbase
优势:
代价:
Apache kylin中cube的构建过程及原理分析:https://www.cnblogs.com/shibit/p/7039794.html
https://github.com/pentaho/mondrian
https://blog.csdn.net/ZYC88888/article/details/80311014
792 star,不活跃,性能一般(曹总说)
Java
Mondrian不是一个真正的OLAP数据库,是一个基于关系数据库的分析服务器
查询瓶颈仍然在底层的存储层的查询效率,只是对于动态多维度分析做了优化
通过xml而不是sql查询
现状:
后续可以做的工作:
参考: