一、HBase简介
官网
hbase.apache.org
1. 定义
Hbase是一种分布式的、基于内存、支持海量数据存储、面向列存储的NoSQL数据库。
2. 数据模型
逻辑上,Hbase的数据模型同关系型数据库很相似,数据存储在一张表中,有行有列。但从Hbase的底层物理存储结构(K-V)来看,Hbase更像是一个multi-dimensional map。
二、HBase特征简要
- 海量存储
Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。 - 列式存储
这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。 - 极易扩展
Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。
通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。 - 高并发
由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。 - 稀疏
稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
三、HBase的基础架构

1. HMaster
- 监控RegionServer
- 处理RegionServer故障转移
- 处理元数据的变更
- 处理region的分配或移除
- 在空闲时间进行数据的负载均衡
- 通过Zookeeper发布自己的位置给客户端
2. RegionServer
- 负责存储HBase的实际数据
- 处理分配给它的Region
- 刷新缓存到HDFS
- 维护HLog
- 执行压缩
- 负责处理Region分片
3. 其他组件
- HRegion
Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。 - Write-Ahead logs
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 - HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 - Store
HFile存储在Store中,一个Store对应HBase表中的一个列族。 - MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。
本文是HBase学习笔记的第一部分,主要介绍了HBase的基本概念、数据模型、关键特性以及基础架构。HBase是一个分布式的、列存储的NoSQL数据库,适用于海量数据存储,支持高并发和水平扩展。其数据模型类似关系型数据库,但物理存储以列族形式组织。HBase的扩展性体现在RegionServer和HDFS的水平扩展,同时具备高并发和稀疏存储的特点。基础架构包括HMaster负责元数据管理和故障转移,RegionServer存储实际数据并维护HLog,以及HRegion、HFile、Store和MemStore等组件。
1837

被折叠的 条评论
为什么被折叠?



