在创建数据的时候就指定了Row key,HBase根据Row key来创建索引,并且还根据Row key的字典顺序分别进行了存储。我们以下图为例,可以看到图左侧是表的Row key的字典顺序,可以看到根据不同的范围把Row key分成了五个部分,每个部分是一个Region,所以可以理解为,一个Region保存了一个Row key范围的数据。右侧有三个HRegionServer。字典顺序从0到2(包括0,不包括2)的数据都存储在rs2(HRegionServer)这台设备上,字典顺序从2到4(包括2,不包括4)存储在rs1(HRegionServer)这台设备上,等等。这样存储的好处是什么呢?我们查询数据的时候根据Row key的字典顺序可以快速定位到数据在哪一台设备上,然后再根据Row key索引快速定位到要查询的数据。HBase还有个非常大的优势是可扩展性非常强,以后如果这张表需要增加字段将会非常简单,因为HBase是允许动态添加列的。还有就是我们不需要用多么昂贵的服务器,用普通的PC服务器就可以,无非多用几台设备罢了,用普通的PC照样存储非常庞大的数据。
参考: http://blog.youkuaiyun.com/u012453843/article/details/53013782