学习 HBase(一):初识 HBase

Apache HBase 是 Hadoop 生态圈中分布式、可扩展的大数据存储解决方案。

基于 Google Bigtable 论文: Bigtable: A Distributed Storage System for Structured Data

拥有以下特性:

  • 线性且模块化的扩展能力
  • 严格一致性的读写
  • 自动和可配置的表分片
  • 支持 RegionServers 间自动故障转移
  • 易于使用的 Java API 客户端
  • 提供了块级缓存和布隆过滤器的实时查询
  • 通过服务端过滤器提供查询的谓词下推
  • Thrift 网关和 RESTful API 支持 XML、Protobuf 和二进制编码选项
  • 可扩展的基于 JRuby 的 Shell
  • 支持通过 Hadoop Metrics 子系统或 JMX 导出指标到文件或 Ganglia

架构

HBase 采用了主从结构,主被称为 HMaster,从被称为 HRegionServer。

HBase Architecture

概念

Namespace Table 和 Row

如果将 HBase 与关系型数据相对应,那么:

  • Namespace 对应 Database
  • Table 对应 Table
  • Row 对应 Row

Namespace 包含多个 Table,Table 包含多个 Row:

Namespace Table Row

Column Family

Row 包含多个 Column,Column 又组成多个 Column Family(列簇):

Column Family

在相同 Column Family 中的列,存储在同一个 HFile 中。

Cell

具体 Row 和 Column 的值,称为 Cell。Cell 的值是有版本的,由系统隐式或用户显示指定时间戳。