hbase在分布式部署上采用master/slave的方式,主要包含3大功能组件,分别是:regionserver、masterserver和clientlibrary在分布式
hbase在分布式部署上采用master/slave的方式,主要包含3大功能组件,分别是:regionserver、masterserver和clientlibrary
在分布式存储上使用的是hadoop的hdfs子框架
分布式计算功能基于hadoop的mapreduce实现
1.region
region作为hbase的分布式存储单元包含了一组row,这些row的key值在索引排序上是连续的,因此在分布式存储的时候,rowkey的定义非常重要,要确保具有相同性质的数据是存储在同一台机器上,最好的方法就是为他们指定相似的rowkey值
2.regionserver
在hbase中,regionserver充当slave角色,,负责与client进行交互,进行相关的读写操作。
3.masterserver
masterserver充当master主要有以下职责:
(1).负责将region分配给regionserver
(2).动态加载或卸载regionserver
(3).对regionserver实现负载均衡
(4).管理schema定义
系统中可能会存在多个master机器,但是这些机器并不会同时运行,而是处于一个竞争的状态,当正在运行的master机器出现故障的时候,系统会转移到其他master来接管。
在hbase部署中,client是不与master进行交互的,所有的读写操作都是通过regionserver来完成,master在其中起到了负载均衡的作用,当某一个regionserver加载量较大时,master可以将相应的region进行重新的切片部署,将压力分散到多台机器上。
4.clientlibrary
客户端类库,与regionserver进行通信,并且还会缓存regionserver和它所存储的region地址,加快下次访问效率。
另外,当master机器地址发生变动时,client通过zookeeper来查找定位新的master地址,zookeeper存储了所有机器的地址信息,客户端需要有zookeeper的连接环境(将habse-site.xml加入到客户端classpath中)
5.catelogtable
hbase预定义了两张表格用于保存数据的分布式存储地址,分别是 -root- 和 .meta.
-root-存储了.meta.数据的访问地址
.meta.存储了用户region的访问地址
这样clientlibrary可通过-root-遍历到任何region的地址