大数据存储数据分区
Region 是什么?
按 RowKey 范围切成的数据分片,一个 Region 由一个 RegionServer 管理
类比:字典按 A-C、D-F 分册,每册由一个人负责维护
Region 是怎么来的
一张表初始只有 1 个 Region。数据写多了,达到阈值(默认 10GB)就自动从中间分裂成两个,其中一个会迁移到别的 RegionServer。这个过程叫 split,是 HBase 水平扩展的基础。
热点问题的根源
因为按 RowKey 范围切分,如果 RowKey 是连续递增的(比如时间戳开头),所有写入都会落在最后一个 Region 上,其他机器全闲着。解决办法是预分区 + RowKey 打散。
预分区就是建表时先切好 N 个 Region,让数据从第一天就分散开,避免“一个 Region 写到 10GB 才分裂”的漫长过程。
Region 与可用性
RegionServer 挂掉后,它上面的 Region 会被 Master 重新分配给其他节点,期间这些 Region 短暂不可用。Region 数量太多(比如几十万)会让故障恢复变慢,所以单表 Region 数建议控制在几百到几千。