《大数据技术原理与应用》暑假学习计划_05 - 分布式文件数据库HBase
《大数据技术原理与应用》暑假学习计划_05 - 分布式文件数据库HBase
HBase简介
HBase分布式数据库 → 用来存储非结构化及半结构化松散数据,具有高可靠,高性能,面向列,可伸缩的特性。
底层分布式文件系统存储完全非结构化数据,Hbase通过水平扩展允许上千台服务器存储数据
- 文件存储系统:HDFS
- 海量数据处理:Hadoop MapReduce
- 协同管理服务:Zookeeper
与传统关系型数据库相比,传统关系型数据库存储关系数据模型。对于数据操作,HBase没有多表连接操作。对于存储模式,HBase基于列,关系数据库基于行。数据维护方面,HBase没有数据覆盖的操作。对于可伸缩性,HBase基于分布式。
HBase访问接口
- 原生Java API
- shell命令
- Thrift Gateway
- REST Gateway
- SQL类型接口
- Pig
- 数据仓库产品Hive
HBase数据模型
Hbase是一个稀疏多维度排序映射表 → 每一个值都是未经解释的字符串及Bytes数组
列族(核心):支持动态扩展,保留旧版本,新版本增加时间戳
单元格:具体存储数据的地方
HBase → 采用四维坐标确定位 →行键,列族,列限定符,时间戳(以列族为单位)
列式存储:便于分析操作
HBase实现原理
Hbase功能组件
- 库函数 → 用于链接每个客户端访问数据
- Maste服务器
- 分区信息进行维护和管理
- 维护Region服务器列表
- 整个集群中有哪些Region在工作
- 负责对Region进行分配
- 负载均衡
- Region维护管理Region服务器
- 客户端要访问的数据直接对Region服务器进行数据存取
- 客户端不依赖Maste获取数据存放位置
- Region实际大小取决于单台服务器有效处理能力
HBase三层结构 → 实现Region寻址与定位
- Zookeeper文件 → 记录ROOT表位置信息
- ROOT表 → 只有一个Region → 记录MATE表Region信息
- MATE表(元数据表) → 记录用户表Region位置信息
- Region的id
- Region服务器的id
- 用户数据表
客户端可以缓存位置信息可以起到加速寻址的效果,但是需要解决缓存失效的问题
HBase运行机制
客户端 → 访问HBase接口
Zookeeper服务器 → 实现协同管理服务 → 大量用于分布式系统 → 提供配置,域名服务,分布式同步服务 → 同时也提供管家服务负责维护整个HBase集群
Master服务器 → 主服务器
- 对表实现增删改查
- Region服务器负载均衡
- 负责调整分裂,合并后的Region分布
- 负责重新分配故障,失效的Region服务器
Region服务器 → 负责用户数据存储和管理
HBase应用方案
实际应用中的性能优化方法
- 时间相近的数据存放在一起 → 时间戳
- 按升序排列
- 时间戳越来越大
- 64位长整形
- 用系统最大整型值减去时间戳(Long.Max_VALUE - timestamp) → 排序反过来从而改变排序顺序
- 设置最大版本数
- 设置数据生命周期 → 过期数据自动删除
SQL → HBase(易使用,减少代码量) → Hive,Phoenix
构建HBase二级索引
原生HBase只支持对键索引
- 通过单个键去访问
- 可以定一个行键开始点和结束点去访问区间数据
- 只能全表扫描对整个Hbase顺序扫一遍
二级索引引入Coprocessor
- endpoint相当于关系数据库中的存储过程
- observer相当于触发器
- 在HBase额外构建索引表