Hbase 简介

1、Hbase 简介

1.1、Hbase 定义

hbase 是一种基于 HDFS 存储的 分布式、可扩展、支持海量数据存储的NoSQL数据库。可以实现,对海量数据的增删改查、 NoSQL = Not Only SQL,Hbase 源于 谷歌的 Bigtable 的开源,依赖于 Hadoop 的 hdfs 来存储海量数据,并依赖于zookeeper 做协调服务。

1.2、Hbase 数据模型

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

1.2.1、Hbase 逻辑结构

rowkey 系统自带,按 字典顺序排序,用于区分不同的行;多个列 组成一个列族; 多个行组成 Region ,分文件存储;

1.2.2、HBase物理存储结构

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

1.2.3、HBase数据类型

  • NameSpace命名空间,类似于关系型数据库的DatabBase概念,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。
  • Region 类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往HBase写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。
  • Row HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。
  • Column HBase中的每个列都由ColumnFamily(列族)和ColumnQualifier(列限定符)进行限定,例如info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。
  • TimeStamp 用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入HBase的时间。
  • Cell 由{rowkey, columnFamily:columnQualifier, timeStamp} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存储。

1.3、Hbase 基本架构

 

架构角色:

  • RegionServer 是 Region的管理者,其实现类为HRegionServer,主要作用如下:对于数据的操作:get, put, delete;对于Region的操作:splitRegion、compactRegion。
  • Master 是所有RegionServer的管理者,其实现类为HMaster,主要作用如下:对于表的操作:create, delete, alter对于RegionServer的操作:分配regions到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。
  • Zookeeper HBase通过Zookeeper来做Master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。
  • HDFS HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持。

1.4、Hbase 中表特点

  • 大:一个表可以有几十亿行记录,有上百万列数据,这在DBMS里是很难实现的;
  • 面向列:面向列(族)的存储和权限控制,列(族)独立检索;
  • 稀疏:对于空的列,并不占用hdfs存储空间,因此,表可以设计的稀疏些也无妨;
  • 无模式:每一行数据都有一行可排序的主键和任意多列,列可以根据需要动态增加,同一张表可以有不同的列;

posted @ 2022-05-10 12:06  晓枫的春天  阅读(429)  评论(0编辑  收藏  举报