您的位置:首页 > 其它

Hbase 知识点记录总结(1)

2015-12-01 09:29 363 查看
先总结一下几个基本比较重要的名词

RegionServer : Region读写操作的场所

Master : 管理Region的分配,基于zooKeeper感应RegionServer的上下线

HDFS : HBase数据,日志的存储场所,分布式文件存储系统,属于基于硬件文件系统的上层虚拟概念

强一致性:

同一行数据的读写只在同一台region server上进行,由于一个表包括多个region,而每个region是分布式存在和

负载均衡的最小单元,所以这个强一致性所代表的含义可以理解为同一行的数据应该是保证在同一个region中的

也就是同一行数据的多个列组是在同一个region的。还有一种可能就是同一行的多个列组在不同的region中,但是

这些region分配在同一个regionserver上,这样也能符合强一致性,但是这种推测不太可能

所以还是理解为同一行数据的多个列组也就是在同一个region中,这几个列组分别对应的Store可能大小不一样,但是

是在同一个region的。这也证明了下面这个说法中的:

1) Region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阈值的时候,Hregion就会等分为两个新的Hregion

2)Table in HBase : 以region为单位管理:region(startKey,endKey); 每个列组单独存储:storeFile,当某个列组累计的大小>某阈值时,自动分裂为两个Region

这两个都解释了Region的处理情况,至于是根据某个列组的大小,或者是根据整个region的大小,用哪个做依据去进行分裂,则是需要进一步了解的

如果是根据某个列组的大小,则可能出现每个region进行分裂时的实际region大小是不一致的,因为其他列组的大小不会被考虑

如果是根据整个region的大小,则可能会出现当其他列的数据较少,某个列会增长到很大的值才会被分裂的情况

从理解上看根据某个列组的大小进行分裂更为合理,但是不管怎么,由于需要实现强一致性,分裂的时候都需要是横向分裂,也就是保证region内的所有store在分裂后的

行是一致的,如果开始的region为 startkey,endkey, 那么分裂后的两个region则为(startkey,slipkey) 和 (slipkey,endkey)

发现有篇文字跟以上个人的理解很符合http://blog.csdn.net/wkwanglei/article/details/43988109
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: