Hbase的基本介绍
hbase是建立在hdfs之上的一个数据库
不支持join等SQL复杂操作
支持的数据类型:byte[]
依靠横向扩展 一个表可以有上十亿行,上百万列
面向列族的存储和权限控制
对于为空(null)的列,并不占用存储空间,是一个稀疏表
Hbase适用场景
海量数据;精确查询;快速返回
海量数据指的是数据量的背景
精确查询指的是业务场景
快速返回指的是业务对时效性的要求
Hbase和Hadoop之间的关系
hdfs
海量数据存储,适合一次性扫描大量数据
适合一次写入多次读取
不适合频繁的更新数据
hbase
适用一次扫描少量数据
适合多次写入多次读取
支持数据更新
支持删除数据
Hbase与RDBMS的关系
hbase:是一个开源的非关系型分布数据库
RDBMS:是关系型数据库管理系统
hbase
不支持SQL查询
不支持事务
不支持join
RDBMS
支持SQL查询
支持事务
支持join
Hbase详细架构
Client
访问数据的入口,包含访问hbase的API接口,维护着一些cache(缓存)来加快对hbase的访问
Zookeeper
Zookeeper的选举机制保证任何时候,集群中只有一个Master
实时监控RegionServer的状态,将RegionServer的上线和下线的信息实时通知给Master
存储hbase的schema(元数据)
存贮所有region的寻址入口
Master
为RegionServer分配region
负责RegionServer的负载均衡
发现失效的RegionServer并且重新分配其上的region
处理schema更新请求
master短时间下线,hbase集群依然可用,长时间不行
RegionServer
RegionServer维护master分配给它的region,处理这些region的IO请求
RegionServer负责切分在运行过程中变得过大的region
列族Column Family
列族是表schema的一部分,而列不是(schema包含表名和列族)
每个列都所属于某一个列族,一个列族可以包含多个列
一个列族与列的关系是一对多
时间戳
标记一个数据的不同版本,时间戳可以由hbase赋值(在数据写入时自动赋值)
hbase支持工程师自己定义时间戳,每个cell中,不同版本的数据按照时间倒序排序
Hbase本身提供数据回收机制
保存数据的最后N个版本
保存最近一段时间内的版本
</