一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
[第四章]分布式数据库HBase
概述BigTable存储特点HBase特点存储Hadoop局限传统型(关系)数据库与HBase区别HBase访问接口HBase数据模型概述⭐特点概念视图物理视图面向列的存储HBase实现原理功能组件表和RegionRegion的定位HBase运行机制Hbase系统架构Region服务器工作原理用户读写数据过程缓存的刷新StoreFile合并Store工作原理Hlog工作原理实验操作⭐
概述
BigTable
谷歌的分布式存储系统,解决互联网搜索问题,是一个分布式数据库
- 建立互联网索引
- 设计爬虫
- 在BigTable中运行MapReduce
- 搜索互联网
- 根据索引找到目标
存储
存储在(GFS)谷歌的分布式文件系统,Chubby提供协同管理
特点
- 可扩展
- 支持大量数据
- 处理效率高
- 支持动态伸缩
- 适于廉价设备
- 适合读操作不适合写操作
HBase
分布式数据库
特点
- 高可靠
- 高性能
- 面向列
- 可伸缩
- 即时查询
- 用来处理非结构或半结构化的松散数据
存储
存储在HDFS,Zookeeper提供协同服务
Hadoop局限
- 批量处理
- 离线处理
传统型(关系)数据库与HBase区别
- 数据类型
- 关系模型,数据类型丰富
- 存不分数据类型,调用时再解释数据类型
- 数据操作
- 表和表之间的连接
- 没有这个操作
- 存储模式
- 按行存,完整的结构化数据
- 按列存,半结构化数据
- 数据索引
- 主索引,二次索引等多个索引
- 行键索引
- 数据维护
- 更新后删除旧值
- 更新不删除
- 可伸缩性
- 很难实现横向拓展
- 拓展灵活
HBase访问接口
- java 原生api
- shell
- Thrift Gateway
- REST Gateway
- sql类型接口
- Pig
- Hive
HBase数据模型
概述⭐
稀疏的、多维度、排序的映射表
- 行键(索引)
- 列族(多个属性的集合)
- 列限定符(属性)
- 时间戳(版本信息)
- 四个维度确定一个单元格
特点
- 数据类型是未经解释的字节数组byte[]
- 每一行可以有任意多的列
- 列族和列支持动态扩展可以任意添加
概念视图
- 某些族是空的,所以稀疏
物理视图
按列存储,列族间分别存储
- 列族中空的行会删除
- 还存在的列每一项的时间戳和行键会保存
面向列的存储
- 分析一条信息的完整数据,行式存储更好
- 适合事务型操作
- 分析一类特征的所有信息,列式存储更好
- 适合分析型操作
- 相似性高,提高数据压缩率
HBase实现原理
功能组件
- 库函数
链接到每个客户端
- Master主服务器
- 对分区信息维护管理
- 维护Region服务器列表
- 实时监控整个集群中哪些Region在工作
- 对Region进行分配
- 负载平衡
管理和维护HBase表的分区信息
- Region服务器
- 客户端通过Region服务器读取数据
负责存储和维护分配给自己的Region
- Client
- HBase的访问入口
- Zookeeper
- 保证任何时候集群中只有一个HMaser
表和Region
- 按行键值的字典序分区
- 每个Region大约1G~2G
- Region超出最大容量会被拆分,默认最大容量大小是10G
- 拆分还是属于这个Region服务器
- 一个Region服务器可以存储10~1000个Region
Region的定位
- 三层结构实现Region定位⭐
- Zookepper记录ROOT表位置
- ROOT表中记录.MATE表位置,只有一个Region
- .MATE.表存储用户数据表的Region位置信息,太大会拆分成多个Region
- 计算
- Region数目=下面相乘
- ROOT中存的.MATE.表的Region个数
- 每个.MATE.表的Region可以寻址的用户数据表的Region个数
- 缓存
- 客户端.MATE.表的位置信息会缓存起来
- 惰性机制,客户端Region信息失效后,只有再次调用时才会更新
HBase运行机制
Hbase系统架构
- 客户端、ZooKeeper、Master、Region服务器
Region服务器工作原理
- 一个Region服务器有一个Hlog日志文件,多个Region共用一个Hlog
- 一个Region对象由多个Store组成,Store由一个MemStore和多个StoreFile组成
用户读写数据过程
- 写入数据中,Region先写入MenmStore、Hlog。然后返回给客户端
- 读数据时,Region先访问MemStore缓存,数据不存在才区磁盘中的StoreFile寻找
缓存的刷新
- 系统会周期性把MemStore内容写到StoreFile并在Hlog写入一个标记,产生一个新的StoreFile文件
- 每次启动,每个Region服务器都会检查自己的Hlog文件,确认最近一次执行缓存刷新操作后是否发生新的写入操作
- 没有,数据说明保存到StoreFile
- 有,刷新缓存(更新到MemStore,写入StoreFile文件),删除旧的Hlog,为用户提供数据访问服务
StoreFile合并
- 当StoreFile数量达到上限会合并
Store工作原理
每个Store对应一个列族的存储
- Store由一个MemStore和多个StoreFile组成
- 系统会周期性把MemStore内容写到StoreFile并在Hlog写入一个标记,产生一个新的StoreFile文件
- StoreFile合并到单个StoreFile太大时触发文件分裂操作,父Region被分为两个子Region
Hlog工作原理
Region发生故障,MemStore丢失,通过HLog恢复
- ZooKeeper通知Master
- Master首先处理遗留的故障Region服务器的HLog文件
- 拆分HLog分到每个对应的Region对象
- 分配到可用的Region服务器并执行相应的HLog,刷新到磁盘StoreFile中,完成数据恢复
实验操作⭐
Prev
[第三章]分布式文件系统HDFS
Next
[第五章]NoSQL数据库
Loading...