Tool (Apache Hadoop Common 3.5.0 API)
Description: declaration: package: org.apache.hadoop.util, interface: Tool

Package org.apache.hadoop.util

# Interface Tool

All Superinterfaces:
  `Configurable`

All Known Implementing Classes:
  `CommandShell`, `CredentialShell`, `DtUtilShell`, `FindClass`, `FsShell`, `GetGroupsBase`, `HAAdmin`, `KDiag`, `KeyShell`

@Public @Stable public interface Tool extends Configurable
A tool interface that supports handling of generic command-line options.

`Tool`, is the standard for any Map-Reduce tool/application. The tool/application should delegate the handling of standard command-line options to `ToolRunner.run(Tool, String[])` and only handle its custom arguments.

Here is how a typical `Tool` is implemented:

>          public class MyApp extends Configured implements Tool {

>            public int run(String[] args) throws Exception {
>              // Configuration processed by ToolRunner
>              Configuration conf = getConf();

>              // Create a JobConf using the processed conf
>              JobConf job = new JobConf(conf, MyApp.class);

>              // Process custom command-line options
>              Path in = new Path(args[1]);
>              Path out = new Path(args[2]);

>              // Specify various job-specific parameters
>              job.setJobName("my-app");
>              job.setInputPath(in);
>              job.setOutputPath(out);
>              job.setMapperClass(MyMapper.class);
>              job.setReducerClass(MyReducer.class);

>              // Submit the job, then poll for progress until the job is complete
>              RunningJob runningJob = JobClient.runJob(job);
>              if (runningJob.isSuccessful()) {
>                return 0;
>              } else {
>                return 1;
>              }
>            }

>            public static void main(String[] args) throws Exception {
>              // Let ToolRunner handle generic command-line options
>              int res = ToolRunner.run(new Configuration(), new MyApp(), args);

>              System.exit(res);
>            }
>          }

See Also:
  - `GenericOptionsParser`
  - `ToolRunner`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `run(String[] args)`
  Execute the command with the given arguments.

  ### Methods inherited from interface org.apache.hadoop.conf.Configurable

  `getConf, setConf`

- ## Method Details

  - ### run

    int run(String[] args) throws Exception
    Execute the command with the given arguments.
    Parameters:
      `args` - command specific arguments.
    Returns:
      exit code.
    Throws:
      `Exception` - command exception.