开源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 ...
随机推荐
- FL Studio 插件使用教程 —— 3x Osc(下)
我们继续深入研究一下fl的3x Osc教程. 包络线是修饰音色非常重要的一个部件,有了它,音色不再是单调的长音,而能有长有短,有深有浅,变得丰富多彩.因此,学习包络线的运作原理很重要. 图1:包络线界 ...
- EasyRecovery扫描预览功能,助你选择需要的数据恢复
说到数据恢复,很多人都会选择EasyRecovery,EasyRecovery作为一个功能性还不错的数据恢复软件,能够帮你恢复丢失的数据以及重建文件系统. 在数据恢复的同时,EasyRecovery还 ...
- CSP-SJX2019 解题报告
T1 日期 日高于 \(31\) 或等于 \(00\) 的要修改 \(1\) 次. 月高于 \(12\) 或等于 \(00\) 的要修改 \(1\) 次. 月等于 \(02\) 且日大于 \(28\) ...
- java实验作业1
1 //1已知圆的半径为10,求其周长及面积 2 package calsswork3; 3 4 public class test3_1 { 5 //求周长 6 public static doub ...
- LaTeX中的表格
表格插入代码及注释: 显示效果: 更多命令可以看相关文档,通过在命令行终端输入 texdoc booktab 等命令打开文档.
- JQuery浮动对象插件
写了个插件,用来固定表的头部和尾部. /*! * smartFloat v1.0.1 * Copyright 2019- Richard * Licensed under MIT */ $.fn.ex ...
- Python中format_map与format字符串格式化的区别
在Python3中使用format和format_map方法都可以进行字符串格式化,但format是一种所有情况都能使用的格式化方法,format_map仅使用于字符串格式中可变数据参数来源于字典等映 ...
- Python怎么控制将一个整数输出成指定长的十六进制数?
使用format方法,在格式控制中进行控制,具体控制参数为: {:#016X} 其中: 大括号表示该处从后面的format的参数中取值 冒号表示格式控制开始 0表示长度不足16位补0 16表示长度 X ...
- PyQt(Python+Qt)学习随笔:formLayout的layoutRowWrapPolicy属性
Qt Designer的表单布局(formLayout)中,layoutRowWrapPolicy用于控制表单布局中表单行的标签和输入部件之间是否换行.如图: 上图中蓝色标记圈起来的下拉列表数据是其可 ...
- web安全漏洞
1.什么是Web漏洞 WEB漏洞通常是指网站程序上的漏洞,可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞.如果网站存在WEB漏洞并被黑客攻击者利用,攻击者可以轻易控制整个网站,并可进一步 ...