HBase源碼之HRegionServer

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;














 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章