目录
HBase 简介
1.HBase 定义
HBase是一个开源的、分布式的、面向列的非关系型数据库,设计灵感来源于Google的Bigtable论文。它利用Hadoop的HDFS作为其存储系统,利用Hadoop的MapReduce作为其计算引擎。HBase提供了高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。
HBase与传统的关系型数据库不同,它是一个面向列的存储系统,数据在物理存储上并不按照行进行连续存储,而是按照列进行分组存储。这种设计使得HBase在处理大规模数据时具有更好的扩展性和性能。HBase使用Java编写,因此可以在Java应用程序中方便地集成和使用。
HBase提供了丰富的API,包括Java API、Thrift API、REST API等,使得开发人员可以方便地访问和操作HBase中的数据。HBase还支持多种数据模型,如表格模型、稀疏表格模型、列族模型等,可以满足不同类型的应用需求。
总的来说,HBase是一个适合处理大规模数据的分布式数据库,广泛应用于数据仓库、数据分析、实时日志分析等领域。
2.HBase 数据模型
HBase的数据模型主要有以下概念:
- 表(Table):HBase的表由多个行组成。与传统的关系型数据库的表概念相似,不同的是,HBase定义表时只需要声明列族即可,不需要声明具体的列。
- 行(Row):HBase的行由行的Key和一个或多个列组成,行在存储的时候,行Key按字母表顺序存放。行是HBase中最基本的存储单元,通过行键(Row Key)唯一标识。
- 列族(Column Family):一个HBase表被分组成许多“列族”的集合,它是基本的访问控制单元。每个列族有一些存储参数,比如数据是否在内存缓存、数据怎样压缩等。每行由相同的列族组成。
- 列限定符(Qualifier):每个列族有一个列限定符,列限定符的作用是作为列数据的一个标识,比如一个列族是content,那么这个列的列限定符会是content:html或者content:pdf之类。
- 单元格(Cell):在HBase表中,通过行、列族和列限定符确定一个“单元格”,单元格中存储的数据没有数据类型,总被视为字节数组byte[]。
- 时间戳(Timestamp):每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。时间戳是64位的,可以精确到秒级别或毫秒级别。
总的来说,HBase的数据模型是一个多维度的map,其key由行键、列族名、列限定符和时间戳组成。HBase利用这种数据模型,可以高效地存储和处理大规模数据。
3.HBase 逻辑结构
HBase的逻辑结构主要包括表、行、列族、列限定符和单元格等概念。HBase中的数据以表的形式组织,每个表由多个行组成,每个行由一个唯一的行键标识。在行中,数据按列族分组,列族是访问控制的基本单元,每个列族可以包含多个列限定符。每个列限定符对应一个单元格,单元格中存储的数据没有数据类型,总被视为字节数组。每个单元格中可以存储多个版本的数据,这些版本通过时间戳进行索引。
HBase的逻辑结构支持高效的随机读/写操作,特别是对于大规模数据的处理。由于数据按行键的字典序排序,因此可以根据行键进行快速检索。此外,HBase还支持数据的压缩、Bloom过滤器和数据校验等特性,以提供可靠的数据存储和访问。
HBase的逻辑结构可以灵活地适应不同类型的应用需求。例如,可以使用稀疏表格模型来存储大规模稀疏数据,或者使用列族模型来存储具有相同列族的数据。此外,HBase还提供了丰富的API和工具,使得开发人员可以方便地访问和操作HBase中的数据。
4.HBase 物理存储结构

HBase的物理存储结构主要包括以下几个组成部分:
- 表(Table):在物理存储上,HBase表由多个HRegion组成,每个HRegion对应表中的一个连续的数据段。每个HRegion由多个HStore组成,每个HStore对应表中的一个列族的存储。
- HRegion(Region):HRegion是HBase中分布式存储和负载均衡的最小单元。一个HRegion上保存着一个表中的一段连续的数据。每个HRegion保存当前HRegion的startRowKey和endRowKey,以便进行数据定位。随着数据不断插入表,HRegion会不断增大,当超出设定的阈值大小后,会在某行的边界把表分成两个大小基本相同的HRegion,称为HRegion分裂。
- HStore(Store):每个HRegion由多个HStore组成,每个HStore对应表中的一个列族的存储。HStore由两部分组成:MemStore和StoreFile,用户写入的数据首先放入MemStore,当MemStore(默认128M)满了以后再刷入StoreFile(默认30M)。StoreFile是HBase中的最小存储单元,底层最终由HFile实现。
- HLog(WAL):每个HRegionServer包含两个部分:HLog和HRegion。 Hlog用于存储数据日志,主要用于故障恢复。
总的来说,HBase的物理存储结构以表为单位,通过将表划分为多个HRegion进行分布式存储和负载均衡。每个HRegion由多个HStore组成,每个HStore对应一个列族的存储。底层使用HFile实现最小存储单元StoreFile的存储。这种物理存储结构使得HBase能够高效地处理大规模数据,并具有良好的可扩展性和容错性。
5.HBase 基本架构

HBase的基本架构包括以下几个组成部分:
- HMaster节点:HMaster节点是HBase的主节点,负责管理多个HRegionServer、恢复HRegionServer故障等。HMaster节点还负责DDL操作,如namespace和table的增删改,column familiy的增删改等。此外,HMaster节点还管理namespace和table的元数据,这些数据实际存储在HDFS上。
- HRegionServer节点:HRegionServer节点是HBase的从节点,负责管理多个HRegion以及相应客户端请求。HRegionServer节点还负责区域划分,并通知HMaster节点有了新的子区域。此外,HRegionServer节点还负责数据的实际存储和读取操作。
- ZooKeeper集群:HBase需要ZooKeeper集群服务,ZooKeeper用于记录HMaster位置、根目录表位置等核心数据。当有HRegionServer崩溃时,ZooKeeper可以用来进行分配协调。
- HDFS:HBase底层采用HDFS作为其存储系统,通过将数据存储在HDFS中,实现数据的分布式存储和处理。
总体来说,HBase的基本架构采用Master/Slave架构搭建集群,通过HMaster节点和HRegionServer节点的协同工作,实现数据的分布式存储和处理。同时,借助ZooKeeper集群和HDFS,HBase能够提供可靠的数据存储和访问,并具有良好的可扩展性和容错性。

5804

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



