hregionserver是hbase中提供資料訪問服務的核心部件。
1、由如下執行緒提供支撐:
1)logroller:日誌切換執行緒,週期性的檢查hlog是否需要切換,需要的話進行切換;
2)flusher:資料快取重新整理執行緒,快取到一定程度寫入到磁碟;
3)compactsplitthread:資料壓縮拆分執行緒;
4)worker:工作執行緒,執行關閉regionserver、開啟region、關閉region等操作;
5)leasemonitor:租約執行緒;
6)提供資訊查詢的一組web服務執行緒;
7)提供rpc服務(hregioninte***ce)的一組執行緒,包括1個responder、1個listener、預設10個handler;
8)自身主線程:負責檢查租約、傳送報告到master、獲取指令、執行指令;
2、提供的rpc服務hregioninte***ce如下:
1)獲取regioninfo;
public hregioninfo getregioninfo(final text regionname)
throws notservingregionexception;
2)獲取指定region、行、列對應的值;
public byte get(final text regionname, final text row, final text column)
throws ioexception;
3)獲取指定region、行、列、版本號對應的值;
public byte get(final text regionname, final text row,
final text column, final int numversions)
throws ioexception;
4)獲取指定region、行、列、版本號、時間戳對應的值;
public byte get(final text regionname, final text row,
final text column, final long timestamp, final int numversions)
throws ioexception;
5)獲取指定region、行的行資訊;
public hbasemapwritable getrow(final text regionname, final text row)
throws ioexception;
6)獲取指定region、行、時間戳的行資訊;
public hbasemapwritable getrow(final text regionname, final text row, final long ts)
throws ioexception;
7)獲取指定region,匹配某行的所有行資訊;
public hbasemapwritable getclosestrowbefore(final text regionname, final text row)
throws ioexception;
8)對指定region,批量更新資料;
public void batchupdate(text regionname, long timestamp, batchupdate b)
throws ioexception;
9)刪除指定region、行、列,晚於指定時間戳的所有資料;
public void deleteall(text regionname, text row, text column, long timestamp)
throws ioexception;
10)刪除指定region、行,晚於指定時間戳的所有資料;
public void deleteall(text regionname, text row, long timestamp)
throws ioexception;
11)刪除指定region、行、列族,早於指定時間戳的所有資料;
public void deletefamily(text regionname, text row, text family,
long timestamp)
throws ioexception;
12)開啟乙個指定region、列、開始行,早於指定時間戳,制定行過濾器的遠端資料掃瞄器;
public long openscanner(text regionname, text columns, text startrow,
long timestamp, rowfilterinte***ce filter)
throws ioexception;
13)獲取指定scannerid的下乙個值;
public hbasemapwritable next(long scannerid) throws ioexception;
14)關閉乙個指定scannerid的遠端資料掃瞄器;
public void close(long scannerid) throws ioexception;
HBase限流機制原始碼分析
master啟動的時候會初始化masterquotamanager,並啟動該manager masterquotamanager實現了regionstatelistener介面,可以監聽region的狀態變化,regionstatelistener介面中定義了三個事件,分別是onregionspli...
HBase原始碼閱讀 3 HRegionServer
3.hregionserver 管理regions,並向hmaster報告自己狀態 3.1 regionserver啟動過程 1 讀取一些配置 機器名,埠,客戶端重試次數,與master互動間隔,rpc超時 2 建立worker執行緒處理來自master的請求 3 建立乙個hbaseserver的例...
HBase 原始碼學習 Flush(4)
根據前三篇文章,hbase flush主要分三個階段,snapshot,flush,commit,這篇深入hbase memstore,梳理snapshot的流程。volatile section activesection volatile section snapshotsection mems...