在之前博文中分析了HMaster的启动以及其在整个系统中的作用,在本篇文章中,我们将继续讨论HBase中另外一个重要的角色—-HRegionServer,文章中所涉及的相关知识点会后续更新。
**
RegionServer的功能模块分析
**
话不多说,直接上图来看一下RegionServer的整体功能图(本文的整体思路亦是按照这个功能图展开的):
从上图可以看出RegionServer是通过RPC协议与HMaster和Client进行通信的,它们之间是如何通信的呢?
- RegionServer ——>HMaster
其中Master是RPCServer端角色,RegionServer是客户端角色。通信协议是RegionServerStatusProtocol,HRegionServer向HMaster定期汇报节点的负载状况,包括RS内存使用状态、在线状态的Region等信息。 - Client<——>Regionser
该过程涉及到两个协议:
Clientprotocol:RegionServer是RPCServer端,主要实现用户的读写请求,例如:get、multiget、mutate、scan、bulkLoadHFile、执行coprocessor等。
AdminProtocol:RegionServer是RPCServer端,主要实现Region服务、文件的管理。例如:storefile信息、region操作、WAL操作、server的开关等。
从RegionServer实现的功能上而言,除了与HMaster和Client之间的RPC通信之外,还包括如下几个重要的模块:
(1)依托ZookeeperWatcher进行的分布式信息共享与任务协调的工作。
MasterAddressTracker:捕获Master服务节点的变化。HBase使用多Master来解决Master单点故障的问题,主Master服务故障时,它与ZooKeeper的心跳延迟超过阈值,ZooKeeeper路径下的数据被清理,备Master上的ActiveMaserManager服务会竞争该Master路径,成为主Master。MasterAddresTracker是RS内部监听Master节点变化的追踪器。
ClusterStatusTracker:HBase集群状态追踪器。该选项可以标识当前集群的状态,以及它的启动时间。该设置选项有利于集群中的各个工作节点(RS)统一执行启动和退出操作。
CatalogTracker:跟踪-ROOT-、.META.表的Region的状态。在HBase支持的-ROOT-、.META.、以及User Region三层树级目录结构中,-ROOT-、.META.表用来定位Region的位置,追踪-ROOT-表和.META.表对应Region的