Hbase是一个开源的非关系型分布式数据库属于Nosql。数据存在HDFS中也可能存在内存中,可以容错存储海量稀疏数据。
Hbase的特性:
- 高可靠
- 高并发读写
- 面向列
- 可伸缩
- 易构建
行存储 vs 列存储
- 行存储
- 优点:写入一次性完成,保存数据完整性
- 缺点:数据读取过程中产生冗余数据,若有少量数据可以忽略
- 列村塾
- 优点:读取过程,不会产生冗余数据,特别适合对数据完整性要求不高的大数据领域
- 缺点:写入效率差,保证数据完整性方面差
Hbase数据模型
- RowKey:表中每条记录的“主键”。例如(a)
- column family:列簇,包含一个或者多个相关列。例如(cf1)
- column qualifier:子列。例如(bar)
- timestamp:时间戳,表示一个版本。例如(1368394583)
- value:相对应的值。例如(7)
三位有序,三级寻址
{rowkey => {family => {qualifier => {version => value}}}}
例如:a:cf1:bar:1368394583:7
Hbase物理模型
- Hbase一张表由一个或多个Hregion组成
- 记录之间按Row Key的字典序排列
- 一个Region默认10个G
- 一个Region有一个RegionServer,而一个RegionServer有多个Region
HRegionServer内部管理了一系列的HRegion对象,HRegion是Hbase中分布式存储和负载均衡的最小单元
- 按rowkey可分为Region -> HRegion -> Region Servers
- HRegion按列簇(Column Family) -> 多个HStore
- HStore -> memstore (默认128M)+ HFiles
- HFiles -> HDFS
HBase系统架构
- Client:访问Hbase的接口,并维护Cache加速Region Server的访问
- Master:负载均衡,分配Region到RegionServer
- Region Server:维护Region,负责Region的IO请求
- Zookeeper
- 保证集群中只有一个Master
- 存储所有Region的入口(Root)地址
- 实时监控Region Server的上下线信息,并通知Master
Hbase的容错
Hbase操作
单行操作:PUT,GET,DELETE
多条操作:SCAN
Hbase的读取过程
Hbase中扫描的顺序依次是:BlockCache、MemStore、StoreFile( Hfile )