## org.apache.hadoop.mapred.jobcontrol
Class JobControl

    java.lang.Object
      org.apache.hadoop.mapred.jobcontrol.JobControl

All Implemented Interfaces:
  Runnable

    public class JobControl

extends Object
implements Runnable

This class encapsulates a set of MapReduce jobs and its dependency. It tracks the states of the jobs by placing them into different tables according to their states. This class provides APIs for the client app to add a job to the group and to get the jobs in the group in different states. When a job is added, an ID unique to the group is assigned to the job. This class has a thread that submits jobs when they become ready, monitors the states of the running jobs, and updates the states of jobs based on the state changes of their depending jobs states. The class provides APIs for suspending/resuming the thread,and for stopping the thread.

Constructor Summary
`JobControl(String groupName)` Construct a job control for a group of jobs.

Method Summary
`String` `addJob(Job aJob)` Add a new job.
`void` `addJobs(Collection<Job> jobs)` Add a collection of jobs
`boolean` `allFinished()`
`ArrayList<Job>` `getFailedJobs()`
`ArrayList<Job>` `getReadyJobs()`
`ArrayList<Job>` `getRunningJobs()`
`int` `getState()`
`ArrayList<Job>` `getSuccessfulJobs()`
`ArrayList<Job>` `getWaitingJobs()`
`void` `resume()` resume the suspended thread
`void` `run()` The main loop for the thread.
`void` `stop()` set the thread state to STOPPING so that the thread will stop when it wakes up.
`void` `suspend()` suspend the running thread

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### JobControl

    public JobControl(String groupName)

  Construct a job control for a group of jobs.

  Parameters:
    `groupName` - a name identifying this group

Method Detail

### getWaitingJobs

    public ArrayList<Job> getWaitingJobs()

  Returns:
    the jobs in the waiting state

### getRunningJobs

    public ArrayList<Job> getRunningJobs()

  Returns:
    the jobs in the running state

### getReadyJobs

    public ArrayList<Job> getReadyJobs()

  Returns:
    the jobs in the ready state

### getSuccessfulJobs

    public ArrayList<Job> getSuccessfulJobs()

  Returns:
    the jobs in the success state

### getFailedJobs

    public ArrayList<Job> getFailedJobs()

### addJob

    public String addJob(Job aJob)

  Add a new job.

  Parameters:
    `aJob` - the new job

### addJobs

    public void addJobs(Collection<Job> jobs)

  Add a collection of jobs

  Parameters:
    `jobs` -

### getState

    public int getState()

  Returns:
    the thread state

### stop

    public void stop()

  set the thread state to STOPPING so that the thread will stop when it wakes up.

### suspend

    public void suspend()

  suspend the running thread

### resume

    public void resume()

  resume the suspended thread

### allFinished

    public boolean allFinished()

### run

    public void run()

  The main loop for the thread. The loop does the following: Check the states of the running jobs Update the states of waiting jobs Submit the jobs in ready state

  Specified by:
    `run` in interface `Runnable`

Copyright © 2009 The Apache Software Foundation