|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.hadoop.hbase.zookeeper.ZooKeeperListener
org.apache.hadoop.hbase.regionserver.SplitLogWorker
@InterfaceAudience.Private public class SplitLogWorker
This worker is spawned in every regionserver (should we also spawn one in
the master?). The Worker waits for log splitting tasks to be put up by the
SplitLogManager running in the master and races with other workers
in other serves to acquire those tasks. The coordination is done via
zookeeper. All the action takes place at /hbase/splitlog znode.
If a worker has successfully moved the task from state UNASSIGNED to OWNED then it owns the task. It keeps heart beating the manager by periodically moving the task from UNASSIGNED to OWNED state. On success it moves the task to TASK_DONE. On unrecoverable error it moves task state to ERR. If it cannot continue but wants the master to retry the task then it moves the task state to RESIGNED.
The manager can take a task away from a worker by moving the task from OWNED to UNASSIGNED. In the absence of a global lock there is a unavoidable race here - a worker might have just finished its task when it is stripped of its ownership. Here we rely on the idempotency of the log splitting task for correctness
| Nested Class Summary | |
|---|---|
static interface |
SplitLogWorker.TaskExecutor
Objects implementing this interface actually do the task that has been acquired by a SplitLogWorker. |
| Field Summary | |
|---|---|
static int |
DEFAULT_MAX_SPLITTERS
|
protected AtomicInteger |
tasksInProgress
|
| Fields inherited from class org.apache.hadoop.hbase.zookeeper.ZooKeeperListener |
|---|
watcher |
| Constructor Summary | |
|---|---|
SplitLogWorker(ZooKeeperWatcher watcher,
org.apache.hadoop.conf.Configuration conf,
RegionServerServices server,
LastSequenceId sequenceIdChecker)
|
|
SplitLogWorker(ZooKeeperWatcher watcher,
org.apache.hadoop.conf.Configuration conf,
RegionServerServices server,
SplitLogWorker.TaskExecutor splitTaskExecutor)
|
|
| Method Summary | |
|---|---|
protected static int |
attemptToOwnTask(boolean isFirstTime,
ZooKeeperWatcher zkw,
ServerName server,
String task,
org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitLogTask.RecoveryMode mode,
int taskZKVersion)
Try to own the task by transitioning the zk node data from UNASSIGNED to OWNED. |
void |
nodeChildrenChanged(String path)
|
void |
nodeDataChanged(String path)
|
void |
run()
|
void |
start()
start the SplitLogWorker thread |
void |
stop()
stop the SplitLogWorker thread |
| Methods inherited from class org.apache.hadoop.hbase.zookeeper.ZooKeeperListener |
|---|
getWatcher, nodeCreated, nodeDeleted |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int DEFAULT_MAX_SPLITTERS
protected final AtomicInteger tasksInProgress
| Constructor Detail |
|---|
public SplitLogWorker(ZooKeeperWatcher watcher,
org.apache.hadoop.conf.Configuration conf,
RegionServerServices server,
SplitLogWorker.TaskExecutor splitTaskExecutor)
public SplitLogWorker(ZooKeeperWatcher watcher,
org.apache.hadoop.conf.Configuration conf,
RegionServerServices server,
LastSequenceId sequenceIdChecker)
| Method Detail |
|---|
public void run()
run in interface Runnable
protected static int attemptToOwnTask(boolean isFirstTime,
ZooKeeperWatcher zkw,
ServerName server,
String task,
org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitLogTask.RecoveryMode mode,
int taskZKVersion)
This method is also used to periodically heartbeat the task progress by transitioning the node from OWNED to OWNED.
isFirstTime - zkw - server - task - taskZKVersion -
public void nodeDataChanged(String path)
nodeDataChanged in class ZooKeeperListenerpublic void nodeChildrenChanged(String path)
nodeChildrenChanged in class ZooKeeperListenerpublic void start()
public void stop()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||