HBase原始碼閱讀 3 HRegionServer

2021-08-30 20:45:02 字數 1597 閱讀 3845

3.hregionserver:管理regions,並向hmaster報告自己狀態       

3.1 regionserver啟動過程

(1)讀取一些配置:機器名,埠,客戶端重試次數,與master互動間隔,rpc超時

(2)建立worker執行緒處理來自master的請求(????)

(3)建立乙個hbaseserver的例項提供ipc服務以處理client的請求

(4)建立hserverinfo例項保持regionserver資訊:位址,機器名,監聽埠等

(5)建立flush快取的執行緒

(6)建立compact和split region的執行緒

(7)建立歸檔(roll)hlog的執行緒

(8)定期檢查regions是否需要major compaction執行緒

(9)regionserver與外部client互動時,會申請一些資源,當外部client失敗後需釋放這些資源。建立leases執行緒來處理這個任務。

(10)建立zookeeper例項,以連線zookeeper集群,並增加/hbase/master節點的watcher

(11)申請一部分heap空間(4個byte陣列,每個5m,共20m),保留下來,在發生oome時再釋放以從異常中恢復

(12)啟動regionserver並安裝shut down hooks(?????????)

3.2 hregionserver.run()   

(1)向master報告自己的狀態:reportforduty()方法

從zookeeper的/hbase/master節點獲取master位址,通過hbaserpc獲得hmasterregioninte***ce介面實現的**;

從memorymxbean獲取記憶體使用資訊,計算其負載,並儲存到hserverinfo例項中;

呼叫hmasterregioninte***ce.regionserverstartup(),告訴master該regionserver已啟動,

該介面返回乙個mapwritable,包含hbase.regionserver.address,fs.default.name和hbase.rootdir等master配置資訊,

以更新本地配置(hbase-1215);

(2)啟動一些服務執行緒   

在檔案系統根目錄下.logs建立commit log hlog的例項;

後台啟動歸檔(roll)hlog的執行緒,flush快取的執行緒,compact和split region的執行緒,來自master請求的worker執行緒,檢查regions是否需要major compaction執行緒

啟動leases執行緒;

啟動jetty server,處理http請求

(3)當服務執行緒正常執行(isalive()),則在hbase.regionserver.msginterval間隔後與master交換資訊:

收集regionserver的metrics,包括:hstore,hstorefile,索引,所有region的記憶體大小,block快取的命中率等資訊,regionserver負載資訊;

通過prc向master傳送資訊hmsg,並返回master的指令,指令型別有:stop regionserver,停止服務使用者regions,重啟等

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...