您的位置:首页 > 理论基础 > 计算机网络

HBase架构 http://hbase.apache.org/book.html#_architecture

2015-09-17 13:46 615 查看
1.Master

HMaster是Master Server的实现,HMaster负责监控集群里所有RegionServer,HMaster也是管理所有元数据,一般HMaster和HDFS的NameNode同在一台机器上运行。

一个最普遍的问题就是如果HMaster宕机了怎么办,因为HBase的客户端是直接和RegionServer通信的,所以如果HMaster宕机,整个集群仍会在一个“稳定的状态”运行。而且元数据在HBase的表里,不在HMaster的内存中,然而HMaster要控制比如RegionServer宕机和数据切分,所以HMaster要尽快重启。

2.Region和Store

Region在HBase的情况如图所示




通常HBase每台机器管理20-200个每个5-20G的region。

一个Store由一个MemStore加上0到数个StoreFile组成。

3.RegionServer

HRegionServer是ResionServer的实现,负责管理数据region,一般和HDFS的DataNode在同台机器运行

4.HBase的缓存机制

HBase有两种缓存机制,LruBlockCache和BucketCache,LruBlockCache内存使用都在Java的heap上,BucketCache是使用的off-heap方式的内存,从BucketCache取数据会比从LruBlockCache里取要慢,然而BucketCache会减少Java垃圾回收的时间。

LruBlockCache是一个LRU式的缓存,数据被访问的次数越多,该数据块在缓存停留的时间越长。

5.RegionServer的数据切分的实现

当RegionServer接收写请求的时候,写过来的数据会在一个命名为memstore的内存结构积累,当memstore满了,就以store files的形式写到硬盘,当store files文件积累到一定程度,RegionServer就会把它们一起打包成更少更大的文件,这样之后,这个region的数据足够大了,RegionServer就会把它切分。

虽然切分region是在RegionServer本地进行的,但是RegionServer也会在切分开始和结束的时候通知HMaster并更新HMaster的元信息数据,以便客户端能够知晓新的region。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: