开源OLAP引擎对比
什么是olap
01、绝大多数请求都是读请求
02、数据以相当大的批次(>1000行)更新,而不是单行更新;或者它根本没有更新
03、数据已添加到数据库,但不会进行修改
04、对于读取,每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
05、表格“宽”,意味着它们包含大量列
06、查询相对较少(通常每台服务器数百个查询或每秒更少)
07、对于简单查询,允许延迟大约50毫秒
08、列中的数据相对较小:一般来说,都是数字和短字符串(例如,每个URL 60个字节)
09、处理单个查询时需要高吞吐量(每个服务器每秒最多数十亿行)
10、Transactions不是必需的
11、对数据一致性要求低
12、每个查询有一个大表。所有其他表都很小,除了这个大表
13、查询结果明显小于源数据。换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中
mysql: 少量结构化数据的针对单条记录的增删改查
hbase: 针对海量数据的key-value增删改查
redis: 基于内存的针对key-value类型的增删改查,热数据的缓存
mongodb: 文档数据库 elasticsearch: 针对文件做全文检索的(倒排索引)
clickhouse: 针对海量数据的大量行少量列的聚合查询分析的请求
- Druid:由广告公司 MetaMarkets 开源的实时大数据分析引擎,2011 年创建,并于 2012 年开源。主要用于大规模事件流数据(Event Stream Data)的存储和分析。Druid 被阿里、小米、网易、优酷、微博等公司广泛应用。
- Presto:Facebook 2013 年开源的 OLAP 工具。Airbnb 和 Dropbox、京东、有赞、微博等公司使用该工具。
- Clickhouse:第一大搜索引擎 Yandex 开发的列式储存数据库。 ClickHouse 比 Vertica 约快5倍,比 Hive 快 279 倍。比 My SQL 快 801 倍。字节跳动、阿里、微博......几乎所有主流互联网公司,都会使用到 ClickHouse。
Druid
优点
- Druid 支持实时数据摄入,且可以立即查询;
- 类似其他 OLAP 工具,摄入数据时先预计算,以节省数据存储量级;
- 列式存储。区别传统行式存储,每次查询要加载整个表,列式存储只需加载指定列数据,大大提升性能。由于列式存储这个优势,目前主流 OLAP 都采用列式存储;
- 水平扩展。可部署到几十甚至几百台集群,支持万亿条记录查询。
缺点
- 查询中涉及多个大表之间 join,即:Druid对表关联操作支持很有限。
- 数据查询对延时要求不高,但对用户某具体行为颗粒度的场景分析。因为预计算会损失用户行为的个性化信息,所以这种情况是不容许进行预计算操作的。
Presto
- 快!Presto 最大的特点是快,它的设计初衷是解决快速查询大数据问题,期望查询时间是在几秒或者几分钟,因此速度是 Hive 的 10 倍以上;
- Presto 可以查询完全基于内存计算的分布式 SQL 查询引擎。所有查询、计算都可以在内存中进行;
- Presto 可以接入数据源,包括 Hive、Kafaka、MySQL、Redis 等;
- Presto 为标准 SQL,支持复杂 SQL 查询。
缺点
- 我们知道 Presto 运算时是将查询任务拆分到多个 Worker 机器上去分别进行内存运算。其中哪怕一个 Worker 由于各式各样的原因挂掉(比如内存溢出等),整个 Presto 查询任务就会失败。相比较而言,Hive 的容错性能就要好很多。一台机器挂掉或者被其他计算任务抢占,计算也并不会因此失败。它会重新向 Master 申请资源,继续计算。
- Presto 属于纯内存计算,不适合大表之间的多表 join 操作。否则容易引起内存溢出 OOM,造成查询任务失败。
- Presto 采用 MPP(Massively Parallel Processing:大规模并行处理)架构,本身 MPP 架构使用场景就是秒级、毫秒级的查询场景,速度很快。但 MPP 有个明显缺点,即短板效应。如果一个 Worker 节点计算慢于其他节点,那整个计算任务都会受限于该节点。在实际工作中,Presto 接入的很可能就是 HDFS 数据源,不同节点的数据不一定分布均匀,这使得不同 Worker 干活效率不一样。而 Hive、Spark 等采用的批处理系统则会避免这一点。
ClickHouse
- 提供极致的查询性能。比传统数据处理引擎快 100~1000 倍,数据吞吐能力高达50MB~200MB/s。使用体验非常好。
- 大数据的极低存储成本。ClickHouse 针对 OLAP 场景,开发高效列式存储、数据压缩算法,可以将原数据压缩 10 倍,极大提高单机数据存储和计算能力。可以简单理解为,原来一台机器存储 1TB 原始日志,而采用 ClickHouse 可以存储 10TB 原始日志。
- 支持 SQL 查询,并同时支持 join 等复杂计算逻辑。ClickHouse 之所以能拥有极致的计算性能,即使简单的查询,ClickHouse 也会使用服务器一半的 CPU 去执行,所以其充分利用了机器的计算资源,并实现单机多核并行计算、集群分布式计算、列存储且列计算等。
缺点
- 不支持事务操作,即数据的删除、更新。
- 不支持高并发,建议 QPS 为 100。即每秒查询操作不要超过 100 个。
参考: 奈学教育笔记
开源OLAP引擎对比的更多相关文章
- 大数据OLAP引擎对比
Presto:内存计算,mpp架构 PB级别数据 presto适合pb级的海量数据查询分析,不是说把pb的数据放进内存,比如一张pb表,查询count,vag这种有个特点,虽然数据很多,但是最终的 ...
- Camunda开源流程引擎快速入门——Hello World
市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早,国内人用的 ...
- 六大主流开源SQL引擎
导读 本文涵盖了6个开源领导者:Hive.Impala.Spark SQL.Drill.HAWQ 以及Presto,还加上Calcite.Kylin.Phoenix.Tajo 和Trafodion.以 ...
- 六大主流开源SQL引擎总结
本文涵盖了6个开源领导者:Hive.Impala.Spark SQL.Drill.HAWQ 以及Presto,还加上Calcite.Kylin.Phoenix.Tajo 和Trafodion.以及2个 ...
- [转帖]OLAP引擎这么多,为什么苏宁选择用Druid?
OLAP引擎这么多,为什么苏宁选择用Druid? 原创 51CTO 2018-12-21 11:24:12 [51CTO.com原创稿件]随着公司业务增长迅速,数据量越来越大,数据的种类也越来越丰富, ...
- 6大主流开源SQL引擎总结,遥遥领先的是谁?
根据 O’Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最广泛的语言.大部分项目都需要一些SQL 操作,甚至有一些只需要SQL.本文就带你来了解这些主流的开源SQL引擎!背景 ...
- 你需要知道的MySQL开源存储引擎TokuDB
在四月份的Percona Live MySQL会议上, TokuDB庆祝自己成为开源存储引擎整一周年.我现在仍能记得一年前它刚创建时的官方声明与对它的期望.当时的情况非常有意思,因为它拥有帮助MySQ ...
- OLAP了解与OLAP引擎——Mondrian入门
一. OLAP的基本概念 OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术:OLAP利用多维数据库技术使用户从不同角度观察数据:OLAP ...
- 分布式大数据多维数据分析(olap)引擎kylin[转]
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay 开发并贡献至开源社区.它能在亚秒内查询巨大的Hiv ...
随机推荐
- 下载并破解IntelliJ IDEA(2017)
idea的下载:https://www.jetbrains.com/idea/download/#section=windows 破解链接:http://blog.csdn.net/nn_jbrs/a ...
- SQL server分页的四种方法(算很全面了)
这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本.下面都用pageIndex表示页数,pageSize表示一页包含的记录.并且下面涉及到具体例子的,设定查询第2 ...
- jmeter简单的压力测试
Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好.相比LR来说操作简单方便,关键是免费,基于JAVA开发,所以需 ...
- HTML+JavaScript画函数图像
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 《Spring Boot 实战纪实》之如何攥写需求文档
目录 前言 (思维篇)人人都是产品经理 1.需求文档 1.1 需求管理 1.2 如何攥写需求文档 1.3 需求关键点文档 2 原型设计 2.1 缺失的逻辑 2.2 让想法跃然纸上 3 开发设计文档 3 ...
- z-index失效原因分析——由一个bug引发的对层叠上下文和z-index属性的深度思考
新年刚开工就被一个bug虐得整个人都不好了,特地记录下. (一)bug描述 在一个fixed-data-table(一个React组件)制作的表格中,需要给表头的字段提示的特效,所以做了一个提示层,但 ...
- CentOS下如何用nmon收集系统实时运行状况
#赋予执行权限 chmod +x nmon 执行./nmon可以查看实时的系统状态有提示的,d看磁盘,n看网络,c看cpu #如果不想看实时的,想收集系统长时间运行情况然后分析,可用这个 nohup ...
- String、StringBUffer和StringBuilder的区别与使用
一.区别 String是一个不可变的类,即创建String对象后,该对象中的字符串是不可变的,平时我们改变String对象中的字符串实际上是通过StringBuffer实现的,所以StringBuff ...
- 利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果
利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果 前言 近日公司接到一个轨道系统的需求,需要将地铁线路及列车实时位置展示在大屏上.既然是大屏项目,那视觉效果当然是第一重点,咱们可以先来看看项 ...
- springsecurity实现前后端分离之jwt-资料收集
https://www.jianshu.com/p/5b9f1f4de88d https://www.jianshu.com/p/725d32ab92f8 https://blog.csdn.net/ ...