写点什么

HBase 介绍

用户头像
Alex🐒
关注
发布于: 2021 年 06 月 20 日

HBase 是一种构建在 HDFS 之上的分布式、面向列(但不是列存储)的存储系统。

在需要实时读写随机访问超大规模数据集时,可以使用 HBase。

HBase 可以通过线性方式增加节点来进行扩展。HBase 不是关系型数据库,自身不支持 SQL 查询引擎,HBase 适合将大而稀疏的表放在分布式集群上。

HBase 是 Google Bigtable 的开源实现,利用 Hadoop HDFS 作为其文件存储系统;利用 Hadoop MapReduce(或其他计算引擎) 来处理 HBase 中的海量数据;使用 Zookeeper 作为协同服务。


HBase 的特点

  • 容量大:一个表可以有上亿行,上百万列

  • 面向列:面向列的存储(但不是列存储,参考 HBase 数据存储)和权限控制,支持列的独立检索

  • 稀疏性:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏

  • 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,不同的行可以有不同的列

  • 数据多版本:每个单元格(Cell)中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳

  • 数据类型单一:HBase 中的数据都是字符串(存入字节),没有类型

  • 随机查询:针对 Rowkey 的查询能够达到毫秒级别


HBase 的高并发和实时处理数据

HBase 是可以提供实时计算的分布式数据存储,HBase 以 StoreFile(HFile)二进制流的形式存储在 HDFS 上,由 HDFS 保证高容错性,HDFS 并不知道 HBase 存的是什么,HBase 的存储数据对于 HDFS 文件系统是透明的。参考 HFile 文件格式。


HBase 的使用建议

HBase 的设计目标并不是替代 RDBMS,而是对 RDBMS 的一个重要补充,尤其是对大数据的场景。

首先,在有足够多数据,如果有上亿或上千亿行数据,HBase 才会是一个很好的备选。

其次,需要确信业务上可以不依赖 RDBMS 的额外特性,例如,列数据类型,二级索引,SQL 查询语言等(部分特性可以通过其他组件实现,如 Phoenix)。

最后,需要确保有一定大小的 HDFS 集群规模。


HBase 架构概览

HBase 采用常见的 Master-Slave(主-从)结构,HBase 构建在 HDFS 上的结构如下图:



核心组件简要介绍(以下词义表示同样概念:HMaster=Master,HRegionServer=RegionServer=RS,HRegion=Region):


HMaster

  • 负责 RegionServer 的负载均衡

  • 为 RegionServer 分配 Region

  • 发现失效的 RegionServer 并重新分配其上的 Region

  • 管理用户对 Table 的增、删、改等操作


HRegionServer

  • 管理由 HMaster 分配的 Region

  • 处理对 RegionServer 上维护的 Region 的 IO 请求


HRegion

  • Region 可看作是 Table 的水平切分,管理 Table 中的一段连续的 Rowkey (记录的唯一主键)

  • Region 是 HBase 分布式存储和负载均衡以及其他特性实现的基本单位

  • 同一个 Table 的不同的 Region 可以分别在不同的 RegionServer 上,同一个 Region 的数据不会在多个 RegionServer 上


HLog

  • HBase 的 WAL(Write-Ahead Log)实现,每个 RegionServer 维护一个 HLog

  • RegionServer 上的所有 Region 共用一个 HLog


MemStore

  • Region 中维护的写缓存,数据会先写到 MemStore,满足一定条件时 flush 到文件中


HFile

  • MemStore 每次 flush 时会生成新的 HFile,在 HDFS 上

  • HDFS 会负责 HFile 的可用性


Client

  • 客户端负责访问 HBase 的接口

  • 会维护缓存信息加速 HBase 访问,如:Region 位置信息

  • Client 访问数据通过 RegionServer(通过 Zookeeper 找到 RS 地址),不需要通过 HMaster


Zookeeper

  • HBase HA 的解决方案,通过选举,保证任何时候集群中只有一个 Active Master

  • Master 与 RegionServer 启动时会向 ZooKeeper 注册,存储所有 Region 的地址

  • HMaster 功过 Zookeeper 监控 RegionServer 的上线和下线信息

  • 存储 HBase 的元数据

  • Zookeeper 的引入使得 Master 不再是单点故障


HBase 的数据模型(Table)相关概念:

  • Rowkey,每条记录的唯一主键

  • Column(列),无固定模式,可以动态添加,属于一个 ColumnFamily

  • ColumnFamily(列族),对表的垂直切分,可以设置独立的特性。每个 ColumnFamily 的列数据对应一个 Memstore,由 Store 封装。

  • Value,真实的数据,Rowkey 对应某一列的列值

  • Version,版本号,每个 Value 有自己的版本,默认是更新数据的时间戳


发布于: 2021 年 06 月 20 日阅读数: 8
用户头像

Alex🐒

关注

还未添加个人签名 2020.04.30 加入

还未添加个人简介

评论

发布
暂无评论
HBase 介绍