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概念,每个命名空间下有多个表。
自带两个命名空间:
- hbase 存放内置表
- 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 功能:
- 管理元数据表格hbase:meta,接受用户的命令并执行。
- 监控region是否需要负载均衡,故障转移和region拆分。
- RegionServer
负责数据cell的处理,是拆分合并region的主要执行者
- Zookeeper
通过zookeeper来做高可用,记录regionserver的部署信息且存储meta表位置信息。
- HDFS
提供底层数据存储服务,同时提供高容错。