这是我参与「第四届青训营」笔记创作活动的第10天。
HBase适用场景
HDFS 是开源的分布式文件系统,提供很低的存储成本同时又提供极大的存储容量支持。
HBase
- HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一。对稀疏表提供更高的存储空间使用率和读写效率。
- HBase 基于HDFS实现存储计算分离架构的分布式表格存储服务。
HBase和关系型数据库的区别
HBase数据模型
HBase是半结构化数据模型,以列为单位存储数据,以行键索引数据。
- 列在使用前预先创建,列明不需要预先声明
- 可以保留多个版本的数据
- 物理数据结构最小单元是KeyValue结构
HBase使用场景
- “近在线”的海量分布式KV/宽表存储,数据量级达到百TB级以上
- 写密集型应用,高吞吐,可接受一定的时延抖动
- 需要按行顺序扫描的能力
- 接入Hadoop大数据生态
- 结构化、半结构化数据,可以经常新增/更新列属性
- 平滑的水平扩展
一些业务落地场景
- 电商订单数据:基于 HBase 存储,支持海量数据存储的同时满足稳定低延时的查询需求,并且只需相对很低的存储成本。
- 搜索推荐引擎:存储网络爬虫持续不断抓取并处理后的原始网页信息,通过 MapReduce、Flink、Spark 等大数据计算框架分析处理原始数据后产出粗选、精选、排序后的网页索引集,再存储到 HBase 以提供近实时的随机查询能力,为上层的多个字节跳动应用提供通用的搜索和推荐能力。
- 大数据生态:天生融入 Hadoop 大数据生态。对多种大数据组件、框架拥有良好的兼容性,工具链完善,快速打通大数据链路,提高系统构建落地效率,并借助 HDFS 提供可观的成本优势。。
- 广告数据流:存储广告触达、点击、转化等事件流,为广告分析系统提供快速的随机查询及批量读取能力,助力提升广告效果分析和统计效率。
HBase数据模型的优缺点
Hbase整体架构设计
Hbase架构设计
主要组件
- HMaster:元数据管理,定期巡检元数据,感知有无其他组件出问题来注意调度确保整体无误
- RegionServer:提供数据读写服务
- ThriftServer:提供ThriftAPI读写的代理层
依赖组件有
- Zookeeper
- HDFS
HMaster
职责
- 管理 RegionServer 实例生命周期,保证服务可用性
- 协调 RegionServer 数据故障恢复,保证数据正确性
- 集中管理集群元数据,执行负载均衡等维护集群稳定性
- 定期巡检元数据,调整数据分布,清理废弃数据等
组件
RegionServer
职责
- 提供部分 rowkey 区间数据的读写服务
- 如果负责 meta 表,向客户端 SDK 提供 rowkey 位置信息
- 认领 HMaster 发布的故障恢复任务,帮助加速数据恢复过程
- 处理 HMaster 下达的元数据操作,如 region 打开/关闭/分裂/合并操作等
组件
大数据支撑
敏捷平滑的水平扩展能力可以自如地应对数据体量和流量的快速增长。
水平扩展能力
增加 RegionServer 实例,分配部分region到新实例。扩展过程平滑,无需搬迁实际的数据,以及可用性的影响事件很短,用户基本无感知
Region 热点切分
Region split 步骤如下:
- 找到表中那个region的数据最大
- 找到最大region中哪一个column Famliy最大
- 找到最大column Famliy中最大的HFile
- 找到HFile最中间的Data Block
- 使用以上Data Block第一条KeyValue的RowKey作为切分点
总结
HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能。本节课深入了解了HBase数据模型和架构设计等部分,为日后学习hbase的使用打下了良好的基础。