行键(RowKey)设计
行键是 HBase 性能的第一决定因素。最核心的原则是:让数据均匀分布,避免读写集中到个别 Region。
1、避免单调递增的行键:直接用时间戳或自增 ID 作行键前缀,会导致新数据全部写入同一个 Region(热点),写入被单节点瓶颈限制。
2、打散连续行键:对写入频繁的场景,用加盐(随机/哈希前缀)、哈希(固定前缀、可读时还原)或反转时间戳的方式分散写入。
3、行键尽量短:行键会随每个单元格重复存储,过长会放大存储与网络开销。
4、避免中文与特殊字符:统一使用数字、字母、下划线,保证字典序与索引解析稳定。
列族设计
1、列族数量控制在 1~3 个。列族过多会增加底层存储文件数量,放大 Flush 与 Compaction 开销。
2、按访问模式分组:经常一起查询的列放同一列族;写入频率、压缩策略不同的数据分到不同列族,实现物理隔离。
预分区与生命周期
1、建表时预分区:按 RowKey 分布提前切分 Region(如 NUMREGIONS + SPLITALGO),让数据从一开始就均匀分布,规避单 Region 写入热点与自动分裂的停顿。
2、合理设置 TTL 与最大版本数:按时效清理过期数据、控制版本数,避免无用数据堆积占用存储与合并开销。
与其他组件组合使用
HBase 通常作为存储底座,与以下组件配合形成完整方案:
1、HDFS:HBase 数据的底层存储,提供副本与容错,无需您单独运维。
2、Spark / Hive:对 HBase 中的数据进行离线分析、批量计算或 SQL 化访问;具体接入方式请参考对应组件文档。
注意
若您的业务需要 SQL 方式查询 HBase,请先确认当前翼MR版本是否已提供相应 SQL 组件(如 Phoenix 类能力),避免假设不支持的能力;具体以控制台可选组件为准。