HBase知识整理

HBase概论

定义

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

就是个no only sql数据库(非关系型数据库),在大数据中代替mtsql的就是HBase

 

HBase数据模型

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

存数据的时候用kv值的形式去存的

HBase逻辑结构

Row_key:相当于mysql的主键

Info:列族(纵向)

Region:分区(横向)

Store:按照列族和分区划分的

HBase物理存储结构

这一行里面k是五维k(前五个)映射了v,以此类推

Phone这个格子有两个值要按照最新的为准是t3(t3时间最新)

上面是逻辑结构下面是物理结构

每个格子能够存很多的值,能存多少靠自己设置,区分的话是看时间戳

假设kv值中张三的city没有,在表格中呈现了空格子状态(非关系型数据库允许某些格子空着)

HBase表格是不固定的,是靠列族固定的,列的数量随便添加

数据模型

Name Space(数据库)

命名空间,类似于关系型数据库的DatabBase概念,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是hbasedefaulthbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。

Region(分区)

类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往HBase写入数据时,字段可以动态按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。

​​​​​​​Row

HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。(主要的是主键)​​​​​​​​​​​​​​

Column

HBase中的每个列都由Column Family(列族)Column Qualifier(列限定符)进行限定,例如info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。

​​​​​​​Time Stamp(时间戳)

用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入HBase的时间。

​​​​​​​Cell(kv值对,每个格子的名字)

由{rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell中的数据是没有类型的,全部是字节数组形式存贮。

HBase基本架构

宏观建构:HBase分很多Region Server(从机),每个Region Server负责管理一个或多个Region(管理几个由hmaster说的算),master负责协调各个region server的负载均衡,决定region server管理几个region,他俩直接通过zookeeper进行协调

猜你喜欢

转载自blog.csdn.net/weixin_43307308/article/details/107003580