OLAP数据库
ClickHouse
ClickHouse 是基于 MPP 架构的分布式 ROLAP分析引擎,真正的列式数据库管理系统。让查询变得更快,最简单且有效的方法是减少数据扫描范围和数据传输时的大小, 而clickhouse的数据始终是按列存储的,同时使用了数据压缩,和日志合并树,稀疏索引和 CPU 功能
架构
- ZooKeeper:集群通过 ZooKeeper 服务进行管理
- Shard:集群多个分片组成,通过 Shard 的线性扩展能力,支持海量数据的分布式存储计算。
- Node:每个 Shard 内包含一定数量的Node,同一 Shard 内的节点互为副本,保障数据可靠。ClickHouse 中副本数可按需建设,且逻辑上不同 Shard 内的副本数可不同。
优点
- 写入吞吐量大, 50-200 M/S
- 数据压缩空间大,减少IO,占用更少的内存和cpu,服务器成本低
- 查询快,比HIVE快200倍以上
- 支持SQL,支持繁多数据统计分析函数,字段类型支持数组和嵌套数据结构
- 支持线性扩展,简单方便,高可用容错
- 高效利用CPU,数据不仅仅按列存储,同时还按向量(列的一部分)进行处理
- 支持近似计算,从磁盘检索少部分比例的样本进行计算
缺点
- 元数据管理需要人工干预维护
- SQL支持比较有限,不支持事务,join大表时,数据比较慢
- 不适合许多小数据高频插入,批量写入日志会有一定延迟
- 无法动态添加字段,需要提前定义好表schema
- 无法支持高并发查询,默认配置qps仅为100
- 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据
- 不支持聚合大的结果集(不能超过机器的内存)
Presto
优点
- 支持包括复杂查询、聚合、连接(join)和窗口函数(window functions)。
- Presto 本身不存储数据,但是可以接入多种数据源,且支持跨数据源的级联查询。
- 所有的查询处理都基于内存,读写比磁盘读写快很多,它通过一个定制的查询和执行引擎来完成的(类似于Hive和Pig使用MapReduce进行查询处理)。
缺点
由于是基于内存的计算,当多张大表进行关联操作时,容易引起内存溢出错误。
Impala
提供对 HDFS、Hbase 数据的高性能、低延迟的交互式 SQL 查询功能。Impala 使用 Hive的元数据, 完全在内存中计算。是CDH 平台首选的 PB 级大数据实时查询分析引擎
Druid
Druid更适合优化大型集群的基础架构成本