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...