基本介绍
概述
HBase是bigtable的开源java版本,是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写nosql的数据库系统,主要用来存储结构化和半结构化的松散数据。
HBase查询数据功能很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务)
HBase中支持的数据类型:byte[]
特点
1.大:一个表可以由上十亿行、上百万列
2.面向列:面向列(族)的存储和权限控制、列(族)独立检索
3.稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计得非常稀疏
HBase和Hadoop的关系
HBase和Hadoop是紧耦合的关系,HBase依赖于Hadoop
如果要运行HBase,一定要保证Hadoop的环境正常运行。
从以上表格可以得出HBase适合频繁的读写操作,HDFS不适合频繁的读写操作,更适合一次写入多次读取,但HBase的数据都保存在HDFS上,这样的矛盾点该如何解决?
RDBMS与HBase的对比
特征
一、海量数据存储
二、列式存储
三、易于扩展,类似于HDFS,加节点就可以我实现HBase扩展
四、支持客户端访问的高并发操作
五、稀疏表,如果某一列没有值,不占用存储空间
基础架构
HMaster的功能:
1.监控RegionServer
2.处理RegionServer故障转移
3.处理元数据的变更
4.处理region的分配或移除
5.在空闲时间进行数据的负载均衡
6.通过Zookeeper发布自己的位置给客户端
RegionServer的功能:
1.负责存储HBase的实际数据
2.处理分配给它的Region
3.刷新缓存到HDFS
4.维护HLog
5.执行压缩
6.负责处理Region分片