HRegionServer是Hbase中提供數據存取服務的核心部件。
1、由如下線程提供支撐:
1)LogRoller:日誌切換線程,週期性的檢查HLog是否需要切換,需要的話進行切換;
2)Flusher:數據緩存刷新線程,緩存到一定程度寫入到磁盤;
3)CompactSplitThread:數據壓縮拆分線程;
4)Worker:工作線程,執行關閉RegionServer、開啓Region、關閉Region等操作;
5)LeaseMonitor:租約線程;
6)提供信息查詢的一組web服務線程;
7)提供RPC服務(HRegionInterface)的一組線程,包括1個Responder、1個Listener、默認10個Handler;
8)自身主線程:負責檢查租約、發送報告到Master、獲取指令、執行指令;
2、提供的RPC服務HRegionInterface如下:
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, RowFilterInterface filter)
throws IOException;
13)獲取指定scannerId的下一個值;
public HbaseMapWritable next(long scannerId) throws IOException;
14)關閉一個指定scannerId的遠端數據掃描器;
public void close(long scannerId) throws IOException;