HBase-理论概述

111 阅读2分钟

Hadoop Database = HBase

Google Bigtable的开源实现

以Hadoop Distributed File System(HDFS)为存储基础

本质:非关系型数据库nosql 存储数据不同 存储kv对

如何优雅的理解HBase和BigTable - 掘金 (juejin.cn)

数据模型

BigTable是一个稀疏的、分布式的、持久的多维排序的map(映射)。

稀疏的:百万列中空值不存储,节省空间

映射:指代nosql的kv结构

由行键、列键、时间戳索引作为key,value是未解释(序列化or无法用utf-8编码,节省空间)的字节数组。

逻辑结构

列族 列

行键 字典序排序

在此基础上拆分

  • 按行region,有rowkey范围,用于实现分布式结构
  • 按列store,以列族为单位,拆分文件夹便于存储

物理存储结构

即数据映射关系,概念视图中的空值不存在

底层文件StoreFile按kv存储

  • key:rowkey 列族 列名 时间戳 类型
  • value:值

hdfs无法修改数据,只能删除,写,追加写

  • 实现修改功能->时间戳 标记不同版本,默认读取最新版本

  • 实现删除功能->类型为DeleteColumn

数据模型概念

  • NameSpace命名空间

类似RBD的database概念,每个命名空间下有多个表。

自带两个命名空间:

  1. hbase 存放内置表
  2. default 用户默认使用
  • Table

类似RDB的表,但定义表时只需要声明列族,不需声明具体的列。因为数据存储稀疏,字段可以动态按需指定。

  • Row

由RowKey和多个Column组成。

数据按照rowkey字典序存储并实现检索,rowkey设计十分重要。

  • Column

由Column Family 和Column Qualifier进行限定。

eg:info:age

  • Time Stamp

时间戳,标识数据的不同版本

  • Cell

由{rowkey,column family:column name,timestamp}唯一确定的单元。

底层存储的一行数据。

基础架构

架构角色介绍

  • Master 负责监控集群中所有的RegionServer实例
    • LoadBalancer
    • CatalogJanitor
    • MasterProcWAL master 功能:
  1. 管理元数据表格hbase:meta,接受用户的命令并执行。
  2. 监控region是否需要负载均衡,故障转移和region拆分。
  • RegionServer

负责数据cell的处理,是拆分合并region的主要执行者

  • Zookeeper

通过zookeeper来做高可用,记录regionserver的部署信息且存储meta表位置信息。

  • HDFS

提供底层数据存储服务,同时提供高容错。