HRegionServer
继承关系
成员变量
private final AtomicLong scannerIdGen = newAtomicLong(0L)
Scanner ID生成器
protected MemStoreFlusher cacheFlusher
刷新memstore线程
protected CatalogTracker catalogTracker
跟踪-ROOT-和.META.表
private RecoveringRegionWatcher recoveringRegionWatcher
根据Zookeeper监控Region是否恢复状态
protected ReplicationSourceServicereplicationSourceHandler;
protected ReplicationSinkServicereplicationSinkHandler;
复制服务,如果没有replication,则handler为null
public CompactSplitThreadcompactSplitThread
合并文件线程
protected Leases leases
租约
protected ExecutorService service
Hbase服务操作实例
protected HFileSystem fs
Hfile系统实例
privateRegionServerStatusService.BlockingInterface rssStub
调用master的Regionserver状态存根
RpcClient rpcClient
RPC客户端,用于检查rssStub中的RegionServer状态
RpcServerInterface rpcServer
处理客户端请求的服务器。默认访问,可以通过测试用例访问
InfoServer infoServer
Webapp服务器
private MetricsRegionServermetricsRegionServer
RegionServer参数指标
private SpanReceiverHost spanReceiverHost
Chore compactionChecker
检查合并请求
Chore periodicFlusher
检查flush
protected volatile HLog hlog
protected volatile HLog hlogForMeta
元数据更新写不同的hlog,如果RegionServer有元数据Region,则该区域不为空。
LogRoller hlogRoller
LogRoller metaHLogRoller
private MasterAddressTrackermasterAddressTracker
跟踪Master地址
private ClusterStatusTrackerclusterStatusTracker
跟踪集群状态
private SplitLogWorker splitLogWorker
拆分Log
private final RegionServerAccountingregionServerAccounting
final CacheConfig cacheConfig
缓存配置和Block缓存引用
final MobCacheConfig mobCacheConfig
mob缓存配置
private HealthCheckChore healthCheckChore
健康检查
private MovedRegionsCleanermovedRegionsCleaner
定期清理已移动Region列表线程
private RegionServerCoprocessorHost rsHost
RegionServer协处理器
private TableLockManager tableLockManager
用于Region操作锁定的表级锁管理器
成员函数
HRegionServer
功能说明:
构造函数
函数流程:
检查压缩编码,通过hbase.regionserver.codecs可以配置编码类,一一检测,判断是否支持其压缩算法;
设置客户端连接重试次数,(参数:hbase.client.retries.number,默认值:31)
设置检查regionserver缓冲区大小时间间隔(参数:hbase.server.thread.wakefrequency,默认值:10s)
设置RegionServer到Master心跳间隔时间(参数:hbase.regionserver.msginterval,默认值:3s)
创建sleeper对象,用于周期性休眠线程
设置Nonce标志(参数:hbase.regionserver.nonces.enabled,默认值:true)
创建Nonce管理器
设置Scanner结果集返回数据量(参数:hbase.client.scanner.max.result.size,默认值:Long.MAX_VALUE)
设置Master进行Region数目(参数:hbase.regionserver.numregionstoreport,默认值:10)
设置RPC shortoperation超时时间(参数:hbase.rpc.shortoperation.timeout,默认值:10000ms)
设置一次scan操作,客户端得到响应的超时时间(参数:hbase.client.scanner.timeout.period,默认值:60000 ms)
获取主机名、IP和端口(参数:hbase.regionserver.port,默认值:60020)
创建rpcSchedulerFactory
创建rpcServer
Zk授权登录和Hbase授权登录
创建regionServerAccounting
创建cacheConfig
创建mobCacheConfig
创建regionserver信息,并设置端口
关键处理流程
构造方法
Regionserver启动
处理流程:
RegionServer启动入口是HRegionServer.main();
生成HRegionServerCommandLine实例,并执行doMain()方法;
ServerCommandLine实例函数doMain调用ToolRunner实例run();
ToolRunner实例函数run()调用HRegionServerCommandLine实例的run()方法;
HRegionServerCommandLine实例run()方法判断参数,如果是start则调用start()函数;
Start()调用如下函数:
logProcessInfo();
constructRegionServer()
startRegionServer()