Tool.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.util;
  19. import org.apache.hadoop.conf.Configurable;
  20. /**
  21.  * A tool interface that supports handling of generic command-line options.
  22.  * 
  23.  * <p><code>Tool</code>, is the standard for any Map-Reduce tool/application. 
  24.  * The tool/application should delegate the handling of 
  25.  * <a href="{@docRoot}/org/apache/hadoop/util/GenericOptionsParser.html#GenericOptions">
  26.  * standard command-line options</a> to {@link ToolRunner#run(Tool, String[])} 
  27.  * and only handle its custom arguments.</p>
  28.  * 
  29.  * <p>Here is how a typical <code>Tool</code> is implemented:</p>
  30.  * <p><blockquote><pre>
  31.  *     public class MyApp extends Configured implements Tool {
  32.  *     
  33.  *       public int run(String[] args) throws Exception {
  34.  *         // <code>Configuration</code> processed by <code>ToolRunner</code>
  35.  *         Configuration conf = getConf();
  36.  *         
  37.  *         // Create a JobConf using the processed <code>conf</code>
  38.  *         JobConf job = new JobConf(conf, MyApp.class);
  39.  *         
  40.  *         // Process custom command-line options
  41.  *         Path in = new Path(args[1]);
  42.  *         Path out = new Path(args[2]);
  43.  *         
  44.  *         // Specify various job-specific parameters     
  45.  *         job.setJobName("my-app");
  46.  *         job.setInputPath(in);
  47.  *         job.setOutputPath(out);
  48.  *         job.setMapperClass(MyApp.MyMapper.class);
  49.  *         job.setReducerClass(MyApp.MyReducer.class);
  50.  *
  51.  *         // Submit the job, then poll for progress until the job is complete
  52.  *         JobClient.runJob(job);
  53.  *       }
  54.  *       
  55.  *       public static void main(String[] args) throws Exception {
  56.  *         // Let <code>ToolRunner</code> handle generic command-line options 
  57.  *         int res = ToolRunner.run(new Configuration(), new Sort(), args);
  58.  *         
  59.  *         System.exit(res);
  60.  *       }
  61.  *     }
  62.  * </pre></blockquote></p>
  63.  * 
  64.  * @see GenericOptionsParser
  65.  * @see ToolRunner
  66.  */
  67. public interface Tool extends Configurable {
  68.   /**
  69.    * Execute the command with the given arguments.
  70.    * 
  71.    * @param args command specific arguments.
  72.    * @return exit code.
  73.    * @throws Exception
  74.    */
  75.   int run(String [] args) throws Exception;
  76. }