![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPR50dFRVTqh2RiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DN3QTO1ATNxITMwgDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
整個HBase叢集的入口
使用HBase RPC機制與HMaster和HRegionserver通信
與HMaster通信進行管理類的操作
與HRegionserver通信進行讀寫類操作
包含通路HBase的接口,并維護cache來加快對HBase的通路,與HRegionserver互動
保證任何時候,叢集中隻有一個Master
存貯所有Region的尋址入口
實時監控Region server的上線和下線資訊。并實時通知給Master
存儲HBase的schema和table中繼資料
管理使用者對Table的增删改查操作
管理HRegionServer的負載均衡,調整Region分布
在Region Split後,負責新Region的配置設定
在HRegionServer停機後,負責失效HRegionServer上的Region遷移
HMaster失效僅會導緻所有中繼資料無法被修改,表的資料讀寫還是可以正常運作
HBase中繼資料存儲在Zookeeper中
預設情況下,HBase管理Zookeeper示例,比如,啟動或停止Zookeeper
Zookeeper解決HBase單節點故障問題
HMaster與HRegionserver啟動時回向Zookeeper注冊
- Zookeeper(讀取Zookeeper找到-ROOT-表的位置)
- -ROOT-(-ROOT-表包含.META.表所在的region清單,該表隻會有一個Region;Zookeeper中記錄了-ROOT-表的location)
- .META(這個表包含所有的使用者空間region清單,已經RegionServer的伺服器位址)
- 使用者表
- Client第一次操作後,會将-ROOT-和.META.緩存到本地,不需要再通路zookeeper
(PS:0.96之後的版本,ZK不再存儲ROOT表資訊,直接存儲META表資訊)
Master容錯:Zookeeper重新選擇一個新的Master
無Master過程中,資料讀取仍然照常進行;
無Master中,region切分,負載均衡無法進行;
RegionServer容錯:定時向Zookeeper彙報心跳,如果一段時間内未出現心跳,master将該RegioinServer上的Region重新配置設定到其他RegionServer上;失效伺服器上“預寫”日志由伺服器進行分割并派送給新的ReginServer
zookeeper容錯:Zookeeper高可靠的服務,不存在單點故障