hbase的简介和搭建

hbase是bigtable的开源山寨版本。hbase建立在hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与hadoop一样,hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

1.hbase逻辑视图

hbase的逻辑介于nosql和RDBMS之间,hbase的列不是表格的schema,列族才是,每个列族可以拥有多个列。所以放数据的时候,我们需要指定rowkey、列族和列。而每个rowkey、列族和列确定的数据又有多个时间版本。


  你会觉得其中第三个列族好像有的列是空的,没有数据,但是和关系型数据库不一样的是,就算这个列式空的也不会占用多余的空间,而且还可以随时添加列。

2.物理存储

Table中的所有行都按照row key的字典序排列,Table 在行的方向上分割为多个Hregion。

Hregion按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的Hregion,当table中的行不断增多,就会有越来越多的Hregion。

Hregion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的HRegion server上。但一个Hregion是不会拆分到多个server上的。

HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。事实上,HRegion由一个或者多个Store组成,每个store保存一个columns family。每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。


3.系统架构

Client

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

Zookeeper

第一,保证任何时候,集群中只有一个master;

第二,存贮所有Region的寻址入口;

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

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

Master

第一,为Region server分配region;

第二,负责region server的负载均衡;

第三,发现失效的region server并重新分配其上的region;

第四,GFS上的垃圾文件回收;

第五,处理schema更新请求。

Region Server

第一,Region server维护Master分配给它的region,处理对这些region的IO请求;

第二,Region server负责切分在运行过程中变得过大的region。

  可以看到,client访问hbase上数据的过程并不需要master参与(寻址访问zookeeper和region server,数据读写访问regione server),master仅仅维护者table和region的元数据信息,负载很低。整个架构图就是这样:


你可能感兴趣的:(hbase的简介和搭建)