深入浅出HBase实战|青训营笔记

111 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的第10天,笔记的内容为:深入浅出HBase实战。主要从以下几个方面呈现。

  • Hbase适用场景
  • Hbase架构设计
  • Hbase的大数据支撑

01.Hbase适用场景

什么是Hbase:

Hbase是一个开源的NoSQL分布式数据库,是Apache基金会顶级项目之一。

采用存储计算分离架构

  • 存储层基于HDFS存储数据,提供容错机制和高可靠性。
  • 计算层提供灵活快速的水平扩展,负载均衡和恢复故障能力。

Hbase和关系型数据库的区别

QQ图片20220811213432.png

Hbase数据模型

HBase 以列族(column family)为单位存储数据,以行键(rowkey)索引数据。

  • 列名(column qualifier)不需要预先声明,因此支持半结构化数据模型。
  • 支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体的值。
  • 行键(rowkey):用于唯一索引一行数据的主键,以字典序组织。一行可以包含多个列族。
  • 列族(column family):用于组织—系列列名,一个列族可以包含任意多个列名。每个列族的数据物理上相互独立地存储,以支持按列读取部分数据。
  • 列名(column qualifier):用于定义到一个具体的列,一个列名可以包含多个版本的数据。
  • 不需要预先定义列名,以支持半结构化的数据模型。
  • 版本号(version):用于标识一个列内多个不同版本的数据,每个版本号对应一个值。
  • 值(value):存储的一个具体的值。

使用场景

  • “近在线”的海量分布式KV/宽表存储,数据量级可达到PB级以上
  • 写密集型、高吞吐应用,可接受一定程度的时延抖动
  • 动字典序主键索引、批量顺序扫描多行数据的场景
  • Hadoop大数据生态友好兼容
  • 半结构化数据模型,行列稀疏的数据分布,动态增减列名
  • 敏捷平滑的水平扩展能力,快速响应数据体量、流量变化

Hbase数据模型的优缺点

QQ图片20220811214345.png

02.Hbase架构设计

主要组件包括:

  • HMaster:元数据管理,集群调度,保活。
  • RegionServer:提供数据读写活动,每个实例负责若干个互不重叠的rowkey区间的数据。
  • ThriftServer:提供Thrift API读写的代理层。

依赖组件包括:

  • Zookeeper:分布式一致性共识协作管理,例如HMaster选主,任务分发,元数据变更处理等等。
  • HDFS:分布式文件系统,Hbase数据存储底座。

QQ图片20220811215146.png

03.Hbase的大数据支撑

Hbase针对海量数据场景的设计优化

  • 水平扩展能力
  • 负载均衡策略故障恢复机制

Hbase在大数据生态的定位

  • 对TB、PB级海量数据支持强一致、近实时的读写性能,支持快速的ad-hoc分析查询任务;支持字典序批量扫描大量数据,支持只读取部分列族的数据。
  • 灵活支持不同查询模式,避免读取不必要的数据。
  • 存储大规模任务(例如MapReduce,Spark,Flink)的中间/最终计算结果。
  • 平滑快速的水平扩展能力,能够敏捷应对大数据场景高速增长的数据体量和大规模的并发访问;精细化的资源成本控制,计算层和存储层分别按需扩展,避免资源浪费。