Spark

Hbase——详解

2023-03-19  本文已影响0人  小波同学

产生背景

自 1970 年以来,关系数据库用于数据存储和维护有关问题的解决方案。大数据的出现后, 好多公司实现处理大数据并从中受益,并开始选择像 Hadoop 的解决方案。Hadoop 使用分 布式文件系统,用于存储大数据,并使用 MapReduce 来处理。Hadoop 擅长于存储各种格式 的庞大的数据,任意的格式甚至非结构化的处理。

Hadoop 的限制
Hadoop 只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集, 即使是最简单的搜索工作。 当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个 新的解决方案,需要访问数据中的任何点(随机访问)单元。

Hadoop 随机存取数据库
应用程序,如 HBase,Cassandra,CouchDB,Dynamo 和 MongoDB 都是一些存储大量数据和 以随机方式访问数据的数据库。

总结:

一、Hbase的概念

Hbase 官网:hbase.apache.org

HBase是Hadoop的生态系统,是建立在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力。如果你需要进行实时读写或者随机访问大规模的数据集的时候,请考虑使用HBase!

HBase作为Google Bigtable的开源实现,Google Bigtable利用GFS作为其文件存储系统类似,则HBase利用Hadoop HDFS作为其文件存储系统;Google通过运行MapReduce来处理Bigtable中的海量数据,同样,HBase利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。

HBase 是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据,设计它的目的就是用于处理非常庞大的表——通过水平扩展的方式,用计算机集群就可以处理由超过 10 亿行数据和数百万列元素所组成的数据表。

HBase 数据库的要点

结构化、半结构化和非结构化

与 Hadoop 一样,HBase 目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加 计算和存储能力。

HBase 中的表特点

HBase 与关系型数据库的简要比较

二、HBase 特点

1、海量存储

2、列式存储
HBase是根据列族来存储数据的。这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。

3、多版本
Hbase每一列的数据存储有多个Version。

4、面向列
Hbase是面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量。(实时动态增加列;单独对某一列做一些操作)

5、高并发
由于目前大部分使用HBase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。

6、稀疏性
稀疏主要是针对HBase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

7、极易扩展
HBase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。
通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
基于存储的扩展(HDFS),如果磁盘空间不够时,增加datanode节点或增加datanode节点的存储即可。

备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。

8、高可靠性:WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失:Replication机制保证了在集群出现严重问题时,数据不会发生丢失或损坏。而且Hbase底层使用hdfs,hdfs本身也有备份机制。

9、高性能
底层的LSM数据结构和RowKey有序排列等架构上的独特设计,使得Hbase写入性能非常高。
Region切分、主键索引、缓存机制使得Hbase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询能够到达毫秒级别。

LSM树,树形结构,最末端的子节点是以内存的方式进行存储的,内存中的小树会flush到磁盘中(当子节点达到一定阈值以后,会放到磁盘中,且存入的过程会进行实时merge成一个主节点,然后磁盘中的树定期会做merge操作,合并成一棵大树,以优化读性能。)

支持过期:HBase支持TTL( Time To Live)过期特性,用户只需要设置过期时间,超过TTL的数据就会被自动清理,不需要用户写程序手动删除。

三、HBase 数据模型

逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个多维度map(multi-dimensional map)

3.1 逻辑结构

Row_Key是必需有的,而且是唯一的,personal_info、office_info是列族,不同的列族是分开存储的。列族下面才是存储数据的列,而列是可以随便增加的。

上图是HBase表的逻辑结构,实际存储中,一个表可能是放在不同的服务器节点上面。另外存储是基于HDFS集群的,所以要先了解HDFS。

3.2、HBase的物理存储结构

以上只是一个基本的逻辑结构,底层的物理存储结构才是重中之重的内容,看下图

对于 HBASE 时间戳 用于标记 数据有效,默认情况下,每次查询数据只返回最新的时间戳标记的数据;

3.3、数据模型

NameSpace

Table(表)

Region(区域)

RegionServer

Row(行)

RowKey(行键)

Column Family(列族)

Column (列)

Cell

TimeStamp

四、系统架构

Hbase 是由 Client、Zookeeper、Master、HRegionServer、HDFS 等几个组件组成,HBase依赖于ZooKeeper和HDFS。

HBase客户端

ZooKeeper

Hmaster

HregionServer

HDFS

MemStore

Write-Ahead logs(WAL,Hlog)

Region

Meta表

Store

HFile

五、HBase 使用场景

另外电商领域的订单数据,订单流程完结数据不在变动,超过一定时间的订单可以存储在HBase中,MySQL只存储最近三个月的订单数据即可,减轻MySQL的压力。

比如我们有很多的设备、传感器,产生很多数据,如果规模不是特别大的厂家有几千个风机,每个风机有几百个指标,那么就会有一百万左右的时序数据,如果用采样每一秒会产生一百万个时间点,如果用传统数据库,那么每一秒会产生一百万次,持续地往 MQ 做一百万次,它会崩裂。并且查询也是个大问题,除了多维查询以外,我们还会额外地增加时间纬度,查看一段时间的数据。这时候 HBase 很好了满足了时序类场景的需求。

更多的场景需要不断挖掘

HBase 可以说是一个数据库,也可以说是一个存储。拥有双重属性的 HBase 天生就具备广阔的应用场景。在最近的一些版本中,引入了 OffHeap 降低 gc 影响,优化链路延迟,提供 Replica 等可以满足在线的需求。引入 MOB,可以存储 10M 左右的对象,完全适应了对象存储。另外由于自身的并发能力、存储能力,可以说是具有最为竞争力的引擎

cassandra-vs-hbasehttps://www.scnsoft.com/blog/cassandra-vs-hbase

参考:
https://blog.csdn.net/weixin_42011858/article/details/129299164

https://blog.csdn.net/weixin_44133605/article/details/124635627

https://www.cnblogs.com/qingyunzong/p/8665698.html

https://www.cnblogs.com/wdh01/p/16248799.html

https://blog.csdn.net/qq_33208851/article/details/105223419

https://blog.csdn.net/nmsLLCSDN/article/details/124088245

https://blog.csdn.net/llAl_lAll/article/details/122260638

https://blog.csdn.net/Shyllin/article/details/124386524

https://blog.csdn.net/lilygg/article/details/116790288

https://www.cnblogs.com/kyoner/p/14264470.html

https://zhuanlan.zhihu.com/p/159052841

https://blog.csdn.net/libaowen609/article/details/126674761

上一篇 下一篇

猜你喜欢

热点阅读