HBase原始碼之HRegionServer

2021-06-11 21:58:19 字數 2752 閱讀 5319

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