相关知识
数据存入hbase表时会按照rowkey落在不同的region中,每个region都有边界(除非你只有一个region)startrow和endrow,rowkey在表中是按照ASCⅡ码排序的。
例如下图中的region情况,如果有一个rowkey是006123456,它在0050和0100之间,因此它会被放在第二个region中。
region被regionserver管理,Hbase可以自动将region balance到各个regionserver上,使得每台regionserver上region的个数均匀分布。当某一个regionserver停止服务,它所管理的region会transit到其他regionserver上。regionserver又重新启动后,balancer会再次自动平衡region。
避免region分布倾斜
这里有一个参数需要调整,默认情况下,hbase的balancer是regionserver级别,与表无关,可以想象极端情况下整个每个regionserver下的region个数一样多,但一张表的所有region可能都在一台机器上,这也算是一种数据倾斜