HBase是一个分布式、列式存储的NoSQL数据库,设计灵感来源于Google的Bigtable论文。它构建在Hadoop之上,利用HDFS作为其底层存储系统,并使用Zookeeper进行协调。以下是HBase的一些核心概念:
-
表(Table):
HBase中的数据组织成表的形式。与传统的关系数据库不同,HBase的表是稀疏的、多维度的映射表,每个表由若干行组成。 -
行(Row):
每行有一个唯一的行键(Row Key),行键用来唯一标识一行数据。行键在表中按字典顺序排序,这是HBase数据存储和检索的基础。 -
列族(Column Family):
每个表由一个或多个列族组成。列族是列的集合,具有相同的存储和访问属性(如压缩策略、缓存设置)。列族必须在创建表时定义,之后不能更改。 -
列限定符(Column Qualifier):
在列族内部,每个单元格由列限定符来进一步区分。列限定符和列族一起定义了一个列的完整名称。列限定符是用户自定义的,可以动态添加。 -
时间戳(Timestamp):
每个单元格包含一个时间戳,用于记录数据的版本。HBase默认为每次写入操作分配一个时间戳,用户也可以自定义时间戳。这使得HBase能够存储同一单元格在不同时间点的数据版本。 -
单元格(Cell):
单元格是最小的数据存储单位,由行键、列族、列限定符和时间戳唯一确定。每个单元格存储一个值。 -
Region:
为了实现水平扩展,HBase将大表划分为多个区域(Region)。每个Region包含一定范围的行键,随着数据的增长,Region会自动分裂以维持均衡。 -
RegionServer:
RegionServer是HBase的实际工作节点,负责管理一组Region,处理数据的读写请求。一个HBase集群可以有多个RegionServer。 -
HMaster:
HMaster是HBase的主服务器,负责表的创建、删除、调整等管理操作,以及Region的分配和负载均衡。在高可用配置中,会有活跃和备用的HMaster以确保服务的连续性。 -
Zookeeper:
Zookeeper为HBase提供分布式协调服务,包括选举HMaster、管理RegionServer的状态、存储元数据位置信息等。
这些概念共同构成了HBase的核心架构,支撑着其大规模数据存储和快速随机读写的能力。