HBase总结之基本概念
背景介绍
- 由于互联网发展,由于人和设备运行产生的数据急剧爆发,所需要处理的数据超过传统技术所能处理的极限。所以面对海量数据存储和处理的大数据技术应运而生
- 大数据技术主要处理2个问题,数据存储和数据的处理和分析
- 大数据所需要处理的数据主要分3类,结构化数据、非结构数据、半结构化数据。结构化数据就是存储在各个数据库中的结构化数据典型如mysql中存储的数据;非结构数据如小说文本、图片、视频、音频、ppt、word文档等等;半结构化数据如日志文件
- HBase就是可以存储海量数据,并且支持结构化、非结构化、半结构化三大类数据的分布式数据库。
1.HBase是什么
- http://hbase.apache.org/downloads.html
- 官网截图
- HBase是一个用于存储海量的结构化或者半结构,非结构化的数据的数据库,属于apache下面的一个项目,本身从属于hadoop生态。
- 分布式存储,数据存储在不同集群节点上。同时因为是分布式,可以利用节点来处理不同地数据请求提升并发能力。分布式存储,可以动态扩展节点来提升数据存储和处理能力。
- 基于列的数据存储,对比行式数据存储如mysql,hbase可以应对稀疏数据,并且数据压缩支持地非常好。数据本身是以key value形式的字节形式存储在文件中。
2.HBase解决了什么问题
- HBase解决了大数据各种类型数据无法存储在一起的问题,HBase可以存储结构化、非结构化、半结构化的数据
- 解决了数据存储后查询性能弱的问题(当然查询性能只针对单维度查询,多维度查询现在有更强的clickhouse来替代,所以目前clickhouse的研究和应用逐步提升,后续会撰文分享)
- 可以通过主键rowkey和range来检索数据,而且支持单行事务。本身以列族来存储数据,一个列族中可以有很多列。
- 可以存储稀疏数据,并且可以很好应对大表几十亿行,几百万列(小表不适合存储在hbase上,这一点和hdfs不适合存储小文件类似。单表200万行)
- 采用集群分布式存储,节点叫regionserver,存储一定范围数据。这样不同节点处理不同范围内数据,可以很好提升并发能力。
- HBase适合存储结构简单但数据量很大的数据,不过本身索引能力有限。所以和传统关系型数据库互为补充,传统关系型数据库读写性能很强且功能丰富,但无法很好应对海量数据。
- 因为Hbase本身对查询多维度信息支持不够(rowkey形式进行key value查询数据),所以不适合用于多维度查询如OLAP。这一点Clickhouse在存储、查询、性能等方面全方位压制HBase。