一、基本介绍
hbase是一个nosql的列式存储的数据库,实际来源于google发表的论文bigtable。构建于hdfs基础之上。
提供高可靠性、高性能、列存储、可伸缩、实时读写nosql的数据库系统
按照key-value的形式进行数据的存储:rowkey(行键),通过rowkey进行数据的检索
hbase仅支持简单的事务(行级操作),不支持复杂的操作(b態进行join等操作)
hbase的数据类型单一:byte[]
二、特点
大:数据量大
面向列:数据按照列式的方式进行存储
稀疏:hbase中null的数据不会占用存储空间
三、HBase和hadoop的关系
hbase和hadoop的关系:紧耦合关系。
hdfs:
不需要对HDFS上的文件进行随机读写
优化一次写入,多次读取的方式
hbase:
1)提供列式的数据存储
2)可以对数据进行随机读写
3)按照key-value的形式操作数据(rowkey)
4)支持mr,依赖hdfs
5)优化多次读或写
四、RDBMS与HBase的对比
Hbase:
结构:
1)数据库以region的形式存在
2)支持hdfs
3)使用WAL存储日志
4)参考系统是zookeeper(耦合)
5)使用rowkey
6)支持分片
7)使用行 列 列族(column family) 和单元格
特征:
1)海量存储:适合存储PB级别的数据。
2)列式存储:数据按照列存储,再进一步,按照列族的形式存储。
3)极易扩展:
1)Regionserver:对于regionserver管理的扩展
2)数据存储的扩展
4)高并发:hbase的IO操作不会降低。
5)稀疏:对于null的数据不进行存储。
五、结构
5.1 HMaster
功能:
1) 监控RegionServer
2) 处理RegionServer故障转移
3) 处理元数据的变更(元数据存储在hbase中)
4) 处理region的分配或移除
5) 在空闲时间进行数据的负载均衡
6) 通过Zookeeper发布自己的位置给客户端
5.2RegionServer
功能:
1) 负责存储HBase的实际数据
2) 处理分配给它的Region
3) 刷新缓存到HDFS
4) 维护HLog
5) 执行压缩
6) 负责处理Region分片
5.3 相关组件
1)WAL:用于恢复数据
2)HFile:hbase数据的存储文件
3)store:一个store对应一个column family
4)memstore:缓存存储,默认大小128m
5)region:一张表的部分数据或全部数据。
六、HBase三个重要机制
1.flush(刷盘)
1.(hbase.regionserver.global.memstore.size)默认;堆大小的40%
2.(hbase.hregion.memstore.flush.size)默认:128M
3.(hbase.regionserver.optionalcacheflushinterval)默认:1h
4.(hbase.regionserver.global.memstore.size.lower.limit)默认:堆大小 * 0.4
-
0.95
5.(hbase.hregion.preclose.flush.size)默认为:5M
当一个 region 中的 memstore 的大小大于这个值的时候,我们又触发了region的 close时,会先运行“pre-flush”操作
6.(hbase.hstore.compactionThreshold)默认:超过3个
2.compact机制
合并hfile主要有两种方式:
1)minor:只用于进行数据的合并(merge)
2)major:大合并,除了合并hfile之外,删除被标记的数据。
3.split机制
region的hfile达到默认10G的时候,进行split拆分。
region也会一分为二,一个region管理一个hfile文件。