有关idea( 二 )


负载均衡问题:
数据的逻辑分布:即region划分/分布,是rowkey到region的映射问题数据的物理分布:即region在RS上的调度问题访问的分布:即系统吞吐(请求)在各个RS上的分布问题,涉及数据量和访问量之间的关系,访问热点等 。
HBase能够实现灵活调度、秒级扩容的关键
可见,一行数据的分布(找到一行数据所在的RS),存在2个层级的路由:一是rowkey到region的路由,二是region到RS的路由 。这一点是HBase能够实现灵活调度、秒级扩容的关键 。
逻辑分布 – 基于范围的划分
就是:一张表如何划分成多个region
region划分的粒度是行,region就是这个表中多个连续的行构成的集合 。行的唯一标识符是rowkey,所以,可以将region理解为一段连续分布的rowkey的集合 。所以,称这种方式为基于rowkey范围的划分 。一个region负责的rowkey范围是一个左闭右开区间,所以,后一个region的start key是前一个region的end key 。注意,第一个region是没有start key的,最后一个region是没有end key的 。这样,这个表的所有region加在一起就能覆盖任意的rowkey值域 。
一般来说,region的生成有3种方式:建表时进行预分区:通过对rowkey进行预估,预先划分好regionregion分裂:手工分裂,或达到一定条件时自动分裂(如region大小超过一个阈值)region合并:手工合并
所以,为了使表从一开始就具备良好的吞吐和性能,实际生产环境中建表通常都需要进行预分区 。但也有一些例外,比如无法预先对rowkey范围进行预估,或者,不容易对rowkey范围进行均匀的拆分,此时,也可以创建只有一个region的表,由系统自己分裂,从而逐渐形成一个“均匀的”region分布 。