ToolRunner
是运行实现了Tool
接口的工具类,它与GenericOptionsParser
一起解析通用hadoop命令行参数,通用hadoop命令行参数可能会导致Tool
的Configuration
对象发生修改。传递特定于应用程序的参数而不会被修改
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方法。
网友评论