HBase是一个分布式、面向列的NoSQL数据库,其数据存储结构围绕“高可扩展、高并发、实时读写”需求设计,核心是通过层级化存储单元和LSM树模型实现高效的数据管理。在CentOS系统上,HBase通常与Hadoop(HDFS)、Zookeeper协同工作,依赖CentOS的Linux内核特性(如进程管理、网络配置)保障稳定性。
HBase的逻辑存储结构从用户视角定义,核心要素包括Namespace、Table、Row、Column Family、Column Qualifier、Cell、Timestamp,这些要素共同构成“多维映射”的数据模型:
default
为用户默认命名空间,hbase
为系统内置表命名空间)。row1
、row2
、user001
的排序为row1
<row2
<user001
)。RowKey设计直接影响查询性能(如热点问题)。cf1
、cf2
)。同一列族的数据物理存储在一起(如cf1:name
、cf1:age
存储在同一区域),列族数量建议控制在3-5个以内(过多会影响性能)。cf1:name
中的name
、cf1:age
中的age
),可动态添加。{RowKey, Column Family:Column Qualifier, Timestamp}
唯一确定,存储实际数据(字节数组)。HBase的物理存储基于HDFS(Hadoop Distributed File System),通过Region、RegionServer、MemStore、HFile等组件实现分布式、高可用的数据存储:
[0-1000)
、[1000-2000)
)。每个Region负责一段连续的RowKey范围,是分布式存储和负载均衡的基本单位。RegionServer1
管理Region1
、Region2
)。其主要职责包括:处理客户端的读写请求、管理MemStore和HFile、执行Region分裂与合并。put
操作)。写入数据时,先进入MemStore(按RowKey排序),当MemStore大小达到阈值(默认128MB)时,异步刷写到HDFS形成HFile。{RowKey, Column Family:Column Qualifier, Timestamp}
,值为数据内容。HFile会定期合并(Compaction),减少文件数量(如Minor Compaction合并小文件,Major Compaction清理过期版本)。在CentOS上,HBase的数据写入遵循**“WAL+MemStore+HFile”的流程,确保数据持久性和写入性能**:
put
请求(如put 'test_table', 'row1', 'cf1:name', 'Alice'
),请求首先到达对应的RegionServer。hdfs://namenode:9000/hbase/WALs/
),确保数据不会因故障丢失。hbase.hregion.memstore.flush.size
,默认128MB),RegionServer将MemStore中的数据异步刷写到HDFS,生成新的HFile(如/hbase/data/default/test_table/region1/cf1/000001.hfile
)。读取数据时,HBase通过**“MemStore+HFile+缓存”的组合,实现快速响应**:
get
或scan
请求(如get 'test_table', 'row1'
),请求到达对应的RegionServer。/hbase/data/default/test_table/region1/cf1/000001.hfile
),查找目标数据。在CentOS上,HBase的存储结构依赖以下组件实现高可用、高性能:
hbase:meta
表存储Region位置信息)。通过以上结构,HBase在CentOS上实现了海量数据存储(PB级)、低延迟读取(毫秒级)、高并发写入(每秒数千次)的能力,适用于实时分析、日志存储、用户画像等场景。