什么是HBase
Hbase 是建立在hdfs之上的一个数据库,不支持join等SQL复杂操作.支持的数据类型:byte[],依靠横向扩展
一个表可以有上十亿行,上百万列。
面向列(族)的存储和权限控制
对于为空(null)的列,并不占用存储空间,是一个稀疏表。
稀疏的理解:宽松;不稠密
举个最容易理解的例子 “稀疏的像程序员的头发”,当然这里的程序员指的是那些大量用脑的资深程序员。
HBase的适用场景:
海量数据、精确查询、快速返回
海量数据:指的是数据量的背景
精确查询:业务场景
快速返回:是业务对时效性的要求
Hbase和Hadoop之间的关系
HDFS
海量数据存储,适合一次性扫描大量数据。
适合一次写入多次读取
不适合频繁更新的数据
HBASE
不适合一次性扫描大量数据。适用一次扫描少量数据。
适合多次写入多次读取
支持数据更新
支持删除数据
Hbase与RDBMS(关系型数据库)的关系
RDBMS
支持SQL查询
支持事务
支持Join
HBASE
不支持SQL查询
不支持事务
不 支持Join
Hbase特征简要说明
1、 海量存储
Hbase适合存储PB级别的海量数据,在几十到百毫秒内返回数据。
2、列式存储
这里的列式存储其实说的是列族存储列族理论上可以很多,但实际上建议不要超过6个
3、 极易扩展
处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)
hbase在最初设计的时候就考虑了扩展性。
4、高并发
这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多
5、稀疏
在列数据为空的情况下,是不会占用存储空间的。
hbase的基础架构
1、Client
2 、ZOOKEEPER
3 、Master 管理者
4 、Regionserver 工作者
HBase的底层原理
详细架构
Client:访问数据的路口
Zookeeper:
1.通过选举制保证集群有且只有一个Master
2.监控RegionServer的状态,并向Master汇报RegionServer的上线和下线报告。
3.保存HBase的schema(元数据)
4.存储每个Region的寻址入口
Master:
1.分配Region给RegionServer.
2.负责RegionServer的负载均衡。
3.处理schema(元数据)的更新请求
4.发现失效的RegionServer并重新分配其上的Region
RegionServer:
1.维护Master分配的Region ,负责处理Region的IO请求
2. 负责将运行过程中逐渐变大的Region切分