1.概述
Hbase是一个开源的,面向列,适合存储海量非结构化、半结构化数据的高性能、可扩展的支持实时数据读写的分布式存储数据库。它有如下特点:
- 大表:一个表有上亿行,上百万列
- 面向列:面向列(族)的存储、索引与权限控制
- 稀疏:表中为空(null)的列不占用存储空间
HBase数据模型术语:
- 行键:这是HBase表中每个记录的唯一键,无论选择什么类型数据作为行健,它在内部、磁盘或内存里,都将转换为字节数组进行存储,表中的每条数据有唯一的标识符,即rowkey,类似于关系型数据库的主键
- 列族:一张HBase表由表的不同列集合在一起。将相同功能或类型的列分类组合在一起,这样做的好
处是可以更快的分开存储在HBase磁盘上的列族中检索出所需的列 - 列:列属于某一个column family列族
- 版本:HBase能够为一个单元格元组(行、列族和列)保存多个值,每个单元格被称为一个记录的版本。版本制定为基于时间戳的长整形
- 时间戳:对于每个插入的数据,当前的时间戳与值是相关的,它表示了数值插入到表中的时间
- 单元格:最小或基本的存储单元,在内部是一个列的实际值存储。故插单元格数据时必须包含rowkey+columnfamily(列族名)+columnname(列名)+timestamp:value。
2.HBase组件介绍
- HMaster:是整个集群的大脑,Region Server的负载均衡,Region Server失效后Region的迁移;Region分布调整,Region分裂以及分裂后Region的分配负责数据表的管理,包括表的增删改查。
- Zookeeper:存储-ROOT-表的地址和Master地址,Region Server主动向Zookeeper注册,使得Master可随时感知各Region Server的状态,Zookeeper另一个重要作用是避免Master单点故障。
- Region Server:负责数据路由、数据读写及数据持久化,是Hbase的数据处理和计算单元,同时还负责区域的分割(Region Split).Region Server要求和HDFS的Data Node一起部署,hbase的数据最终存储在Data Node的块(block)上。
3.Hbase架构
Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上。Region虽然是分布式存储的最小单元,但并不是存储的最小单元:
- Region由一个或者多个Store组成,每个Store保存一个Columns family列族
- 每个Store又由一个memStore和0到多个的StoreFile组成
- memStore存储在内存中,StoreFile存储在HDFS上
4.Hbase数据模型