发展历史
- HBASE是建立在HDFS上的高性能数据库系统
- 通过ROWKEY和主键的range来检索数据
- HIVE支持多表的复杂操作
- 主要是横向扩展,通过增加廉价的服务器,来提高计算能力
- 表名,行健,列组,列,值
HBASE中的行只支持三种方式访问
1.通过单个ROWKEY访问
2.通过ROWKEY的范围访问
3.全表扫描
注意ROWKEY在HBASE的内部保存为“字节数组”,一般长度为100左右的BYTES
- HBase中通过row和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本
- 不同版本的数据按照倒序排序,最新的排在最前面
- 时间戳可以自动赋值,也可以由客户端显示赋值,时间精确到当前时间系统毫秒
- 都是按照字节码形式存储(CELL中)
Table 在行的方向上分割为多个Hregion
region按大小分割的,每个表一开始只有一个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格式保存在GFS上
系统架构
ZOOKEEPER
1.保证任何时候。集群中只有一个MASTER
2.存储所有REGION的寻址入口
3.监控REGION SERVER,将其上线,下线的消息通知给MASTER
4.存储HBASE的图表,包括有那些TABLE,每个由那些列组(CF)
MASTER
1.为region server分配region
2.负责region server的负载均衡
3.发现失效的regionserver并重新
分配其上的region
4.GFS上的垃圾文件回收
5.处理schema(图表)更新请求
REGION SERVER
1 Region server维护Master分配给它的region,处理对这些region的IO请求
2 Region server负责切分在运行过程中变得过大的region
可以看到,client访问hbase上数据的过程并不需要master参与(寻址访问zookeeper和region server,数据读写访问regione server),master仅仅维护者table和region的元数据信息,负载很低