Hadoop

ToolRunner For MR

2019-02-06  本文已影响9人  spraysss

ToolRunner是运行实现了Tool接口的工具类,它与GenericOptionsParser一起解析通用hadoop命令行参数,通用hadoop命令行参数可能会导致ToolConfiguration对象发生修改。传递特定于应用程序的参数而不会被修改

ToolRunner类图

ToolRunner

ToolRunner主要有两个方法

 public static int run(Tool tool, String[] args) 
    throws Exception{
    return run(tool.getConf(), tool, args);
  }
 public static int run(Configuration conf, Tool tool, String[] args) 
    throws Exception{
    if (CallerContext.getCurrent() == null) {
      CallerContext ctx = new CallerContext.Builder("CLI").build();
      CallerContext.setCurrent(ctx);
    }
    
    if(conf == null) {
      conf = new Configuration();
    }
    GenericOptionsParser parser = new GenericOptionsParser(conf, args);
    //set the configuration back, so that Tool can configure itself
    tool.setConf(conf);
    
    //get the args w/o generic hadoop args
    String[] toolArgs = parser.getRemainingArgs();
    return tool.run(toolArgs);
  }

GenericOptionsParser

GenericOptionsParser是一个实用程序,用于解析Hadoop框架的通用命令行参数。GenericOptionsParser可以识别几个标准的命令行参数,使应用程序能够轻松地指定namenode、ResourceManager、其他配置资源等。

Generic Options

支持的通用选项是:

-conf <configuration file> 指定配置文件
-D <property=value> 定义property
-fs <local|namenode:port> 指定 namenode
-jt <local|resourcemanager:port> 指定ResourceManager
-files <comma separated list of files> 指定要复制到map reduce集群的逗号分隔的文件
-libjars <comma separated list of jars> 指定要包含在类路径中的逗号分隔的jar文件
-archives <comma separated list of archives> 需要在计算节点上解压的归档文件

一般的命令行语法是:

通用参数在前,命令行参数在后

bin/hadoop command [genericOptions] [commandOptions]

这个类可能会修改传递给他的Configuration对象

栗子


   $ bin/hadoop dfs -fs darwin:8020 -ls /data
   list /data directory in dfs with namenode darwin:8020
   
   $ bin/hadoop dfs -D fs.default.name=darwin:8020 -ls /data
   list /data directory in dfs with namenode darwin:8020
       
   $ bin/hadoop dfs -conf core-site.xml -conf hdfs-site.xml -ls /data
   list /data directory in dfs with multiple conf files specified.
  
   $ bin/hadoop job -D yarn.resourcemanager.address=darwin:8032 -submit job.xml
   submit a job to ResourceManager darwin:8032
  
   $ bin/hadoop job -jt darwin:8032 -submit job.xml
   submit a job to ResourceManager darwin:8032
  
   $ bin/hadoop job -jt local -submit job.xml
   submit a job to local runner
   
   $ bin/hadoop jar -libjars testlib.jar 
   -archives test.tgz -files file.txt inputjar args
   job submission with libjars, files and archives

how to use

一般通过如下方式使用ToolRunner 和Tool

上一篇 下一篇

猜你喜欢

热点阅读