1、Zookeeperwatcher:在初始化时,把所有的zookeeper上的baseNode下的节点(root-region-server,rs,draining,master,backup-masters,shutdown,unassigned,table,hbaseid,splitlog)都创建了,初始化时不带watch。
在适当的时机,对这些节点创建watcher,监控他们的子节点的变化,当这些子节点变化时,zookeeperwatcher监听这些事件,进而执行listener list。
2、ActiveMasterManager:zookeeper上的master节点变动的监听器,用于产生新的master。
3、AssignmentManager:对region进行管理分配,监听zookeeper上unassigned下节点的变化;
Region的状态,
public enum State {
OFFLINE, // region is in an offline state
PENDING_OPEN, // sent rpc to server to open but has not begun
OPENING, // server has begun to open but not yet done
OPEN, // server opened region and updated meta
PENDING_CLOSE, // sent rpc to server to close but has not begun
CLOSING, // server has begun to close but not yet done
CLOSED, // server closed region and updated meta
SPLITTING, // server started split of a region
SPLIT // server completed split of a region
}
在这个类中保存有所有region的过渡状态regionsInTransition;保存server到region的映射;region到server的映射;
zookeeper的unassigned节点,其子节点表示未分配的region(HMaster启动后,扫描HDFS中ROOT,META表,把所有的region放在这个节点下,待分配)
子节点的监听处理过程如下,