因为DataNode和RegionServer通常会部署在相同的机器上,所以会产生Locality这样的概念。
HBase的Locality是通过HDFS的Block复制实现的。在复制Block时,HBase是这样选择副本的位置的:
就是这样,在flush或compact后,HBase的Region实现了Locality。
当一个RegionServer处在failover的情况下(rebalance或重启)时,可能会分配到一些没有本地StoreFiles的Region(因为此时没有可用的本地副本)。然而,有新数据再写入这些Region的时候,或者是对表进行compact的时候,StoreFiles将会被重写,这些Region也会再次变成RegionServer的“local”Region。
有一个相关的指标“data locality”,即Region保存在本地的StoreFile的百分比。这个指标影响了major compact的执行。
#########