技术选型 - OLAP大数据技术哪家强?

技术选型 - OLAP大数据技术哪家强?,第1张

Lambda架构的核心理念是“流批一体化”,因为随着机器性能和数据框架的不断完善,用户其实不关心底层是如何运行的,批处理也好,流式处理也罢,能按照统一的模型返回结果就可以了,这就是Lambda架构诞生的原因。现在很多应用,例如Spark和Flink,都支持这种结构,也就是数据进入平台后,可以选择批处理运行,也可以选择流式处理运行,但不管怎样,一致性都是相同的。

Kylin

Kylin的主要特点是预计算,提前计算好各个cube,这样的优点是查询快速,秒级延迟;缺点也非常明显,灵活性不足,无法做一些 探索 式的,关联性的数据分析。

适合的场景也是比较固定的,场景清晰的地方。

ClickHouse

Clickhouse由俄罗斯yandex公司开发。专为在线数据分析而设计。

Clickhouse最大的特点首先是快 ,为了快采用了列式储存,列式储存更好的支持压缩,压缩后的数据传输量变小,所以更快;同时支持分片,支持分布式执行,支持SQL。

ClickHouse很轻量级,支持数据压缩和最终数据一致性,其数据量级在PB级别。

另外Clickhouse不是为关联分析而生,所以多表关联支持的不太好。

同样Clickhouse不能修改或者删除数据,仅能用于批量删除或修改。没有完整的事务支持,不支持二级索引等等,缺点也非常明显。

与Kylin相比ClickHouse更加的灵活,sql支持的更好,但是相比Kylin,ClickHouse不支持大并发,也就是不能很多访问同时在线。

总之ClickHouse用于在线数据分析,支持功能简单。CPU 利用率高,速度极快。最好的场景用于行为统计分析。

Hive

Hive这个工具,大家一定很熟悉,大数据仓库的首选工具。可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能。

主要功能是可以将sql语句转换为相对应的MapReduce任务进行运行,这样可能处理海量的数据批量,

Hive与HDFS结合紧密,在大数据开始初期,提供一种直接使用sql就能访问HDFS的方案,摆脱了写MapReduce任务的方式,极大的降低了大数据的门槛。

当然Hive的缺点非常明显,定义的是分钟级别的查询延迟,估计都是在比较理想的情况。 但是作为数据仓库的每日批量工具,的确是一个稳定合格的产品。

Presto

Presto极大的改进了Hive的查询速度,而且Presto 本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询,支持包括复杂查询、聚合、连接等等。

Presto没有使用MapReduce,它是通过一个定制的查询和执行引擎来完成的。它的所有的查询处理是在内存中,这也是它的性能很高的一个主要原因。

Presto由于是基于内存的,缺点可能是多张大表关联 *** 作时易引起内存溢出错误。

另外Presto不支持OLTP的场景,所以不要把Presto当做数据库来使用。

Presto相比ClickHouse优点主要是多表join效果好。相比ClickHouse的支持功能简单,场景支持单一,Presto支持复杂的查询,应用范围更广。

Impala

Impala是Cloudera 公司推出,提供对 HDFS、Hbase 数据的高性能、低延迟的交互式 SQL 查询功能。

Impala 使用 Hive的元数据, 完全在内存中计算。是CDH 平台首选的 PB 级大数据实时查询分析引擎。

Impala 的缺点也很明显,首先严重依赖Hive,而且稳定性也稍差,元数据需要单独的mysql/pgsql来存储,对数据源的支持比较少,很多nosql是不支持的。但是,估计是cloudera的国内市场推广做的不错,Impala在国内的市场不错。

SparkSQL

SparkSQL的前身是Shark,它将 SQL 查询与 Spark 程序无缝集成,可以将结构化数据作为 Spark 的 RDD 进行查询。

SparkSQL后续不再受限于Hive,只是兼容Hive。

SparkSQL提供了sql访问和API访问的接口。

支持访问各式各样的数据源,包括Hive, Avro, Parquet, ORC, JSON, and JDBC。

Drill

Drill好像国内使用的很少,根据定义,Drill是一个低延迟的分布式海量数据交互式查询引擎,支持多种数据源,包括hadoop,NoSQL存储等等。

除了支持多种的数据源,Drill跟BI工具集成比较好。

Druid

Druid是专为海量数据集上的做高性能 OLAP而设计的数据存储和分析系统。

Druid 的架构是 Lambda 架构,分成实时层和批处理层。

Druid的核心设计结合了数据仓库,时间序列数据库和搜索系统的思想,以创建一个统一的系统,用于针对各种用例的实时分析。Druid将这三个系统中每个系统的关键特征合并到其接收层,存储格式,查询层和核心体系结构中。

目前 Druid 的去重都是非精确的,Druid 适合处理星型模型的数据,不支持关联 *** 作。也不支持数据的更新。

Druid最大的优点还是支持实时与查询功能,解约了很多开发工作。

Kudu

kudu是一套完全独立的分布式存储引擎,很多设计概念上借鉴了HBase,但是又跟HBase不同,不需要HDFS,通过raft做数据复制;分片策略支持keyrange和hash等多种。

数据格式在parquet基础上做了些修改,支持二级索引,更像一个列式存储,而不是HBase schema-free的kv方式。

kudu也是cloudera主导的项目,跟Impala结合比较好,通过impala可以支持update *** 作。

kudu相对于原有parquet和ORC格式主要还是做增量更新的。

Hbase

Hbase使用的很广,更多的是作为一个KV数据库来使用,查询的速度很快。

Hawq

Hawq是一个Hadoop原生大规模并行SQL分析引擎,Hawq采用 MPP 架构,改进了针对 Hadoop 的基于成本的查询优化器。

除了能高效处理本身的内部数据,还可通过 PXF 访问 HDFS、Hive、HBase、JSON 等外部数据源。HAWQ全面兼容 SQL 标准,还可用 SQL 完成简单的数据挖掘和机器学习。无论是功能特性,还是性能表现,HAWQ 都比较适用于构建 Hadoop 分析型数据仓库应用。

个人认为mysql是一种轻型数据库,他的优势在于小巧,方便,快捷,就算经过优化,集群等 *** 作,一般就是DSS系统或者OLTP系统,因为这里mysql还有些优势。如果用在OLAP上,个人感觉从性能上来说,不太适合。

而且现在oracle收购了mysql,一般oracle为大型的数据库架构,mysql则更侧重于中小型,所以个人认为不太合适。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8640760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存