org.apache.hadoop.hbase
Class HRegionServer

java.lang.Object
  extended by org.apache.hadoop.hbase.HRegionServer
All Implemented Interfaces:
Runnable, HConstants, HRegionInterface, org.apache.hadoop.ipc.VersionedProtocol

public class HRegionServer
extends Object
implements HConstants, HRegionInterface, Runnable

HRegionServer makes a set of HRegions available to clients. It checks in with the HMaster. There are many HRegionServers in a single HBase deployment.


Field Summary
protected  boolean abortRequested
           
protected  HBaseConfiguration conf
           
protected  boolean fsOk
           
protected  ReentrantReadWriteLock lock
           
protected  HLog log
           
protected  SortedMap<org.apache.hadoop.io.Text,HRegion> onlineRegions
           
protected  AtomicBoolean quiesced
           
static String REGIONSERVER
          region server process name
protected  Map<org.apache.hadoop.io.Text,HRegion> retiringRegions
           
protected  HServerInfo serverInfo
           
protected  AtomicBoolean stopRequested
           
protected  int threadWakeFrequency
           
 
Fields inherited from interface org.apache.hadoop.hbase.HConstants
ALL_META_COLUMNS, ALL_VERSIONS, COL_REGIONINFO, COL_REGIONINFO_ARRAY, COL_SERVER, COL_SPLITA, COL_SPLITB, COL_STARTCODE, COLUMN_FAMILY, COLUMN_FAMILY_ARRAY, COLUMN_FAMILY_STR, DEFAULT_HOST, DEFAULT_MASTER_ADDRESS, DEFAULT_MASTER_INFOPORT, DEFAULT_MASTER_PORT, DEFAULT_MAX_FILE_SIZE, DEFAULT_REGION_SERVER_CLASS, DEFAULT_REGIONSERVER_ADDRESS, DEFAULT_REGIONSERVER_INFOPORT, EMPTY_START_ROW, EMPTY_TEXT, FILE_SYSTEM_VERSION, HBASE_DIR, HREGION_LOGDIR_NAME, HREGION_OLDLOGFILE_NAME, LAST_ROW, LATEST_TIMESTAMP, MASTER_ADDRESS, META_TABLE_NAME, REGION_SERVER_CLASS, REGIONSERVER_ADDRESS, ROOT_TABLE_NAME, THREAD_WAKE_FREQUENCY, UTF8_ENCODING, VERSION_FILE_NAME
 
Fields inherited from interface org.apache.hadoop.hbase.HRegionInterface
versionID
 
Constructor Summary
HRegionServer(HBaseConfiguration conf)
          Starts a HRegionServer at the default location
HRegionServer(HServerAddress address, HBaseConfiguration conf)
          Starts a HRegionServer at the specified location
 
Method Summary
protected  void addProcessingMessage(HRegionInfo hri)
           
 void batchUpdate(org.apache.hadoop.io.Text regionName, BatchUpdate b)
          Used by master so it can add an update with the current time of this server rather than current time on master Applies a batch of updates via one RPC
 void batchUpdate(org.apache.hadoop.io.Text regionName, long timestamp, BatchUpdate b)
          Applies a batch of updates via one RPC
protected  boolean checkFileSystem()
          Checks to see if the file system is still accessible.
 void close(long scannerId)
          Close a scanner
 void deleteAll(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, long timestamp)
          Delete all cells that match the passed row and whose timestamp is equal-to or older than the passed timestamp.
 void deleteAll(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, org.apache.hadoop.io.Text column, long timestamp)
          Delete all cells that match the passed row and column and whose timestamp is equal-to or older than the passed timestamp.
 void deleteFamily(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, org.apache.hadoop.io.Text family, long timestamp)
          Delete all cells for a row with matching column family with timestamps less than or equal to timestamp.
protected static void doMain(String[] args, Class<? extends HRegionServer> regionServerClass)
          Do class main.
 byte[] get(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, org.apache.hadoop.io.Text column)
          Retrieve a single value from the specified region for the specified row and column keys
 byte[][] get(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, org.apache.hadoop.io.Text column, int numVersions)
          Get the specified number of versions of the specified row and column
 byte[][] get(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, org.apache.hadoop.io.Text column, long timestamp, int numVersions)
          Get the specified number of versions of the specified row and column with the specified timestamp.
 HbaseMapWritable getClosestRowBefore(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row)
          Return all the data for the row that matches row exactly, or the one that immediately preceeds it.
 FlushRequester getFlushRequester()
           
 SortedMap<org.apache.hadoop.io.Text,HRegion> getOnlineRegions()
           
protected  List<HMsg> getOutboundMsgs()
           
 long getProtocolVersion(String protocol, long clientVersion)
          
protected  HRegion getRegion(org.apache.hadoop.io.Text regionName)
          Protected utility method for safely obtaining an HRegion handle.
protected  HRegion getRegion(org.apache.hadoop.io.Text regionName, boolean checkRetiringRegions)
          Protected utility method for safely obtaining an HRegion handle.
 HRegionInfo getRegionInfo(org.apache.hadoop.io.Text regionName)
          Get metainfo about an HRegion
protected  Set<HRegion> getRegionsToCheck()
           
 AtomicInteger getRequestCount()
           
 HbaseMapWritable getRow(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row)
          Get all the data for the specified row
 HbaseMapWritable getRow(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text row, long ts)
          Get all the data for the specified row at a given timestamp
 HServerInfo getServerInfo()
           
static void main(String[] args)
           
 HbaseMapWritable next(long scannerId)
          Get the next set of values
 long openScanner(org.apache.hadoop.io.Text regionName, org.apache.hadoop.io.Text[] cols, org.apache.hadoop.io.Text firstRow, long timestamp, RowFilterInterface filter)
          Opens a remote scanner with a RowFilter.
 void run()
          The HRegionServer sticks in this loop until closed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stopRequested

protected volatile AtomicBoolean stopRequested

quiesced

protected volatile AtomicBoolean quiesced

abortRequested

protected volatile boolean abortRequested

fsOk

protected volatile boolean fsOk

serverInfo

protected final HServerInfo serverInfo

conf

protected final HBaseConfiguration conf

onlineRegions

protected volatile SortedMap<org.apache.hadoop.io.Text,HRegion> onlineRegions

retiringRegions

protected volatile Map<org.apache.hadoop.io.Text,HRegion> retiringRegions

lock

protected final ReentrantReadWriteLock lock

threadWakeFrequency

protected final int threadWakeFrequency

REGIONSERVER

public static final String REGIONSERVER
region server process name

See Also:
Constant Field Values

log

protected HLog log
Constructor Detail

HRegionServer

public HRegionServer(HBaseConfiguration conf)
              throws IOException
Starts a HRegionServer at the default location

Parameters:
conf -
Throws:
IOException

HRegionServer

public HRegionServer(HServerAddress address,
                     HBaseConfiguration conf)
              throws IOException
Starts a HRegionServer at the specified location

Parameters:
address -
conf -
Throws:
IOException
Method Detail

run

public void run()
The HRegionServer sticks in this loop until closed. It repeatedly checks in with the HMaster, sending heartbeats & reports, and receiving HRegion load/unload instructions.

Specified by:
run in interface Runnable

addProcessingMessage

protected void addProcessingMessage(HRegionInfo hri)

getRegionInfo

public HRegionInfo getRegionInfo(org.apache.hadoop.io.Text regionName)
                          throws NotServingRegionException
Get metainfo about an HRegion

Specified by:
getRegionInfo in interface HRegionInterface
Parameters:
regionName - name of the region
Returns:
HRegionInfo object for region
Throws:
NotServingRegionException

get

public byte[] get(org.apache.hadoop.io.Text regionName,
                  org.apache.hadoop.io.Text row,
                  org.apache.hadoop.io.Text column)
           throws IOException
Retrieve a single value from the specified region for the specified row and column keys

Specified by:
get in interface HRegionInterface
Parameters:
regionName - name of region
row - row key
column - column key
Returns:
alue for that region/row/column
Throws:
IOException

get

public byte[][] get(org.apache.hadoop.io.Text regionName,
                    org.apache.hadoop.io.Text row,
                    org.apache.hadoop.io.Text column,
                    int numVersions)
             throws IOException
Get the specified number of versions of the specified row and column

Specified by:
get in interface HRegionInterface
Parameters:
regionName - region name
row - row key
column - column key
numVersions - number of versions to return
Returns:
array of values
Throws:
IOException

get

public byte[][] get(org.apache.hadoop.io.Text regionName,
                    org.apache.hadoop.io.Text row,
                    org.apache.hadoop.io.Text column,
                    long timestamp,
                    int numVersions)
             throws IOException
Get the specified number of versions of the specified row and column with the specified timestamp.

Specified by:
get in interface HRegionInterface
Parameters:
regionName - region name
row - row key
column - column key
timestamp - timestamp
numVersions - number of versions to return
Returns:
array of values
Throws:
IOException

getRow

public HbaseMapWritable getRow(org.apache.hadoop.io.Text regionName,
                               org.apache.hadoop.io.Text row)
                        throws IOException
Get all the data for the specified row

Specified by:
getRow in interface HRegionInterface
Parameters:
regionName - region name
row - row key
Returns:
map of values
Throws:
IOException

getRow

public HbaseMapWritable getRow(org.apache.hadoop.io.Text regionName,
                               org.apache.hadoop.io.Text row,
                               long ts)
                        throws IOException
Get all the data for the specified row at a given timestamp

Specified by:
getRow in interface HRegionInterface
Parameters:
regionName - region name
row - row key
Returns:
map of values
Throws:
IOException

getClosestRowBefore

public HbaseMapWritable getClosestRowBefore(org.apache.hadoop.io.Text regionName,
                                            org.apache.hadoop.io.Text row)
                                     throws IOException
Return all the data for the row that matches row exactly, or the one that immediately preceeds it.

Specified by:
getClosestRowBefore in interface HRegionInterface
Parameters:
regionName - region name
row - row key
Returns:
map of values
Throws:
IOException

next

public HbaseMapWritable next(long scannerId)
                      throws IOException
Get the next set of values

Specified by:
next in interface HRegionInterface
Parameters:
scannerId - clientId passed to openScanner
Returns:
map of values
Throws:
IOException

batchUpdate

public void batchUpdate(org.apache.hadoop.io.Text regionName,
                        BatchUpdate b)
                 throws IOException
Used by master so it can add an update with the current time of this server rather than current time on master Applies a batch of updates via one RPC

Specified by:
batchUpdate in interface HRegionInterface
Parameters:
regionName - name of the region to update
b - BatchUpdate
Throws:
IOException

batchUpdate

public void batchUpdate(org.apache.hadoop.io.Text regionName,
                        long timestamp,
                        BatchUpdate b)
                 throws IOException
Applies a batch of updates via one RPC

Specified by:
batchUpdate in interface HRegionInterface
Parameters:
regionName - name of the region to update
timestamp - the time to be associated with the changes
b - BatchUpdate
Throws:
IOException

openScanner

public long openScanner(org.apache.hadoop.io.Text regionName,
                        org.apache.hadoop.io.Text[] cols,
                        org.apache.hadoop.io.Text firstRow,
                        long timestamp,
                        RowFilterInterface filter)
                 throws IOException
Opens a remote scanner with a RowFilter.

Specified by:
openScanner in interface HRegionInterface
Parameters:
regionName - name of region to scan
cols - columns to scan. If column name is a column family, all columns of the specified column family are returned. Its also possible to pass a regex for column family name. A column name is judged to be regex if it contains at least one of the following characters: \+|^&*$[]]}{)(.
firstRow - starting row to scan
timestamp - only return values whose timestamp is <= this value
filter - RowFilter for filtering results at the row-level.
Returns:
scannerId scanner identifier used in other calls
Throws:
IOException

close

public void close(long scannerId)
           throws IOException
Close a scanner

Specified by:
close in interface HRegionInterface
Parameters:
scannerId - the scanner id returned by openScanner
Throws:
IOException

deleteAll

public void deleteAll(org.apache.hadoop.io.Text regionName,
                      org.apache.hadoop.io.Text row,
                      org.apache.hadoop.io.Text column,
                      long timestamp)
               throws IOException
Delete all cells that match the passed row and column and whose timestamp is equal-to or older than the passed timestamp.

Specified by:
deleteAll in interface HRegionInterface
Parameters:
regionName - region name
row - row key
column - column key
timestamp - Delete all entries that have this timestamp or older
Throws:
IOException

deleteAll

public void deleteAll(org.apache.hadoop.io.Text regionName,
                      org.apache.hadoop.io.Text row,
                      long timestamp)
               throws IOException
Delete all cells that match the passed row and whose timestamp is equal-to or older than the passed timestamp.

Specified by:
deleteAll in interface HRegionInterface
Parameters:
regionName - region name
row - row key
timestamp - Delete all entries that have this timestamp or older
Throws:
IOException

deleteFamily

public void deleteFamily(org.apache.hadoop.io.Text regionName,
                         org.apache.hadoop.io.Text row,
                         org.apache.hadoop.io.Text family,
                         long timestamp)
                  throws IOException
Delete all cells for a row with matching column family with timestamps less than or equal to timestamp.

Specified by:
deleteFamily in interface HRegionInterface
Parameters:
regionName - The name of the region to operate on
row - The row to operate on
family - The column family to match
timestamp - Timestamp to match
Throws:
IOException

getServerInfo

public HServerInfo getServerInfo()
Returns:
Info on this server.

getOnlineRegions

public SortedMap<org.apache.hadoop.io.Text,HRegion> getOnlineRegions()
Returns:
Immutable list of this servers regions.

getRequestCount

public AtomicInteger getRequestCount()
Returns:
the request count

getFlushRequester

public FlushRequester getFlushRequester()
Returns:
reference to FlushRequester

getRegion

protected HRegion getRegion(org.apache.hadoop.io.Text regionName)
                     throws NotServingRegionException
Protected utility method for safely obtaining an HRegion handle.

Parameters:
regionName - Name of online HRegion to return
Returns:
HRegion for regionName
Throws:
NotServingRegionException

getRegion

protected HRegion getRegion(org.apache.hadoop.io.Text regionName,
                            boolean checkRetiringRegions)
                     throws NotServingRegionException
Protected utility method for safely obtaining an HRegion handle.

Parameters:
regionName - Name of online HRegion to return
checkRetiringRegions - Set true if we're to check retiring regions as well as online regions.
Returns:
HRegion for regionName
Throws:
NotServingRegionException

checkFileSystem

protected boolean checkFileSystem()
Checks to see if the file system is still accessible. If not, sets abortRequested and stopRequested

Returns:
false if file system is not available

getRegionsToCheck

protected Set<HRegion> getRegionsToCheck()
Returns:
Returns list of non-closed regions hosted on this server. If no regions to check, returns an empty list.

getProtocolVersion

public long getProtocolVersion(String protocol,
                               long clientVersion)
                        throws IOException

Specified by:
getProtocolVersion in interface org.apache.hadoop.ipc.VersionedProtocol
Throws:
IOException

getOutboundMsgs

protected List<HMsg> getOutboundMsgs()
Returns:
Queue to which you can add outbound messages.

doMain

protected static void doMain(String[] args,
                             Class<? extends HRegionServer> regionServerClass)
Do class main.

Parameters:
args -
regionServerClass - HRegionServer to instantiate.

main

public static void main(String[] args)
Parameters:
args -


Copyright © 2008 The Apache Software Foundation