HBase-基本概念

150 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

目录

HBase定义

HBase的逻辑结构与存储结构

 数据模型

 HBase的基本架构


HBase定义

H代表HDFS,Base代表DataBase,以HDFS为基础的分布式非关系型(NoSQL)数据库。

NoSQL数据库是以K,V来存储的,读取效率比关系型数据库更高

HBase的逻辑结构与存储结构

以JSON数据为例

​编辑

逻辑结构模型

​编辑

存储数据稀疏,数据存储多维,不同的行具有不同的列,数据整体有序,

RowKey:按照RowKey的字典序排列,RowKey为Byte数组。

store:在纵向切分,按照列族切分,切分完称为store,按照列族切分为store,用于底层存储到不同文件中,将一份数据存到多个文件夹中。

物理存储结构模型

​编辑

 HDFS上的数据不能修改,只能删除,重写,追加写,但是HBase作为数据库要有修改数据的功能,如何在HDFS的基础上实现修改数据的功能呢?

TimeStamp(时间戳):

采用时间戳的方式,同一个key 对应多条数据,时间戳最大的那个就是最新的数据。

Type:

type用来标记数据是否被删除,如果有两个数据,时间戳小的为delete,大的为put,说明修改了新的数据,如果大的为delete,那么说明该数据被删除了。

数据模型

NameSpace

命名空间,类似于关系数据库中的database的概念,HBase自带hbase和default两个命名空间,hbase中存放HBase内置的表,default是用户默认使用的命名空间

Table

类似于关系型数据库的表概念,但HBase定义时只需要声明列族,列可以动态的按需指定。

Row

每一行数据都由RowKey和Column组成,查询数据只能根据RowKey查询,所以RowKey的设计很重要

Column

每个列由列族(column family)和列限定符限制,建表时只需指明列族,列限定符不需要预先定义。

TimeStamp

每条数据写入时系统自动加上该字段,为写入HBase的时间

Cell

针对底层存储数据的一行,由rowkey,column qualifier,timestamp唯一确定的单元,cell中的数组都是由字节码形式存储。

​编辑

HBase的基本架构

HBase是分布式的,分为两种角色,master和region server

​编辑

master

1.管理元数据表格habse:meta,接收用户对表格创建修改删除的命令并执行

2.监视region是否需要负载均衡,故障转移和region拆分

​编辑

负载均衡

监控region分布在regionServer上是否均衡,由参数hbase.balancer.period控制周期时间,默认为5分钟

 故障转移

一个region server负责管理几个region,通过region server对region的数据进行增删改查,如果某个region server没了,master需要及时发现并将管理权交给其他regionserver。

region server

region server将进程信息注册到zookeeper里面,master读取注册信息,从而实现对region server的管理,负责对cell数据的处理,如写数据put,查询数据get,拆分合并region等操作。

​编辑

backup master

backup master是master的备用,如果master没了,可以顶替它进行工作。

masterProcWAL master 预写日志处理器

把master需要执行的任务记录到预写日志WAL中,如果master宕机,让backupmaster读取日志继续干

​编辑

​编辑

Zookeeper

HBase通过Zookeeper来做master的高可用,记录regionServer的部署信息,存储meta表的位置信息。

\