alun-chen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

 

 

 

一、传统DB与大数据DB

随着互联网落地场景越来越盛行,各工具五花八门,数据也会越来越大,传统的数据库已经很难支撑大数据。传统数据库如sqlserveroraclemysqlplsql

传统数据库处理结构化数据,遵循固定的格式,如关系型数据,尤其擅长处理事务型数据。而大数据db可存储结构化、非结构化数据,能够处理各种各样的数据,包括图片、文本、视频。

在扩展性方面,虽然传统DB能保存大量数据,但到了PB级别甚至TB级别时,传统db性能会急剧下降,而且费用变得昂贵,各方面变得复杂。大数据DB理论上无限扩展,有足够的存储资源就能把数据存储起来,无需过多的内存及CPU

在一致性方面,传统DB遵循ACID原则,数据一致性强。通过CAP理论,大数据DB保证最终一致性,即牺牲了一致性来保证网络分区容忍性+可用性。

最终在支持结构化查询语言sql方面,传统DB因是这方面的创造者固然支持良好,大数据DB也在往这方面发展,整体成熟性还待时间发展,部分工具已经成熟了。

 

 

 

二、主流大数据存储工具

网上很多主流工具的介绍,这里做简单介绍。

1HDFS

HDFS作为早期第一批存储工具,为大数据做出了很大贡献。HDFS作为hadoop最基本的存储工具,能处理大PB级别,能通过副本机制、分区特性提升可用性,能降低存储成本。

正如其能够存储大批量数据,所以做不到低延迟的查询,复杂的查询需要各种job来做处理。注意使用HDFS时,减少小文件的使用,大量小文件会导致元数据效率低下。

 

2Cassandra

Cassandra支持CQL,与SQL有些区别,不支持SQL的复杂查询,可存储结构化或半结构化数据,很容易能实现DB扩展。

 

3HBase

HBase ali使用的较多,一般用在QPS并发高的场景。但其不支持sql,查询有限制,所以在需求阶段就定好哪些能实现及不能实现。比如命中rowkey、二级索引。

 

4Elasticsearch

es也是使用较多的查询引擎,多用于数据量大的实时分页查询,或日志查询。但es会消耗较多的资源、查询语句支持较差。现在越来越多业内解决方案使用doris来代替es,更多考虑的是成本及doris支持跨表查询,但es的全文检索doris无法代替。

 

5Apache Doris

Doris最初由百度开发,后贡献给apache基金会。其主要优点在于非常适用OLAP场景,无缝切合mysql,使用mysql驱动进行jdbc连接。缺点在于大规模部署有有待验证,高并发场景因MPP架构小概率会出现简单sql语句查询变慢的情况。

 

6ClickHouse

Clickhouse在单表大数据量查询上没有DB能与之匹配,它在设计之初针对单表查询,在join联表查询上表现一般般。Clickhouse比较消耗cpujoin查询比较消耗内存,高并发场景不建议使用clickhouse,并发不高低延迟场景建议使用clickhouse。毕竟,doirs也在模仿clickhouse的技术。

 

 

 

三、工具选择的因素

HDFS:适合存储大量经常不变的数据。

Cassandra:适合扩多个数据中心复制、宽列存储、高可用场景。

HBase:适合随机读写场景。

Elasticsearch:全文检索。

Apache DorisOLAP、高并发、多表查询。

ClickhouseOLAP、低延迟、单表查询。

 

 

 

四、常见问题

1HDFS 元数据过载问题

Hive中元数据DB一般使用mysql存储,解决问题一般是使用分区、读写分离、索引查询优化等。

2Cassandra的热点问题

设置分区建,均衡数据分布。

3HBaseRegion热点问题

使用Rowkey随机值

4Elasticsearch的版本升级问题

es升级很坑,很多时候不兼容以前的版本。无解,一步一个脚印

5Elasticsearch查询性能低下

使用keywork精确匹配

6Apache Doris在大数据量复杂查询时,性能不好

使用物化视图、增加BE节点或数量。根据MPP架构,一般情况下BE节点越多,性能会越好(BE节点到达某个数性能提高有限)。

 

 

 

可以关注本人的公众号,多年经验的原创文章共享给大家。

 

 

 

 

posted on 2024-04-18 15:58  alun-chen  阅读(4)  评论(0编辑  收藏  举报