一.HBase简介
1.1起源
HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储。
1.2HBase的角色
特点:
a)nosql列存储数据库
b)HBASE存储数据的本质,可以理解为键值对存储
——
key:
rowkey +CF(列族) +column +timstamp(时间戳)
value:
值是二进制方式存储
需要存储的值
——
c)存储数据:HDFS,存3份,数据安全性比较好
d)检索数据:快!!
1.2.1、HMaster
功能:
- 监控RegionServer
- 处理RegionServer故障转移
- 处理元数据的变更
- 处理region的分配或移除
- 在空闲时间进行数据的负载均衡
- 通过Zookeeper发布自己的位置给客户端
1.2.2、RegionServer
功能:
- 负责存储HBase的实际数据
- 处理分配给它的Region
- 刷新缓存到HDFS
- 维护HLog
- 执行压缩
- 负责处理Region分片
组件:
-
Write-Ahead logs
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 -
HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 -
Store
HFile存储在Store中,一个Store对应HBase表中的一个列族。 -
MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。 -
Region
Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。
1.3、HBase的架构
HBASE在存储数据时候,将数据划分为很多部分(类似于我们HDFS存储,大文件划分为很多Block)
按照Rowkey划分,划分的每一部分称为Region(区域)
一个Region有一个RegionServer进行管理,一个RegionServer可以管理多个Region,需要操作一个Region上的数据,必须找到RegionServer