首页 > 代码库 > HBase自动分区

HBase自动分区

HBase扩展和负载均衡的基本单位是Region。Region从本质上说是行的集合。当Region的大小达到一定的阈值,该Region会自动分裂(split),当然也可能是合并(merge),合并可以减少Region和相应存储文件的数量(请注意目前HBase[0.94版]不支持在线的Region合并,当然你可以使用工具离线合并,在线和离线可以视为enable,disable状态)。
 
Bigtable Paper认为一台Server上保有10到1000个Region为佳,每个Region的大小在100~200MB。这个数据是基于2006年之前的硬件情况而言。目前来说,对于HBase,每台Server上的Region数仍然是10~1000,但是单Region的容量已经增加到3GB。
 
对于一张表(HTable)而言,初始时只会有一个Region。表的数据量不断增加,系统会监控此表以确保数据量不会超过一个配置的阈值。如果系统发现表容量超过了限制,该Region会被一分为二。分裂主要看行键(row key),从Region正中的键开始分裂,并创建容量大致相等的两个Region。
 
Region和Region Server的关系是多对一。一个Region只能位于一台Region Server之上,而一台Region Server可以服务多个Region。
 
分裂和服务这些Region可以视为自动分片。HBase的设计考虑到Region的快速恢复和细粒度的负载均衡问题。当服务于某些Region的Region Server压力过大、退役(decommission,这个概念之后会详细阐述)或者干脆出问题时,这些Region会被移动到其他的Server上。
 
分裂非常快速,几近于瞬间,因为分裂的Region只是简单地读取原来的存储文件的数据。但是,压缩并重写这些数据到分裂后的Region中是需要时间的,当然,这是一个异步的过程。具体的过程也将在以后的文章中详细描述。
 
 
摘录自:http://blog.sina.com.cn/s/blog_8c6d7ff60101blhi.html

HBase自动分区