@InterfaceAudience.LimitedPrivate(value="Tools") public class HRegionServer extends HBaseServerBase<RSRpcServices> implements RegionServerServices, LastSequenceId
Modifier and Type | Class and Description |
---|---|
private static class |
HRegionServer.CompactionChecker
Inner class that runs on a long period checking if regions need compaction.
|
private static class |
HRegionServer.MovedRegionInfo |
private static class |
HRegionServer.PeriodicMemStoreFlusher |
private static class |
HRegionServer.SystemExitWhenAbortTimeout
Force to terminate region server when abort timeout.
|
Thread.State, Thread.UncaughtExceptionHandler
RegionServerServices.PostOpenDeployContext, RegionServerServices.RegionStateTransitionContext
Modifier and Type | Field and Description |
---|---|
(package private) static String |
ABORT_TIMEOUT |
(package private) static String |
ABORT_TIMEOUT_TASK |
private Timer |
abortMonitor |
private BlockCache |
blockCache |
private BootstrapNodeManager |
bootstrapNodeManager |
private BrokenStoreFileCleaner |
brokenStoreFileCleaner |
private MemStoreFlusher |
cacheFlusher |
private String |
clusterId
Unique identifier for the cluster we are a part of.
|
(package private) CompactedHFilesDischarger |
compactedFileDischarger |
private ScheduledChore |
compactionChecker
Check for compactions requests.
|
private int |
compactionCheckFrequency |
private CompactSplit |
compactSplitThread |
private Map<String,org.apache.hbase.thirdparty.com.google.protobuf.Service> |
coprocessorServiceHandlers |
private boolean |
dataFsOk |
private static long |
DEFAULT_ABORT_TIMEOUT |
private org.apache.hbase.thirdparty.com.google.common.cache.Cache<Long,Long> |
executedRegionProcedures
Used to cache the open/close region procedures which already executed.
|
private ExecutorStatusChore |
executorStatusChore
The Executor status collect chore.
|
private int |
flushCheckFrequency |
private ThroughputController |
flushThroughputController |
private FileSystemUtilizationChore |
fsUtilizationChore |
private HealthCheckChore |
healthCheckChore
The health check chore.
|
private HeapMemoryManager |
hMemManager |
private boolean |
killed |
private LeaseManager |
leaseManager |
private org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface |
lockStub |
private static org.slf4j.Logger |
LOG |
private MasterAddressTracker |
masterAddressTracker |
private boolean |
masterless
True if this RegionServer is coming up in a cluster where there is no Master; means it needs to
just come up and make do without a Master to talk to: e.g.
|
private static String |
MASTERLESS_CONFIG_NAME |
private MetricsRegionServer |
metricsRegionServer |
(package private) MetricsRegionServerWrapperImpl |
metricsRegionServerImpl |
private MobFileCache |
mobFileCache |
private org.apache.hbase.thirdparty.com.google.common.cache.Cache<String,HRegionServer.MovedRegionInfo> |
movedRegionInfoCache
Used to cache the moved-out regions
|
private NamedQueueServiceChore |
namedQueueServiceChore |
(package private) ServerNonceManager |
nonceManager
Nonce manager.
|
private ScheduledChore |
nonceManagerChore
The nonce manager chore.
|
(package private) AtomicBoolean |
online |
private Map<String,HRegion> |
onlineRegions
Map of regions currently being served by this region server.
|
private ReentrantReadWriteLock |
onlineRegionsLock
Lock for gating access to
onlineRegions . |
private JvmPauseMonitor |
pauseMonitor |
private static String |
PERIOD_COMPACTION |
private static String |
PERIOD_FLUSH |
private ScheduledChore |
periodicFlusher
Check for flushes
|
private RemoteProcedureResultReporter |
procedureResultReporter |
private Map<String,Address[]> |
regionFavoredNodesMap
Map of encoded region names to the DataNode locations they should be hosted on We store the
value as Address since InetSocketAddress is required by the HDFS API (create() that takes
favored nodes as hints for placing file blocks).
|
private RegionReplicationBufferManager |
regionReplicationBufferManager |
static String |
REGIONSERVER
region server process name
|
private static String |
REGIONSERVER_CODEC
regionserver codec list
|
private RegionServerAccounting |
regionServerAccounting |
private ConcurrentMap<byte[],Boolean> |
regionsInTransitionInRS
A map from RegionName to current action in progress.
|
private ReplicationMarkerChore |
replicationMarkerChore |
private ReplicationSinkService |
replicationSinkHandler |
private ReplicationSourceService |
replicationSourceHandler |
private long |
retryPauseTime |
private RpcClient |
rpcClient |
(package private) static String |
RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY
Deprecated.
since 2.4.0 and will be removed in 4.0.0. Use
UNSAFE_RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY instead. |
private RegionServerCoprocessorHost |
rsHost |
private RSMobFileCleanerChore |
rsMobFileCleanerChore |
private RegionServerProcedureManagerHost |
rspmHost |
private RegionServerRpcQuotaManager |
rsQuotaManager |
private RSSnapshotVerifier |
rsSnapshotVerifier |
private RegionServerSpaceQuotaManager |
rsSpaceQuotaManager |
private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface |
rssStub |
private boolean |
sameReplicationSourceAndSink |
private SecureBulkLoadManager |
secureBulkLoadManager |
private int |
shortOperationTimeout |
private SplitLogWorker |
splitLogWorker |
private boolean |
stopping |
private StorefileRefresherChore |
storefileRefresher |
private ConcurrentMap<Long,Long> |
submittedRegionProcedures
Used to cache the open/close region procedures which already submitted.
|
static boolean |
TEST_SKIP_REPORTING_TRANSITION
For testing only! Set to true to skip notifying region assignment to master .
|
private int |
threadWakeFrequency |
private static int |
TIMEOUT_REGION_MOVED
We need a timeout.
|
private Thread.UncaughtExceptionHandler |
uncaughtExceptionHandler |
(package private) int |
unitKB |
(package private) int |
unitMB |
(package private) static String |
UNSAFE_RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY
HBASE-18226: This config and hbase.unsafe.regionserver.hostname are mutually exclusive.
|
private WALFactory |
walFactory |
private LogRoller |
walRoller |
abortRequested, asyncClusterConnection, choreService, clusterStatusTracker, conf, configurationManager, csm, dataFs, dataRootDir, eventLoopGroupConfig, executorService, infoServer, metaRegionLocationCache, msgInterval, namedQueueRecorder, rpcServices, serverName, sleeper, startcode, stopped, tableDescriptors, userProvider, useThisHostnameInstead, walFs, walRootDir, zooKeeper
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Constructor and Description |
---|
HRegionServer(org.apache.hadoop.conf.Configuration conf)
Starts a HRegionServer at the default location.
|
Modifier and Type | Method and Description |
---|---|
void |
abort(String reason,
Throwable cause)
Cause the server to exit without closing the regions it is serving, the log it is using and
without notifying the master.
|
void |
addRegion(HRegion region)
Add to online regions.
|
private void |
addRegion(SortedMap<Long,Collection<HRegion>> sortedRegions,
HRegion region,
long size) |
private void |
addToMovedRegions(String encodedName,
ServerName destination,
long closeSeqNum,
boolean selfMove) |
private boolean |
areAllUserRegionsOffline() |
private void |
blockAndCheckIfStopped(ZKNodeTracker tracker)
Utilty method to wait indefinitely on a znode availability while checking if the region server
is shut down
|
(package private) org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUseReportRequest |
buildRegionSpaceUseReportRequest(RegionSizeStore regionSizes)
Builds a
RegionServerStatusProtos.RegionSpaceUseReportRequest protobuf message from the region size map. |
private void |
buildReportAndSend(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface rss,
RegionSizeStore regionSizeStore)
Builds the region size report and sends it to the master.
|
private org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ServerLoad |
buildServerLoad(long reportStartTime,
long reportEndTime) |
protected boolean |
cacheTableDescriptor() |
protected boolean |
canCreateBaseZNode() |
protected boolean |
canUpdateTableDescriptor() |
private static void |
checkCodecs(org.apache.hadoop.conf.Configuration c)
Run test on configured codecs to make sure supporting libs are in place.
|
(package private) boolean |
checkFileSystem()
Checks to see if the file system is still accessible.
|
private Throwable |
cleanup(Throwable t,
String msg)
Cleanup after Throwable caught invoking method.
|
(package private) CacheEvictionStats |
clearRegionBlockCache(Region region) |
private void |
closeMetaTableRegions(boolean abort)
Close meta region if we carry it
|
protected boolean |
closeRegion(String encodedName,
boolean abort,
ServerName destination)
Close asynchronously a region, can be called from the master or internally by the regionserver
when stopping.
|
private void |
closeRegionIgnoreErrors(RegionInfo region,
boolean abort)
Try to close the region, logs a warning on failure but continues.
|
private void |
closeUserRegions(boolean abort)
Schedule closes on all user regions.
|
protected boolean |
clusterMode() |
private void |
computeIfPersistentBucketCache(Consumer<BucketCache> computation) |
protected void |
configureInfoServer(InfoServer infoServer) |
(package private) static HRegionServer |
constructRegionServer(Class<? extends HRegionServer> regionServerClass,
org.apache.hadoop.conf.Configuration conf)
Utility for constructing an instance of the passed HRegionServer class.
|
private boolean |
containsMetaTableRegions() |
(package private) org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUse |
convertRegionSize(RegionInfo regionInfo,
Long sizeInBytes)
Converts a pair of
RegionInfo and long into a RegionServerStatusProtos.RegionSpaceUse protobuf
message. |
private IOException |
convertThrowableToIOE(Throwable t,
String msg) |
private void |
createMyEphemeralNode() |
protected NamedQueueRecorder |
createNamedQueueRecord() |
private static void |
createNewReplicationInstance(org.apache.hadoop.conf.Configuration conf,
HRegionServer server,
org.apache.hadoop.fs.FileSystem walFs,
org.apache.hadoop.fs.Path walDir,
org.apache.hadoop.fs.Path oldWALDir,
WALFactory walFactory)
Load the replication executorService objects, if any
|
(package private) org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad |
createRegionLoad(HRegion r,
org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.Builder regionLoadBldr,
org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.Builder regionSpecifier) |
org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad |
createRegionLoad(String encodedRegionName) |
private ServerName |
createRegionServerStatusStub()
Get the current master from ZooKeeper and open the RPC connection to it.
|
protected ServerName |
createRegionServerStatusStub(boolean refresh)
Get the current master from ZooKeeper and open the RPC connection to it.
|
private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest |
createReportRegionStateTransitionRequest(RegionServerServices.RegionStateTransitionContext context) |
protected RSRpcServices |
createRpcServices() |
private org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.UserLoad |
createUserLoad(String user,
MetricsUserSource userSource) |
private void |
deleteMyEphemeralNode() |
void |
dumpRowLocks(PrintWriter out)
Used by
RSDumpServlet to generate debugging information. |
(package private) org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse |
execRegionServerService(org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller,
org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest serviceRequest) |
(package private) void |
executeProcedure(long procId,
RSProcedureCallable callable) |
void |
finishRegionProcedure(long procId)
|
Optional<ServerName> |
getActiveMaster()
Get active master address.
|
List<ServerName> |
getBackupMasters()
Get backup masters address.
|
Optional<BlockCache> |
getBlockCache()
May be null if this is a master which not carry table.
|
Iterator<ServerName> |
getBootstrapNodes()
Get a iterator of the available bootstrap nodes.
|
BrokenStoreFileCleaner |
getBrokenStoreFileCleaner() |
String |
getClusterId()
Get cluster id.
|
CompactedHFilesDischarger |
getCompactedHFilesDischarger() |
double |
getCompactionPressure() |
CompactionRequester |
getCompactionRequestor() |
CompactSplit |
getCompactSplitThread()
Returns the underlying
CompactSplit for the servers |
(package private) SortedMap<Long,Collection<HRegion>> |
getCopyOfOnlineRegionsSortedByOffHeapSize() |
(package private) SortedMap<Long,Collection<HRegion>> |
getCopyOfOnlineRegionsSortedByOnHeapSize() |
protected Class<? extends javax.servlet.http.HttpServlet> |
getDumpServlet() |
InetSocketAddress[] |
getFavoredNodesForRegion(String encodedRegionName)
Return the favored nodes for a region given its encoded name.
|
double |
getFlushPressure() |
FlushRequester |
getFlushRequester()
Returns reference to FlushRequester
|
ThroughputController |
getFlushThroughputController()
Returns the controller to avoid flush too fast
|
HeapMemoryManager |
getHeapMemoryManager()
Returns heap memory manager instance
|
org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds |
getLastSequenceId(byte[] encodedRegionName) |
LeaseManager |
getLeaseManager()
Returns The RegionServer's "Leases" service
|
MasterAddressTracker |
getMasterAddressTracker()
Returns Master address tracker instance.
|
MemStoreFlusher |
getMemStoreFlusher() |
List<HRegionLocation> |
getMetaLocations()
Get the location of meta regions.
|
MetricsRegionServer |
getMetrics()
Returns the metrics tracker for the region server
|
Optional<MobFileCache> |
getMobFileCache()
May be null if this is a master which not carry table.
|
HRegionServer.MovedRegionInfo |
getMovedRegion(String encodedRegionName) |
private String |
getMyEphemeralNodePath() |
ServerNonceManager |
getNonceManager()
Only required for "old" log replay; if it's removed, remove this.
|
int |
getNumberOfOnlineRegions() |
HRegion |
getOnlineRegion(byte[] regionName) |
protected Map<String,HRegion> |
getOnlineRegions() |
private String |
getOnlineRegionsAsPrintableString() |
Collection<HRegion> |
getOnlineRegionsLocalContext()
For tests, web ui and metrics.
|
Set<TableName> |
getOnlineTables()
Gets the online tables in this RS.
|
protected String |
getProcessName() |
protected HRegion |
getRegion(byte[] regionName)
Protected Utility method for safely obtaining an HRegion handle.
|
HRegion |
getRegion(String encodedRegionName)
Return
Region instance. |
private HRegion |
getRegionByEncodedName(byte[] regionName,
String encodedRegionName) |
HRegion |
getRegionByEncodedName(String encodedRegionName) |
RegionReplicationBufferManager |
getRegionReplicationBufferManager() |
List<HRegion> |
getRegions()
Get all online regions in this RS.
|
List<HRegion> |
getRegions(TableName tableName)
Gets the online regions of the specified table.
|
RegionServerAccounting |
getRegionServerAccounting()
Returns the RegionServerAccounting for this Region Server
|
RegionServerCoprocessorHost |
getRegionServerCoprocessorHost() |
String[] |
getRegionServerCoprocessors() |
RegionServerRpcQuotaManager |
getRegionServerRpcQuotaManager()
Returns RegionServer's instance of
RegionServerRpcQuotaManager |
RegionServerSpaceQuotaManager |
getRegionServerSpaceQuotaManager()
Returns RegionServer's instance of
RegionServerSpaceQuotaManager |
ConcurrentMap<byte[],Boolean> |
getRegionsInTransitionInRS()
Get the regions that are currently being opened or closed in the RS
|
ReplicationSinkService |
getReplicationSinkService()
Returns Return the object that implements the replication sink executorService.
|
ReplicationSourceService |
getReplicationSourceService()
Returns Return the object that implements the replication source executorService.
|
long |
getRetryPauseTime()
Return pause time configured in
HConstants.HBASE_RPC_SHORTOPERATION_RETRY_PAUSE_TIME } |
RSMobFileCleanerChore |
getRSMobFileCleanerChore() |
RSRpcServices |
getRSRpcServices() |
(package private) RSSnapshotVerifier |
getRsSnapshotVerifier() |
SecureBulkLoadManager |
getSecureBulkLoadManager()
Returns RegionServer's instance of
SecureBulkLoadManager |
protected String |
getUseThisHostnameInstead(org.apache.hadoop.conf.Configuration conf) |
WAL |
getWAL(RegionInfo regionInfo)
Returns the WAL for a particular region.
|
private WALActionsListener |
getWALEventTrackerListener(org.apache.hadoop.conf.Configuration conf) |
WALFactory |
getWalFactory() |
Map<String,ReplicationStatus> |
getWalGroupsReplicationStatus() |
LogRoller |
getWalRoller() |
List<WAL> |
getWALs()
Returns the List of WALs that are used by this server Doesn't include the meta WAL
|
private long |
getWriteRequestCount()
Returns Current write count for all online regions.
|
protected void |
handleReportForDutyResponse(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse c)
Run init.
|
private void |
initializeReplicationMarkerChore() |
private void |
initializeThreads() |
private void |
initializeZooKeeper()
Bring up connection to zk ensemble and then wait until a master for this cluster and then after
that, wait until cluster 'up' flag has been set.
|
boolean |
isClusterUp()
Returns True if the cluster is up.
|
(package private) boolean |
isDataFileSystemOk()
Returns
true when the data file system is available, false otherwise. |
private boolean |
isHealthCheckerConfigured() |
private boolean |
isHealthy() |
boolean |
isOnline()
Report the status of the server.
|
boolean |
isStopping()
Returns True is the server is Stopping
|
private boolean |
keepLooping() |
protected void |
kill() |
protected void |
login(UserProvider user,
String host) |
static void |
main(String[] args) |
int |
movedRegionCacheExpiredTime() |
private static <T extends ReplicationService> |
newReplicationInstance(String classname,
Class<T> xface,
org.apache.hadoop.conf.Configuration conf,
HRegionServer server,
org.apache.hadoop.fs.FileSystem walFs,
org.apache.hadoop.fs.Path logDir,
org.apache.hadoop.fs.Path oldLogDir,
WALFactory walFactory) |
void |
onConfigurationChange(org.apache.hadoop.conf.Configuration newConf)
This method would be called by the
ConfigurationManager object when the
Configuration object is reloaded from disk. |
void |
postOpenDeployTasks(RegionServerServices.PostOpenDeployContext context)
Tasks to perform after region open to complete deploy of region on regionserver
|
private void |
preRegistrationInitialization()
All initialization needed before we go register with Master.
Do bare minimum. |
EntityLock |
regionLock(List<RegionInfo> regionInfo,
String description,
Abortable abort)
Master based locks on namespaces/tables/regions.
|
private void |
registerConfigurationObservers() |
boolean |
registerService(org.apache.hbase.thirdparty.com.google.protobuf.Service instance)
Registers a new protocol buffer
Service subclass as a coprocessor endpoint to be
available for handling |
void |
remoteProcedureComplete(long procId,
Throwable error) |
(package private) void |
removeFromMovedRegions(String encodedName) |
boolean |
removeRegion(HRegion r,
ServerName destination)
Removes the given Region from the list of onlineRegions.
|
boolean |
reportFileArchivalForQuotas(TableName tableName,
Collection<Map.Entry<String,Long>> archivedFiles)
Reports a collection of files, and their sizes, that belonged to the given
table were
just moved to the archive directory. |
private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse |
reportForDuty() |
(package private) void |
reportProcedureDone(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest request) |
boolean |
reportRegionSizesForQuotas(RegionSizeStore regionSizeStore)
Reports the given map of Regions and their size on the filesystem to the active Master.
|
boolean |
reportRegionStateTransition(RegionServerServices.RegionStateTransitionContext context)
Notify master that a handler requests to change a region state
|
private static int |
roundSize(long sizeInByte,
int sizeUnit) |
void |
run()
The HRegionServer sticks in this loop until closed.
|
private void |
scheduleAbortTimer() |
private void |
setupWALAndReplication()
Setup WAL log and replication if enabled.
|
private void |
shutdownWAL(boolean close) |
private boolean |
skipReportingTransition(RegionServerServices.RegionStateTransitionContext context)
Helper method for use in tests.
|
private static boolean |
sleepInterrupted(long millis) |
private void |
startHeapMemoryManager() |
private void |
startReplicationService()
Start up replication source and sink handlers.
|
private void |
startServices()
Start maintenance Threads, Server, Worker and lease checker threads.
|
void |
stop(String msg)
Stop this service.
|
void |
stop(String msg,
boolean force,
User user)
Stops the regionserver.
|
protected void |
stopChores() |
protected void |
stopServiceThreads()
Wait on all threads to finish.
|
(package private) boolean |
submitRegionProcedure(long procId)
Will ignore the open/close region procedures which already submitted or executed.
|
private void |
triggerFlushInPrimaryRegion(HRegion region)
Trigger a flush in the primary region replica if this region is a secondary replica.
|
protected void |
tryRegionServerReport(long reportStartTime,
long reportEndTime) |
void |
unassign(byte[] regionName)
Unassign the given region from the current regionserver and assign it randomly.
|
void |
updateRegionFavoredNodesMapping(String encodedRegionName,
List<org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> favoredNodes)
Used to update the favored nodes mapping when required.
|
void |
waitForServerOnline() |
private void |
waitOnAllRegionsToClose(boolean abort)
Wait on regions close.
|
boolean |
walRollRequestFinished()
For testing
|
closeClusterConnection, closeTableDescriptors, closeZooKeeper, createConnection, getAccessChecker, getAsyncClusterConnection, getChoreService, getConfiguration, getConfigurationManager, getCoordinatedStateManager, getDataRootDir, getEventLoopGroupConfig, getExecutorService, getFileSystem, getInfoServer, getMetaRegionLocationCache, getMsgInterval, getNamedQueueRecorder, getRpcServer, getRpcServices, getServerName, getStartcode, getTableDescriptors, getWALFileSystem, getWALRootDir, getZKPermissionWatcher, getZooKeeper, initializeFileSystem, initializeMemStoreChunkCreator, installShutdownHook, isAborted, isShutdownHookInstalled, isStopped, setAbortRequested, setupClusterConnection, shutdownChore, stopChoreService, stopExecutorService, stopInfoServer, toString, updateConfiguration
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, yield
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getAccessChecker, getExecutorService, getRpcServer, getTableDescriptors, getZKPermissionWatcher
createConnection, getAsyncClusterConnection, getAsyncConnection, getChoreService, getConfiguration, getConnection, getCoordinatedStateManager, getFileSystem, getServerName, getZooKeeper
private static final org.slf4j.Logger LOG
int unitMB
int unitKB
@InterfaceAudience.Private public static boolean TEST_SKIP_REPORTING_TRANSITION
private final ConcurrentMap<byte[],Boolean> regionsInTransitionInRS
private final ConcurrentMap<Long,Long> submittedRegionProcedures
submitRegionProcedure(long)
.private final org.apache.hbase.thirdparty.com.google.common.cache.Cache<Long,Long> executedRegionProcedures
submitRegionProcedure(long)
.private final org.apache.hbase.thirdparty.com.google.common.cache.Cache<String,HRegionServer.MovedRegionInfo> movedRegionInfoCache
private MemStoreFlusher cacheFlusher
private HeapMemoryManager hMemManager
private ReplicationSourceService replicationSourceHandler
private ReplicationSinkService replicationSinkHandler
private boolean sameReplicationSourceAndSink
private CompactSplit compactSplitThread
private final Map<String,HRegion> onlineRegions
private final ReentrantReadWriteLock onlineRegionsLock
onlineRegions
. TODO: If this map is gated by a lock, does it
need to be a ConcurrentHashMap?private final Map<String,Address[]> regionFavoredNodesMap
private LeaseManager leaseManager
private volatile boolean dataFsOk
static final String ABORT_TIMEOUT
private static final long DEFAULT_ABORT_TIMEOUT
static final String ABORT_TIMEOUT_TASK
private boolean stopping
private volatile boolean killed
private final int threadWakeFrequency
private static final String PERIOD_COMPACTION
private final int compactionCheckFrequency
private static final String PERIOD_FLUSH
private final int flushCheckFrequency
private volatile org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface rssStub
private volatile org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface lockStub
private Thread.UncaughtExceptionHandler uncaughtExceptionHandler
private JvmPauseMonitor pauseMonitor
private RSSnapshotVerifier rsSnapshotVerifier
public static final String REGIONSERVER
private MetricsRegionServer metricsRegionServer
MetricsRegionServerWrapperImpl metricsRegionServerImpl
private ScheduledChore compactionChecker
private ScheduledChore periodicFlusher
private volatile WALFactory walFactory
private RemoteProcedureResultReporter procedureResultReporter
final AtomicBoolean online
private final MasterAddressTracker masterAddressTracker
private SplitLogWorker splitLogWorker
private final int shortOperationTimeout
private final long retryPauseTime
private final RegionServerAccounting regionServerAccounting
private NamedQueueServiceChore namedQueueServiceChore
private BlockCache blockCache
private MobFileCache mobFileCache
private HealthCheckChore healthCheckChore
private ExecutorStatusChore executorStatusChore
private ScheduledChore nonceManagerChore
private Map<String,org.apache.hbase.thirdparty.com.google.protobuf.Service> coprocessorServiceHandlers
@Deprecated @InterfaceAudience.LimitedPrivate(value="Configuration") static final String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY
UNSAFE_RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY
instead.@InterfaceAudience.LimitedPrivate(value="Configuration") static final String UNSAFE_RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY
private StorefileRefresherChore storefileRefresher
private volatile RegionServerCoprocessorHost rsHost
private RegionServerProcedureManagerHost rspmHost
private RegionServerRpcQuotaManager rsQuotaManager
private RegionServerSpaceQuotaManager rsSpaceQuotaManager
final ServerNonceManager nonceManager
private BrokenStoreFileCleaner brokenStoreFileCleaner
private RSMobFileCleanerChore rsMobFileCleanerChore
@InterfaceAudience.Private CompactedHFilesDischarger compactedFileDischarger
private volatile ThroughputController flushThroughputController
private SecureBulkLoadManager secureBulkLoadManager
private FileSystemUtilizationChore fsUtilizationChore
private BootstrapNodeManager bootstrapNodeManager
private final boolean masterless
TEST_SKIP_REPORTING_TRANSITION
?private static final String MASTERLESS_CONFIG_NAME
private static final String REGIONSERVER_CODEC
private Timer abortMonitor
private RegionReplicationBufferManager regionReplicationBufferManager
private ReplicationMarkerChore replicationMarkerChore
private static final int TIMEOUT_REGION_MOVED
public HRegionServer(org.apache.hadoop.conf.Configuration conf) throws IOException
startServices()
.IOException
protected String getUseThisHostnameInstead(org.apache.hadoop.conf.Configuration conf) throws IOException
getUseThisHostnameInstead
in class HBaseServerBase<RSRpcServices>
IOException
protected void login(UserProvider user, String host) throws IOException
login
in class HBaseServerBase<RSRpcServices>
IOException
protected String getProcessName()
getProcessName
in class HBaseServerBase<RSRpcServices>
protected boolean canCreateBaseZNode()
canCreateBaseZNode
in class HBaseServerBase<RSRpcServices>
protected boolean canUpdateTableDescriptor()
canUpdateTableDescriptor
in class HBaseServerBase<RSRpcServices>
protected boolean cacheTableDescriptor()
cacheTableDescriptor
in class HBaseServerBase<RSRpcServices>
protected RSRpcServices createRpcServices() throws IOException
createRpcServices
in class HBaseServerBase<RSRpcServices>
IOException
protected void configureInfoServer(InfoServer infoServer)
configureInfoServer
in class HBaseServerBase<RSRpcServices>
protected Class<? extends javax.servlet.http.HttpServlet> getDumpServlet()
getDumpServlet
in class HBaseServerBase<RSRpcServices>
public void dumpRowLocks(PrintWriter out)
RSDumpServlet
to generate debugging information.public boolean registerService(org.apache.hbase.thirdparty.com.google.protobuf.Service instance)
RegionServerServices
Service
subclass as a coprocessor endpoint to be
available for handlingregisterService
in interface RegionServerServices
instance
- the Service
subclass instance to expose as a coprocessor endpointtrue
if the registration was successful, false
private static void checkCodecs(org.apache.hadoop.conf.Configuration c) throws IOException
IOException
public String getClusterId()
ConnectionRegistryEndpoint
getClusterId
in interface ConnectionRegistryEndpoint
private void preRegistrationInitialization()
private void initializeZooKeeper() throws IOException, InterruptedException
Finally open long-living server short-circuit connection.
IOException
InterruptedException
private void blockAndCheckIfStopped(ZKNodeTracker tracker) throws IOException, InterruptedException
tracker
- znode tracker to useIOException
- any IO exception, plus if the RS is stoppedInterruptedException
- if the waiting thread is interruptedpublic boolean isClusterUp()
isClusterUp
in interface RegionServerServices
isClusterUp
in class HBaseServerBase<RSRpcServices>
private void initializeReplicationMarkerChore()
public boolean isStopping()
Server
isStopping
in interface Server
public void run()
private boolean containsMetaTableRegions()
private boolean areAllUserRegionsOffline()
private long getWriteRequestCount()
@InterfaceAudience.Private protected void tryRegionServerReport(long reportStartTime, long reportEndTime) throws IOException
IOException
public boolean reportRegionSizesForQuotas(RegionSizeStore regionSizeStore)
reportRegionSizesForQuotas
in interface RegionServerServices
regionSizeStore
- The store containing region sizesprivate void buildReportAndSend(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface rss, RegionSizeStore regionSizeStore) throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException
rss
- The stub to send to the MasterregionSizeStore
- The store containing region sizesorg.apache.hbase.thirdparty.com.google.protobuf.ServiceException
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUseReportRequest buildRegionSpaceUseReportRequest(RegionSizeStore regionSizes)
RegionServerStatusProtos.RegionSpaceUseReportRequest
protobuf message from the region size map.regionSizes
- The size in bytes of regionsorg.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUse convertRegionSize(RegionInfo regionInfo, Long sizeInBytes)
RegionInfo
and long
into a RegionServerStatusProtos.RegionSpaceUse
protobuf
message.regionInfo
- The RegionInfosizeInBytes
- The size in bytes of the Regionprivate org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ServerLoad buildServerLoad(long reportStartTime, long reportEndTime) throws IOException
IOException
private String getOnlineRegionsAsPrintableString()
private void waitOnAllRegionsToClose(boolean abort)
private static boolean sleepInterrupted(long millis)
private void shutdownWAL(boolean close)
protected void handleReportForDutyResponse(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse c) throws IOException
c
- Extra configuration.IOException
private void startHeapMemoryManager()
private void createMyEphemeralNode() throws org.apache.zookeeper.KeeperException
org.apache.zookeeper.KeeperException
private void deleteMyEphemeralNode() throws org.apache.zookeeper.KeeperException
org.apache.zookeeper.KeeperException
public RegionServerAccounting getRegionServerAccounting()
RegionServerServices
getRegionServerAccounting
in interface RegionServerServices
private static int roundSize(long sizeInByte, int sizeUnit)
private void computeIfPersistentBucketCache(Consumer<BucketCache> computation)
org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad createRegionLoad(HRegion r, org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.Builder regionLoadBldr, org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.Builder regionSpecifier) throws IOException
r
- Region to get RegionLoad for.regionLoadBldr
- the RegionLoad.Builder, can be nullregionSpecifier
- the RegionSpecifier.Builder, can be nullIOException
private org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.UserLoad createUserLoad(String user, MetricsUserSource userSource)
public org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad createRegionLoad(String encodedRegionName) throws IOException
IOException
public boolean isOnline()
private void setupWALAndReplication() throws IOException
IOException
private WALActionsListener getWALEventTrackerListener(org.apache.hadoop.conf.Configuration conf)
private void startReplicationService() throws IOException
IOException
public MasterAddressTracker getMasterAddressTracker()
private void startServices() throws IOException
IOException
private void initializeThreads()
private void registerConfigurationObservers()
private boolean isHealthy()
public List<WAL> getWALs()
RegionServerServices
getWALs
in interface RegionServerServices
public WAL getWAL(RegionInfo regionInfo) throws IOException
RegionServerServices
getWAL
in interface RegionServerServices
IOException
public LogRoller getWalRoller()
public WALFactory getWalFactory()
public void stop(String msg)
Stoppable
public void stop(String msg, boolean force, User user)
msg
- Status messageforce
- True if this is a regionserver abortuser
- The user executing the stop request, or null if no user is associatedpublic void waitForServerOnline()
public void postOpenDeployTasks(RegionServerServices.PostOpenDeployContext context) throws IOException
RegionServerServices
postOpenDeployTasks
in interface RegionServerServices
context
- the contextIOException
private boolean skipReportingTransition(RegionServerServices.RegionStateTransitionContext context)
private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest createReportRegionStateTransitionRequest(RegionServerServices.RegionStateTransitionContext context)
public boolean reportRegionStateTransition(RegionServerServices.RegionStateTransitionContext context)
RegionServerServices
reportRegionStateTransition
in interface RegionServerServices
private void triggerFlushInPrimaryRegion(HRegion region)
@InterfaceAudience.Private public RSRpcServices getRSRpcServices()
public void abort(String reason, Throwable cause)
@InterfaceAudience.Private protected void kill()
private void scheduleAbortTimer()
protected void stopServiceThreads()
public ReplicationSourceService getReplicationSourceService()
getReplicationSourceService
in interface RegionServerServices
public ReplicationSinkService getReplicationSinkService()
private ServerName createRegionServerStatusStub()
@InterfaceAudience.Private protected ServerName createRegionServerStatusStub(boolean refresh)
refresh
- If true then master address will be read from ZK, otherwise use cached dataprivate boolean keepLooping()
private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse reportForDuty() throws IOException
IOException
public org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds getLastSequenceId(byte[] encodedRegionName)
getLastSequenceId
in interface LastSequenceId
encodedRegionName
- Encoded region nameprivate void closeMetaTableRegions(boolean abort)
abort
- Whether we're running an abort.private void closeUserRegions(boolean abort)
abort
- Whether we're running an abort.protected Map<String,HRegion> getOnlineRegions()
public int getNumberOfOnlineRegions()
public Collection<HRegion> getOnlineRegionsLocalContext()
public void addRegion(HRegion region)
MutableOnlineRegions
addRegion
in interface MutableOnlineRegions
private void addRegion(SortedMap<Long,Collection<HRegion>> sortedRegions, HRegion region, long size)
SortedMap<Long,Collection<HRegion>> getCopyOfOnlineRegionsSortedByOffHeapSize()
SortedMap<Long,Collection<HRegion>> getCopyOfOnlineRegionsSortedByOnHeapSize()
public FlushRequester getFlushRequester()
getFlushRequester
in interface RegionServerServices
FlushRequester
or null. Usually it will not be null unless
during intialization.public CompactionRequester getCompactionRequestor()
getCompactionRequestor
in interface RegionServerServices
CompactionRequester
or null. Usually it will not be null
unless during intialization.public LeaseManager getLeaseManager()
RegionServerServices
getLeaseManager
in interface RegionServerServices
boolean isDataFileSystemOk()
true
when the data file system is available, false
otherwise.public RegionServerCoprocessorHost getRegionServerCoprocessorHost()
public ConcurrentMap<byte[],Boolean> getRegionsInTransitionInRS()
RegionServerServices
getRegionsInTransitionInRS
in interface RegionServerServices
public RegionServerRpcQuotaManager getRegionServerRpcQuotaManager()
RegionServerServices
RegionServerRpcQuotaManager
getRegionServerRpcQuotaManager
in interface RegionServerServices
private static void createNewReplicationInstance(org.apache.hadoop.conf.Configuration conf, HRegionServer server, org.apache.hadoop.fs.FileSystem walFs, org.apache.hadoop.fs.Path walDir, org.apache.hadoop.fs.Path oldWALDir, WALFactory walFactory) throws IOException
IOException
private static <T extends ReplicationService> T newReplicationInstance(String classname, Class<T> xface, org.apache.hadoop.conf.Configuration conf, HRegionServer server, org.apache.hadoop.fs.FileSystem walFs, org.apache.hadoop.fs.Path logDir, org.apache.hadoop.fs.Path oldLogDir, WALFactory walFactory) throws IOException
IOException
public Map<String,ReplicationStatus> getWalGroupsReplicationStatus()
static HRegionServer constructRegionServer(Class<? extends HRegionServer> regionServerClass, org.apache.hadoop.conf.Configuration conf)
public static void main(String[] args)
HRegionServerCommandLine
public List<HRegion> getRegions(TableName tableName)
hbase:meta
. Only returns online regions.
If a region on this table has been closed during a disable, etc., it will not be included in
the returned list. So, the returned list may not necessarily be ALL regions in this table, its
all the ONLINE regions in the table.getRegions
in interface OnlineRegions
getRegions
in interface RegionServerServices
tableName
- table to limit the scope of the querytableName
public List<HRegion> getRegions()
OnlineRegions
getRegions
in interface OnlineRegions
getRegions
in interface RegionServerServices
public Set<TableName> getOnlineTables()
public String[] getRegionServerCoprocessors()
private void closeRegionIgnoreErrors(RegionInfo region, boolean abort)
region
- Region to closeprotected boolean closeRegion(String encodedName, boolean abort, ServerName destination) throws NotServingRegionException
If an opening was in progress, this method will cancel it, but will not start a new close. The coprocessors are not called in this case. A NotServingRegionException exception is thrown.
If a close was in progress, this new request will be ignored, and an exception thrown.
Provides additional flag to indicate if this region blocks should be evicted from the cache.
encodedName
- Region to closeabort
- True if we are abortingdestination
- Where the Region is being moved too... maybe null if unknown.NotServingRegionException
- if the region is not onlinepublic HRegion getOnlineRegion(byte[] regionName)
regionName
or null if named region is not
member of the online regions.public HRegion getRegion(String encodedRegionName)
OnlineRegions
Region
instance. Only works if caller is in same context, in same JVM. Region is
not serializable.getRegion
in interface OnlineRegions
getRegion
in interface RegionServerServices
encodedRegionName
or null if named region is
not member of the online regions.public boolean removeRegion(HRegion r, ServerName destination)
MutableOnlineRegions
removeRegion
in interface MutableOnlineRegions
r
- Region to remove.destination
- Destination, if any, null otherwise.protected HRegion getRegion(byte[] regionName) throws NotServingRegionException
regionName
- Name of online HRegion
to returnHRegion
for regionName
NotServingRegionException
public HRegion getRegionByEncodedName(String encodedRegionName) throws NotServingRegionException
NotServingRegionException
private HRegion getRegionByEncodedName(byte[] regionName, String encodedRegionName) throws NotServingRegionException
NotServingRegionException
private Throwable cleanup(Throwable t, String msg)
t
to IOE if it isn't
already.t
- Throwablemsg
- Message to log in error. Can be null.private IOException convertThrowableToIOE(Throwable t, String msg)
msg
- Message to put in new IOE if passed t
is not an IOEt
an IOE if it isn't already.boolean checkFileSystem()
public void updateRegionFavoredNodesMapping(String encodedRegionName, List<org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> favoredNodes)
FavoredNodesForRegion
updateRegionFavoredNodesMapping
in interface FavoredNodesForRegion
public InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName)
regionFavoredNodesMap
on why we convert to InetSocketAddress[] here.getFavoredNodesForRegion
in interface FavoredNodesForRegion
encodedRegionName
- the encoded region name.public ServerNonceManager getNonceManager()
RegionServerServices
getNonceManager
in interface RegionServerServices
private void addToMovedRegions(String encodedName, ServerName destination, long closeSeqNum, boolean selfMove)
void removeFromMovedRegions(String encodedName)
@InterfaceAudience.Private public HRegionServer.MovedRegionInfo getMovedRegion(String encodedRegionName)
@InterfaceAudience.Private public int movedRegionCacheExpiredTime()
private String getMyEphemeralNodePath()
private boolean isHealthCheckerConfigured()
public CompactSplit getCompactSplitThread()
CompactSplit
for the serversorg.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse execRegionServerService(org.apache.hbase.thirdparty.com.google.protobuf.RpcController controller, org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest serviceRequest) throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException
org.apache.hbase.thirdparty.com.google.protobuf.ServiceException
public Optional<BlockCache> getBlockCache()
getBlockCache
in interface RegionServerServices
public Optional<MobFileCache> getMobFileCache()
getMobFileCache
in interface RegionServerServices
CacheEvictionStats clearRegionBlockCache(Region region)
public double getCompactionPressure()
getCompactionPressure
in interface RegionServerServices
Store.getCompactionPressure()
public HeapMemoryManager getHeapMemoryManager()
RegionServerServices
getHeapMemoryManager
in interface RegionServerServices
public MemStoreFlusher getMemStoreFlusher()
@InterfaceAudience.Private public boolean walRollRequestFinished()
public ThroughputController getFlushThroughputController()
RegionServerServices
getFlushThroughputController
in interface RegionServerServices
public double getFlushPressure()
getFlushPressure
in interface RegionServerServices
public void onConfigurationChange(org.apache.hadoop.conf.Configuration newConf)
ConfigurationObserver
ConfigurationManager
object when the
Configuration
object is reloaded from disk.onConfigurationChange
in interface ConfigurationObserver
public MetricsRegionServer getMetrics()
RegionServerServices
getMetrics
in interface RegionServerServices
public SecureBulkLoadManager getSecureBulkLoadManager()
RegionServerServices
SecureBulkLoadManager
getSecureBulkLoadManager
in interface RegionServerServices
public EntityLock regionLock(List<RegionInfo> regionInfo, String description, Abortable abort)
RegionServerServices
regionLock
in interface RegionServerServices
public void unassign(byte[] regionName) throws IOException
RegionServerServices
See HBASE-17712 for more details.
unassign
in interface RegionServerServices
IOException
public RegionServerSpaceQuotaManager getRegionServerSpaceQuotaManager()
RegionServerServices
RegionServerSpaceQuotaManager
getRegionServerSpaceQuotaManager
in interface RegionServerServices
public boolean reportFileArchivalForQuotas(TableName tableName, Collection<Map.Entry<String,Long>> archivedFiles)
RegionServerServices
table
were
just moved to the archive directory.reportFileArchivalForQuotas
in interface RegionServerServices
tableName
- The name of the table that files previously belonged toarchivedFiles
- Files and their sizes that were moved to archivetrue
if the files were successfully reported, false
otherwise.void executeProcedure(long procId, RSProcedureCallable callable)
public void remoteProcedureComplete(long procId, Throwable error)
void reportProcedureDone(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest request) throws IOException
IOException
boolean submitRegionProcedure(long procId)
finishRegionProcedure(long)
. After report region
transition succeed, master will not send the open/close region request to regionserver again.
And we thought that the ongoing duplicate open/close region request should not be delayed more
than 600 seconds. So the executed region procedures cache will expire after 600 seconds. See
HBASE-22404 for more details.procId
- the id of the open/close region procedurepublic void finishRegionProcedure(long procId)
procId
- the id of the open/close region procedure@InterfaceAudience.Private public CompactedHFilesDischarger getCompactedHFilesDischarger()
@InterfaceAudience.Private public long getRetryPauseTime()
HConstants.HBASE_RPC_SHORTOPERATION_RETRY_PAUSE_TIME
}public Optional<ServerName> getActiveMaster()
ConnectionRegistryEndpoint
getActiveMaster
in interface ConnectionRegistryEndpoint
public List<ServerName> getBackupMasters()
ConnectionRegistryEndpoint
getBackupMasters
in interface ConnectionRegistryEndpoint
public Iterator<ServerName> getBootstrapNodes()
ConnectionRegistryEndpoint
getBootstrapNodes
in interface ConnectionRegistryEndpoint
public List<HRegionLocation> getMetaLocations()
ConnectionRegistryEndpoint
getMetaLocations
in interface ConnectionRegistryEndpoint
protected NamedQueueRecorder createNamedQueueRecord()
createNamedQueueRecord
in class HBaseServerBase<RSRpcServices>
protected boolean clusterMode()
clusterMode
in class HBaseServerBase<RSRpcServices>
@InterfaceAudience.Private public BrokenStoreFileCleaner getBrokenStoreFileCleaner()
@InterfaceAudience.Private public RSMobFileCleanerChore getRSMobFileCleanerChore()
RSSnapshotVerifier getRsSnapshotVerifier()
protected void stopChores()
stopChores
in class HBaseServerBase<RSRpcServices>
public RegionReplicationBufferManager getRegionReplicationBufferManager()
getRegionReplicationBufferManager
in interface RegionServerServices
Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.