十分钟弄懂Hbase基础概念

6e501611880511ebb6edd017c2d2eca2.jpg

Hbase简介

HBase is a column-oriented database management system that runs on top of Hadoop Distributed File System (HDFS)HBase 是运行在 HDFS 之上的 面相列的 数据库管理系统。注意 HBase 不是列式存储数据库,每一个列簇就是一个HFiel,

  • 支持随机CRUD,亿级数据秒级响应。
  • 分布式存储的数据库
  • NoSQL数据库
  • 仅能通过主键(row key)和主键的 range 来检索数据
  • 海量数据存储:一个表可以有上十亿行,上百万列。跟关系型数据库对比,一般不超过30列,单表不超过500万

实际场景:交通gps、金融(取款信息/消费信息等)、电商(浏览日志信息)

基本概念


row key(行键)必须是全表唯一的,更新row key是覆盖。插入数据需要指定row key。

扩展:

RowKey是会按字典序排序的,RowKey相近的行总是存储在相近的位置,如果大量读写操作总是集中在某个RowKey范围就会造成Reginon热点,这会导致某部分数据会集中在某台HRegionServer上存储以及查询,而其他的HRegionServer却很空闲。打散RowKey:加盐+哈希、反转固定格式数值

\

每一个列簇代表以一个文件夹的形式存在。多个列形成1个列簇。(相当于mysql宽表切分)

高表横向切分成每一段,叫region,也叫表的切片。(相当于Mysql高表切分)一张Hbase表刚创建的时候是只有一个region。

store是真正存储的数据内容。

如果Linux和Window时间不统一,很可能会造成删除删不掉,插入看不到的“灵异事件”;(它是根据时间戳拿最新的一个版本实现的)。

数据模型


1)Name Space:类似于DatabBase。HBase 有两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表, default 表是用户默认使用的命名空间。

2)Region:类似于Table。不同的是,HBase 定义表时只需要声明列族即可,不需 要声明具体的列。

3)Row:每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索。

4)Column:HBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符)进行限定。

5)Time Stamp:用于标识数据的不同版本。

6)Cell:由{rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。类型为字节数组。

底层存储模型:

  • 不同的列族存在不同的文件中(上面两个表格代表不同的 HFile);
  • 整个数据是按照 Rowkey 进行字典排序的;
  • 每一列数据在底层 HFile 中是以 KV 形式存储的;
  • 相同的一行数据中,如果列族也一样,那么这些数据是顺序放在一起的。

CRUD原理

修改操作其实是根据时间戳重新put一条数据。

查询操作是根据rowkey返回时间戳最大的数据。

删除操作其实是PUT一条操作类型为DEL的数据。(当查询时发现该row key的最大时间戳记录操作类型为DEL,则不返回数据,给用户造成的感觉就是已删除该row key)。

rowkey,rf(列簇),rn/rq(列名/列限定符)三者构成唯一键。

HBASE架构

1)Region Server

Region Server 为 Region 的管理者,其实现类为 HRegionServer,主要作用如下: 对于数据的操作:get, put, delete,负责处理数据的读写请求,客户端请求数据时直接和 Region Server 交互。;

对于 Region 的操作:splitRegion、compactRegion。

2)Master

Master 是所有 Region Server 的管理者,其实现类为 HMaster,主要作用如下: 对于表的操作:create, delete, alter,负责 Region 的分配,DDL(创建,删除 table)等操作。

对于 RegionServer 的操作:分配 regions 到每个 RegionServer,监控每个 RegionServer的状态,负载均衡和故障转移。

3)Zookeeper

HBase 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及 集群配置的维护等工作,作为 HDFS 的一部分,负责维护集群状态。

4)HDFS

HDFS 为 HBase 提供最终的底层数据存储服务,同时为 HBase 提供高可用的支持。

数据库如何选型?


我是 小豪哥学编程,21年校招某科技公司SP,关注我,帮助你互联网少走弯路~!

Guess you like

Origin juejin.im/post/7053713872724688910