1:hbase简介

hbase官网

1.1:hbase简介

HBase 是 BigTable 的开源(源码使用 Java 编写)版本。是 Apache Hadoop 的数据库,是建
立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL
的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。

1:hbase的组件依赖

HBase 依赖于 HDFS 做底层的数据存储
HBase 依赖于 MapReduce 做数据计算
HBase 依赖于 ZooKeeper 做服务协调

2:hbase特点

① 高并发,以扩展,解决海量数据集的随机实时增删改查
② HBase 本质依然是 Key-Value 数据库,查询数据功能很简单,不支持 join 等复杂操作(可
通过 Hive 支持来实现多表 join 等复杂操作)
③ 不支持复杂的事务,只支持行级事务
④ HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)
⑤ 主要用来存储结构化和半结构化的松散数据。
hbase表的特点:
1、大:一个表可以有上十亿行,上百万列
2、面向列:列可以灵活指定,面向列(族)的存储和权限控制,列(簇)独立检索。
3、稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
4、无严格模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,
同一张表中不同的行可以有截然不同的列

1.2:hbase表结构

1:rowkey

RowKey 是用来检索记录的主键和mysql的主键id一样。访问 HBase Table 中的行,只有三种方式:
1、通过单个 row key 访问
2、通过 row key 的 range
3、全表扫描
hbase会对rowkey主键进行字典排序,所以是小顺序写入,也是hbase快的一部分原因。
RowKey 行键可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),最好是 16。

2:列簇Column Family

HBase 表中的每个列,都归属与某个列簇。列簇是表的 Schema 的一部分(而列不是),必须在创建表的时候指定。指定好了列簇就不能更改。列簇可以增加或者删除,删除的时候会删除这个列簇中的所有数据
列名都以列簇作为前缀。例如 courses:history,courses:math 都属于 courses 这个列簇。访问控制、磁盘和内存的使用统计等都是在列簇层面进行的。
列簇个数:列簇越多,在取一行数据时所要参与 IO、搜寻的文件就越多,所以,如果没有必要,不要设置太多的列簇,官网推荐是小于等于 3(最好就一个列簇)

3:时间戳

HBase 中通过 RowKey 和 Column 确定的为一个存储单元称为 Cell。每个 Cell 都保存着同一数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64 位整型。时间戳可以由 HBase (在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。
HBase 提供了两种数据版本回收方式:
1:保存数据的最后 n 个版本
2:保存最近一段时间内的版本(设置数据的生命周期 TTL)

4:单元格(Cell)

由{RowKey, Column( = + ), Version} 唯一确定的单元。Cell 中的数据是没有类型的,全部是字节码形式存储

2:hbase架构

(一)一文了解Hbase

1:Region

是 HBase 将一个表中的所有数据按照 RowKey 的不同范围进行切割的逻辑单元,每 个 Region 负责一定范围数据的读写访问。Region 由 RegionServer 负责管理。HBase 中的 Region
的概念就和 HDFS 中的数据块的概念差不多,Region 是 HBase 表切分出来的一个分片。数据
块是 HDFS 中的一个大文件切分出来的一个分片。

2:HMaster

HBase 的主节点,负责整个集群的状态感知、负载分配、负责用户表的元数据
(schema)管理(可以配置多个用来实现 HA),HMaster 负载压力相对于 HDFS 的 NameNode
会小很多。HBase 的 HMaster 其实就算是宕机一段时间也可以正常对外提供服务的(要搞清
楚为什么)。

3:RegionServer

HBase 中真正负责管理 Region 的服务器,也就是负责为客户端进行表数据读写的服务器。每一台 RegionServer 会管理很多的 Region,一个 RegionServer 上面管理的所有的region不属于同一张表。负责Region的拆分,负责和底层的HDFS的存储交互,负责StoreFile的合并。

4:ZooKeeper

整个 HBase 中的主从节点协调,元数据的入口,主节点之间的选举,集群节点之间的上下线感知……都是通过 ZooKeeper 来实现

5:HDFS

用来存储 HBase 的系统文件,或者表的 Region 文件

6:Client

Client 包含了访问 HBase 的接口,另外 Client 还维护了对应的 Cache 来加速 HBase 的访问,比如 Cache 的.META.元数据的信息。

相关文章:

  • 2022-01-08
  • 2021-09-14
  • 2021-12-12
  • 2021-06-01
  • 2021-09-17
  • 2022-12-23
  • 2021-08-24
  • 2021-10-15
猜你喜欢
  • 2021-09-28
  • 2021-10-06
  • 2021-11-18
  • 2021-12-18
  • 2022-01-13
  • 2022-12-23
相关资源
相似解决方案