概述
HBase作为一个分布式数据库,
RowKey
RowKey是HBase中的重中之重,核心中的核心
- RowKey是分布式的基础,HBase本质上是通过RowKey划分Region来实现分布式
所以RowKey必须避免热点问题,尽可能保证RowKey头的均匀分布(比如Hash散列或MD5),避免使用时间,用户ID等明显可能出现分段集中的数据作为RowKey - 列族
HBase中的列族等于一个物理文件.原则上不能设计过多的列族,防止因为不得不读取更多的文件而造成过大的IO - TTL设计
基于LSM设计,HBase的数据是不会即时删除的.HBase的删除将在Major合并时产生.大量的无用数据积累,会造成物理数据超大而影响性能 - Region设计
Region不应设计的过大,过大会导致Major合并的周期变成
Region也不应设计的过小,过小的Region会导致频繁的RegionSplit(RegionSplit在HBase的实际运行过程中应该视为不正常操作,首先应是通过预分区提前设置好未来可能的Region数量,而在真正充满之前会因为数据过期而在Major合并移除,这样会始终维持在一个正常的水准中)
Region还必须考虑内存上的限制,每一个Region都会有一个MemStore,而每一个RegionServer = MemStore * Region数量 * 列族数量