深入浅出 HBase 实战 | 青训营笔记

74 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第13天

资料来源于[这](【大数据专场 学习资料四】第四届字节跳动青训营 - 掘金 (juejin.cn))

深入浅出 HBase 实战

01.适用场景

Hbase是一个开源的NoSQL分布式数据库

稀疏表提供更高的存储空间使用率和读写效率

Hbase和关系型数据库的区别

image.png

Hbase数据模型

image.png

image.png

image.png

Hbase数据模型的优缺点

image.png

02.架构设计

主要组件包括:

Hmaster:元数据管理,集群调度、保活。HMaster是什么? - 知乎 (zhihu.com)

RegionServer:提供数据读写服务,每个实例 负责若干个互不重叠的rowkey 区间内的数据。RegionServer详解 - 简书 (jianshu.com)

ThriftServer:提供Thrift APl 读写的代理层。 HBase Thrift 使用以及Thriftserver 分析-阿里云开发者社区 (aliyun.com)

依赖组件包括:

Zookeeper:分布式一致性共识协作管理,例如 HMaster 选主、任务分发、元数据变更管理等

HDFS:分布式文件系统,HBase 数据存储底座。

image.png

03.大数据支撑

Hbase在大数据生态的定位

对TB、PB级海量数据支持强一致、近实时的读写性能,支持快速的ad-hoc分析查询任务;

支持字典序批量扫描大量数据,支持只读取部分列族的数据,

灵活支持不同查询模式,避免读取不必要的数据;

存储大规模任务(例如MapReduce ,Spark ,Flink )的中间/最终计算结果;

平滑快速的水平扩展能力,能够敏捷应对大数据场景高速增长的数据体量和大规模的并发访问;

精细化的资源成本控制,计算层和存储层分别按需扩展,避免资源浪费。

水平扩展能力

增加RegionServer3实例,分配部分region 到新实例。

扩展过程平滑,无需搬迁实际数据。

可用性影响时间很短,用户基本无感知。

Region热点切分

当某个region 数据量过多,切分成两个独立的子region 分摊负载。

RegionServer 在特定时机(fush、compaction )检查region 是否应该切分,计算切分点并RPC上报HMaster ,由 AssignmentManager 负责执行RegionState Transition。

不搬迁实际数据,切分产生的新region 数据目录下生成一个以原region 文件信息命名的文件,内容是切分点对应的 rowkey ,以及标识新region 是上下半部分的数据。

04.最佳实践分享

rowkey设计

最大长度是64KB,实际应用中长度一般为 10 ~ 100bytes。key在保证功能的前提下建议越短越好,因为key是冗余到每个cell存储的,过长的key会占用更多存储、缓存空间。

设计Key时,要充分利用排序存储这个特性,将经常一起读取的行存储到一起。HBase以HFile文件块为单位从HDFS读取数据,一次性读出相邻相关数据可以达到随机读变成顺序读的效果。

但同时要防止出现热key聚焦打爆region server实例。

反例:以时间戳作rowkey前缀,一段时间的请求会全部打到同一regionserver。