Hbase是基于Hadoop的数据库。
====================Hbase特点===============
- Hbase:表中的每个cell有三个元素,行,时间错,列族。
- 逻辑模型:行是一个唯一的检索的字段,时间戳记录了数据库每次操作的时间(可以设定显示最近的几个时间戳的值,或者最近一个时间范围内的值),列族反应了所在的列。没有格式限制。
- 物理模型:按照行分割,按照列族存储,空值不存储。时间戳是顺序存储,如果不指明时间戳就会取最新的数据。该架构的另一个好处是随时可以增加列,而不用声明。
==========================Region===========================
root表只有一个region,而且region存放在内存中。
- 表的最小单位是Region,当一个Region达到阀值的时候就会分成多个Region,一个表有多个Region,但是一个Region只会存在一台服务器上。Hregionserver管理多个Hregion。每个region只维护一个Hlog。可以用来恢复数据,但是region下线之后,需要将它的多个Hlog分拆到多个region服务器上进行恢复。
- 需要更新表的时候:将指令存放在memstore中,达到一定数量之后就会写入到磁盘上的storefiles,当达到一定数量之后就将多个storefiles合并(compact),这时候就进行更新和删除的工作。当storefiles达到一定的大小,就分成多个Region,又Hmaster分配到其它的region 服务器。
- 表中的元数据存在".meta"表中,而“.meta”存放在“root”表中,Zookeeper记录了root表的位置。
- 每个Hbase只有一个Hmaster(貌似Haddoop都是单节点),Hmaster负责负载均衡和表的schema以及元数据存储。Master通过Zookeeper来感知Regionserver。
root表只有一个region,而且region存放在内存中。