HBase中的HMaster、HRegionServer、Zookeeper

HMaster是HBase主/从集群架构中的中央节点。一般一个HBase集群存在多个HMaster节点,其中一个为Active Master,其他为Backup Master.
Hbase每时每刻只有一个hmaster主服务器程序在运行,hmaster将region分配给region服务器,协调region服务器的负载并维护集群的状态。Hmaster不会对外提供数据服务,而是由region服务器负责全部regions的读写请求及操做。
  因为hmaster只维护表和region的元数据,而不参与数据的输入/输出过程,hmaster失效仅仅会致使全部的元数据没法被修改,但表的数据读/写仍是能够正常进行的。
  
HMaster的做用: 
 
- 为Region server分配region
- 负责Region server的负载均衡
- 发现失效的Region server并从新分配其上的region
- HDFS上的垃圾文件回收css

HRegionServer做用:node

  • 维护master分配给他的region,处理对这些region的io请求
  • 负责切分正在运行过程当中变的过大的region

能够看到,client访问hbase上的数据并不须要master参与(寻址访问zookeeper和region server,数据读写访问region server),master仅仅维护table和region的元数据信息(table的元数据信息保存在zookeeper上),负载很低。
注意:master上存放的元数据是region的存储位置信息,可是在用户读写数据时,都是先写到region server的WAL日志中,以后由region server负责将其刷新到HFile中,即region中。因此,用户并不直接接触region,无需知道region的位置,因此其并不从master处得到什么位置元数据,而只须要从zookeeper中获取region server的位置元数据,以后便直接和region server通讯。
HRegionServer存取一个子表时,会建立一个HRegion对象,而后对表的每一个列族建立一个Store实例,每一个Store都会有一个MemStore和0个或多个StoreFile与之对应,每一个StoreFile都会对应一个HFile, HFile就是实际的存储文件。所以,一个HRegion有多少个列族就有多少个Store。
一个HRegionServer会有多个HRegion和一个HLog。
当HRegionServer意外终止后,HMaster会经过Zookeeper感知到。服务器

Zookeeper做用在于:markdown

  • hmaster启动时候会将hbase系统表-ROOT- 加载到 zookeeper cluster,经过zookeeper cluster能够获取当前系统表.META.的存储所对应的regionserver信息。
  • 保证任什么时候候,集群中只有一个master
  • 存贮全部Region的寻址入口。
  • 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
  • 存储Hbase的schema,包括有哪些table,每一个table有哪些column family

zookeeper是hbase集群的”协调器”。因为zookeeper的轻量级特性,所以咱们能够将多个hbase集群共用一个zookeeper集群,以节约大量的服务器。多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不一样hbase集群的”zookeeper.znode.parent”属性,让它们使用不一样的根目录。好比cluster1使用/hbase-c1,cluster2使用/hbase-c2,等等。架构

相关文章
相关标签/搜索