HBase

一、基本介绍

  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文件。

posted @ 2019-10-13 19:59  我の女王  阅读(229)  评论(0编辑  收藏  举报