Skip to content
HBase 设计与热点治理 · 第 2 篇 / 共 2 篇
领域数据与中间件
专题HBase 专题
当前序列HBase 设计与热点治理
阅读位置第 2 篇 / 共 2 篇当前专题第 1 个序列 / 共 3 个序列

HBase 热点与 Region Split:为什么写入量上来后会突然不均衡

HBase 很多性能问题,本质上都和:

  • 数据分布不均

有关。

尤其当写入量上来后,热点和 Region Split 问题会变得非常明显。

先说结论

热点问题通常不是 Region Split 自己造成的,而是:

  1. RowKey 分布过于集中
  2. 某些业务键天然更热
  3. 预分区和分裂策略没有提前设计

一、什么叫热点

简单理解就是:

  • 某些 Region 或 RegionServer 压力远高于其他节点

这会带来:

  • 写入抖动
  • 查询延迟不稳定
  • 整体集群利用率失衡

二、为什么顺序键特别容易出问题

因为新写入会持续落在一段很小的键范围里。

最终表现就是:

  • 只有少数 Region 很忙
  • 其他 Region 很闲

三、Region Split 能解决所有问题吗

不能。

它只能在一定程度上缓解:

  • 单个 Region 过大

但如果数据流量一直往同一个方向集中,Split 后新的热点很快还会出现。

四、治理更稳的思路

  • 从 RowKey 打散开始设计
  • 重要表考虑预分区
  • 结合业务高频访问模式评估热点
  • 不要把 Split 当成唯一补救手段

一句话总结

HBase 热点问题最关键的,不是 Region 多不多,而是:

  • 数据有没有被合理打散
延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 回看前文会更完整HBase 核心架构与 RowKey 设计适合先建立 RowKey 设计认知,再顺着热点和 Region 分布问题继续看。HBase 专题 · HBase 设计与热点治理同专题其他序列 · HBase 读写模型与表设计BloomFilter 在 HBase 里到底解决什么问题适合把 RowKey、列族、Scan/Get 和 BloomFilter 放在同一条 HBase 读写主线上理解。HBase 专题 · HBase 读写模型与表设计同专题其他序列 · HBase 读写模型与表设计Column Family 设计过多为什么有代价适合把 RowKey、列族、Scan/Get 和 BloomFilter 放在同一条 HBase 读写主线上理解。HBase 专题 · HBase 读写模型与表设计同专题其他序列 · HBase 读写路径与建模细节Column Family、Version 和 Cell 模型怎么理解适合把 Cell、flush/compaction 和宽行扫描问题放到一起看。HBase 专题 · HBase 读写路径与建模细节跨专题关联 · 同场景:基础学习@Conditional 系列注解怎么配合使用适合把自动装配、条件装配、Profile 和循环依赖放回 Spring Boot 启动过程里理解。Spring 专题 · Spring Boot 启动、装配与配置跨专题关联 · 同场景:基础学习保留策略和日志压缩适合哪些场景适合把副本机制、acks、批量压缩和日志组织放在一条 Kafka 投递主线上理解。Kafka 专题 · Kafka 投递链路与日志存储机制
继续阅读HBase 设计与热点治理当前序列第 2 篇 / 共 2 篇当前专题第 1 个序列 / 共 3 个序列
往前看
上一篇HBase 核心架构与 RowKey 设计回到当前序列上一章上一序列ClickHouse 预聚合与分层治理从第 1 篇开始:ClickHouse 物化视图与预聚合
往后看
下一序列HBase 读写路径与建模细节从第 1 篇开始:Column Family、Version 和 Cell 模型怎么理解

把零散经验整理成可查、可复用、可持续更新的企业级知识门户