美文网首页Hadoop
ToolRunner For MR

ToolRunner For MR

作者: spraysss | 来源:发表于2019-02-06 09:46 被阅读9次

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

  • mapreduce driver 类 继承Configured 实现 Tool
  • 在driver 类中调用ToolRunner.run 完成参数传递配置解析,并执行Tool 中Run方法。

相关文章

网友评论

    本文标题:ToolRunner For MR

    本文链接:https://www.haomeiwen.com/subject/ywrpsqtx.html