这是我参与「第四届青训营 」笔记创作活动的第5天
- HBase介绍 1.1 HBase定义 HBase是一个开源的NoSQL分布式数据库,参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写率。采用存储计算分离架构:
- 存储层基于HDFS存储数据,提供容错机制和高可靠性。
- 计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力。
1.2 HBase 数据模型 逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。 HBase以列族(column family)为单位,以行键(rowkey)索引数据。
- 列族需要在使用前预先创建,列名(column qualifier)不需要预先声明,因此支持半结构化数据模型。
- 支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体的值。 1.3 HBase数据模型的优缺点 优点:
- 稀疏表友好,不存储缺省列,支持动态新增列类型
- 支持保存多版本数据
- 支持只读取部分column family的数据,避免读取不必要的数据
- 支持的数据规模相比传统关系型数据库更高,更容易水平扩展
- 支持rowkey字典序批量扫描数据 缺点:
- 每条数据都要冗余存储行列信息
- 不支持二级索引,只能通过rowkey索引,查询效率依赖rowkey设计
- column family数量较多时可能引发性能衰退
- 不支持数据类型,一律按字节数组存储
- 仅支持单行内的原子性操作,无跨行事务保障
- HBase架构 2.1 HBase组件 2.1.1 Region Server
- Region Server 为 Region 的管理者,其实现类为 HRegionServer,主要作用如下:
- 对于数据的操作:get, put, delete;
- 对于 Region 的操作:splitRegion、compactRegion。 2.1.2 Master Master 是所有 Region Server 的管理者,其实现类为 HMaster,主要作用如下:
- 对于表的操作:create, delete, alter
- 对于 RegionServer的操作:分配 regions到每个RegionServer,监控每个 RegionServer的状态,负载均衡和故障转移。