HMaster是Hbase中管理数据库元数据的服务器。
1、HMaster由下述的几组线程为其服务:
1)RootScanner:根节点HRegion的扫描线程;
2)MetaScanner:Meta节点HRegion的扫描线程;
3)LeaseMonitor:HMaster与外部客户交互时,会用到一些资源,当外部客户没有发送心跳信息时,会需要释放这些资源,Leases线程用来处理这个任务;
4)提供Master信息的一组web服务线程;
5)提供两组RPC服务(HMasterInterface、HMasterRegionInterface)的一组线程,包括1个Responder、1个Listener、默认10个Handler;
6)HMaster自身主线程:循环从delayedToDoQueue、toDoQueue两个队列中获取操作,并处理;
2、实现了两组rpc服务(协议),其中HMasterInterface如下:
1)判断Master是否可用;
public boolean isMasterRunning();
2)创建一个表;
public void createTable(HTableDescriptor desc) throws IOException;
3)删除一个表;
public void deleteTable(Text tableName) throws IOException;
4)将一个列加到一个表中;
public void addColumn(Text tableName, HColumnDescriptor column) throws IOException;
5)修改表中的某个列;
public void modifyColumn(Text tableName, Text columnName,
HColumnDescriptor descriptor)
throws IOException;
6)删除列;
public void deleteColumn(Text tableName, Text columnName) throws IOException;
7)激活一个表;
public void enableTable(Text tableName) throws IOException;
8)disable一个表;
public void disableTable(Text tableName) throws IOException;
9)关闭HBase集群;
public void shutdown() throws IOException;
10)得到Root节点Region路径;
public HServerAddress findRootRegion();
HMasterRegionInterface如下:
1)HRegionServer初次启动时,进行注册;
public HbaseMapWritable regionServerStartup(HServerInfo info) throws IOException;
2)更新租约,向Master报告RegionServer的行为,并领取新的指令;
public HMsg[] regionServerReport(HServerInfo info, HMsg msgs[])
throws IOException;