Master是主服務器(Master Server)的實現。主服務器負責監視群集中的所有RegionServer實例,並且是所有元數據更改的接口。在分佈式集群中,Master通常在NameNode上運行。
啟動行為
如果在多主機(multi-Master)環境中運行,所有Master競爭運行集群。如果活動Master在ZooKeeper中失去租約(或Master關閉),則剩下的Master將爭相接管角色。
運行時影響
當Master發生故障時,一個常見的dist-list問題涉及一個HBase集群會發生什麼。由於HBase客戶端直接與RegionServer對話,因此群集仍可以“穩定狀態”運行。此外,每個目錄表(Catalog Tables),hbase:meta作為HBase的表存在,而不是在Master中不存在。但是,Master控制關鍵功能,如RegionServer故障切換和完成區域分割。因此,雖然群集仍可以在沒有Master的情況下運行很短的時間,但應儘快重新啟動Master形狀。
接口
HMasterInterface公開的方法主要是面向元數據(metadata-oriented)的方法:
- 表(createTable,modifyTable,removeTable,enable,disable)
- ColumnFamily(addColumn,modifyColumn,removeColumn)
- 區域(move,assign,unassign),例如,調用該Admin方法disableTable時,它由Master服務器提供服務。
流程
Master運行幾個後臺線程:
負載平衡器
週期性地,當沒有轉換區域時,負載均衡器將運行並移動區域以平衡群集的負載。
有關區域分配的更多信息,將在後續的章節中介紹。
CatalogJanitor
定期檢查並清理hbase:meta表格