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;