其他分享
首页 > 其他分享> > HBase

HBase

作者:互联网

什么是HBase

1、HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。

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

3、如下图[1]所示,HBase有一列 “行键“ —— row key,row key是在建表时就要指定的,必须是唯一的(主键)。如果插入一条数据的row key列与表内重复,则会对表内该row key对应行进行更新;row key按字典序排列,所谓字典序指的是按位比较,如 row_key1<row_key11<row_key111<row_key2<row_key21<row_key3
每一行数据由一个行键来标识,我们在查询HBase中的数据时就是通过行键来定位的。一般的查询有三种方式,①根据行键查询,②根据行键范围查询,③全表扫描

4、如下图1[1]把HBase的存储结构分为逻辑结构和物理结构两个部分, Column Family指列簇,列簇包含一个或多个列,竖着切表得到列簇;列簇是Hbase元数据的一部分,在创建HBase表的时候不需要创建列因为它可以在表创建之后动态的添加。它不是元数据的一部分。创建表的时候必须指定列簇。就像关系型数据库创建的时候必须指定具体的列是一样的。

在这里插入图片描述
5、横着切表得到region,一个region由多行数据组成,如图2[2]。HBase将一个表从逻辑上横向切分成若干个HRegion,这些HRegion会分布在不同的机器上我们把这些机器称之为HRegionServer。我们也可以看到HRegion是实现HBase分布式与负载均衡的基础。
在这里插入图片描述
在这里插入图片描述
起初,一个表中只包含一个HRegion,所有的数据都放在一个HRegion中。但是随着数据量的积累,HRegion中的数据会越来越多,这时HRegion就会产生分裂。以此类推数据不断增大就会不断的分裂产生更多的HRegion。如下图所示:

在这里插入图片描述

HBase最佳实践法则

HBase表的设计

当一个HBase表设计完成时是很难改变的,标设计的不好效率会大打折扣。我们通常需要考虑到的指标是行键与列族。

[1] https://zhuanlan.zhihu.com/p/54184168
[2] https://blog.csdn.net/qq_32727095/article/details/108165315
[3] https://blog.csdn.net/qq_34993631/article/details/84640487

标签:HRegion,行键,列族,HBase,数据,row
来源: https://blog.csdn.net/qq_34565684/article/details/121865230