HBase是Hadoop生态圈中的一员,Nosql数据库,能够对大数据提供随机、实时读写访问。他是开源的,分布式的,多版本的,面向列的,存储模型。
Hbase架构
- Hbase体系架构
HBase Master是服务器负责管理所有的HRegion服务器,HBase Master并不存储HBase服务器的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion Server群中,HBase Master Server中存储的是从数据到HRegion Server的映射。
一台机器只能运行一个HRegion服务器,数据的操作会记录在Hlog中,在读取数据时候,HRegion会先访问Hmemcache缓存,如果缓存中没有数据才回到Hstore中上找,每一个列都会有一个Hstore集合,每个Hstore集合包含了很多具体的HstoreFile文件,这些文件是B树结构的,方便快速读取。
- HBase数据模型
RowKey | Timestamp | Column Family | |
URI | Parser | ||
r1 | t3 | url=http://www.taobao.com | title=天天特价 |
t2 | host=taobao.com | ||
t1 | |||
r2 | t5 | url=http://www.alibaba.com | content=每天… |
t4 | host=alibaba.com |
- Rowkey:是byte array,它决定一行的数据,最多只能存储64位字节的数据,它是表中每天记录的主键,为了方便快速查询,按字典排序,Rowkey的设计非常重要,在满足业务前提下,rowkey越短越好,节省空间
- Column Family:列族,拥有一个名称(string),包含一个或者多个列,权限的控制,存储和调优都是在列族层面进行的
- Column:属于某一个columnfamily,FamilyName:columnname,每条记录可以动态添加
- Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
- Value(Cell):btye array 单元格 一个单元格有(rowkey,列族:列,version)来确定唯一的单元格,Cell中数据没有数据类型,都是字节类型储存