HBase学习总结

1、        HBase是什么

HBaseHadoop Database)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBaseHadoop之上提供了类似于Bigtable的能力。HBaseApacheHadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

百度百科:https://baike.baidu.com/item/HBase/7670213

 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,

利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce

来处理HBase中的海量数据,利用Zookeeper作为协调工具。

HBase学习总结
参考:https://www.jianshu.com/p/569106a3008f

2、        Hbase的几个概念介绍详细:

主键:RowKey

主键是用来检索记录的主键,访问hbase table中的行,只有三种方式

a)       通过单个row key访问

b)       通过row key的range

c)       全表扫描

列族:ColumnFamily

列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型。Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。

Region的概念

Region的概念和关系型数据库的分区或者分片差不多。

Hbase会将一个大表的数据基于Rowkey的不同范围分配到不通的Region中,每个Region负责一定范围的数据访问和存储,Table 在行的方向上分割为多个HRegion,一个region由[startkey,endkey)表示。这样即使是一张巨大的表,由于被切割到不通的region,访问起来的时延也很低。

HBase学习总结

TimeStamp的概念

HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引

 

3、架构体系

Client 包含访问hbase 的接口,client 维护着一些cache 来加快对hbase 的访问,比如regione 的位置信息。

Zookeeper:

•       保证任何时候,集群中只有一个running master

•       存贮所有Region 的寻址入口。

•       实时监控Region Server 的状态,将Region server 的上线和下线信息,实时通知给Master。

•       存储Hbase 的schema,包括有哪些table,每个table 有哪些column family

Master可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行

•       为Region server 分配region

•       负责region server 的负载均衡

•       发现失效的region server 并重新分配其上的region

RegionServer

•       维护Master 分配给它的region,处理对这些region 的IO 请求

•       负责切分在运行过程中变得过大的region

可以看出,client 访问hbase 上数据的过程并不需要master 参与,寻址访问先zookeeper再regionserver,数据读写访问regioneserver。HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。 

 HBase学习总结

4、Hbase的使用场景

Hbase是一个通过廉价PC机器集群来存储海量数据的分布式数据库解决方案。它比较适合的场景概括如下:

Ø  是巨量大(百T、PB级别)

Ø  查询简单(基于rowkey或者rowkey范围查询)

Ø  不涉及到复杂的关联

有几个典型的场景特别适合使用Hbase来存储:

Ø  海量订单流水数据(长久保存)

Ø  交易记录

Ø  数据库历史数据