Hadoop系列之ToolRunner与GenericOptionsParser用法
首先给一个ToolRunner类的实例
package hadoop.study;/*** Created by denglinjie on 2017/3/7.*/
import java.util.Map.Entry;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;public class ToolRunnerDemo extends Configured implements Tool {static {//Configuration.addDefaultResource("hdfs-default.xml");//Configuration.addDefaultResource("hdfs-site.xml");//Configuration.addDefaultResource("mapred-default.xml");//Configuration.addDefaultResource("mapred-site.xml");}public int run(String[] args) throws Exception {Configuration conf = getConf();for (Entry<String, String> entry : conf) {System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());}return 0;}public static void main(String[] args) throws Exception {int exitCode = ToolRunner.run(new ToolRunnerDemo(), args);System.exit(exitCode);}
}
我们可以看下ToolRunner的run方法代码
public static int run(Configuration conf, Tool tool, String[] args) throws Exception {if(conf == null) {conf = new Configuration();}GenericOptionsParser parser = new GenericOptionsParser(conf, args);tool.setConf(conf);String[] toolArgs = parser.getRemainingArgs();return tool.run(toolArgs);}
可以看到ToolRunner对象会创建一个Configuration对象,Configuration对象会加载hadoop的相关配置文件,默认情况下回加载core-default.xml和core-site.xml文件
核心代码如下:
static {ClassLoader cL = Thread.currentThread().getContextClassLoader();if(cL == null) {cL = Configuration.class.getClassLoader();}if(cL.getResource("hadoop-site.xml") != null) {LOG.warn("DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, mapred-site.xml and hdfs-site.xml to override properties of core-default.xml, mapred-default.xml and hdfs-default.xml respectively");}addDefaultResource("core-default.xml");addDefaultResource("core-site.xml");varPat = Pattern.compile("\\$\\{[^\\}\\$ ]+\\}");MAX_SUBST = 20;}
可在ToolRunnerDemo类的run方法中通过如下方法拿到配置文件中的参数
Configuration conf = getConf();
上述代码还可以看到如下逻辑
GenericOptionsParser parser = new GenericOptionsParser(conf, args);String[] toolArgs = parser.getRemainingArgs();
return tool.run(toolArgs);
args是hadoop执行jar包代码时传入的命令行参数,所以可以看出:
GenericOptionParser类的目的就是对命令行的输入参数进行处理,并传入Demo类的run方法中使用
可通过-D在命令行传入参数
# hadoop jar tool_runer_class/toolrunnerdemo.jar ToolRunnerDemo -D key=value
实验发现,该参数也会出现在conf中,即如下代码也可以拿到命令行传入的参数
Configuration conf = getConf()
可通过-conf在命令行增加新的配置文件
# hadoop jar tool_runer_class/toolrunnerdemo.jar ToolRunnerDemo -conf /home/xx/hadoop-1.2.1/conf/mapred-site.xml
也可以通过在代码中添加如下代码,即把上述代码中的注释代开,来传入配置文件
static {Configuration.addDefaultResource("hdfs-default.xml");Configuration.addDefaultResource("hdfs-site.xml");Configuration.addDefaultResource("mapred-default.xml");Configuration.addDefaultResource("mapred-site.xml");}
这些方式,最终都能够在下面的conf中拿到参数
Configuration conf = getConf()
Hadoop系列之ToolRunner与GenericOptionsParser用法相关推荐
- Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等...
一个典型的实现Tool的程序: /** MyApp 需要从命令行读取参数,用户输入命令如, $bin/hadoop jar MyApp.jar -archives test.tgz arg1 arg ...
- Hadoop中通过ToolRunner和Configured实现直接读取命令行动态出入reduce task数量,jar文件等
一个典型的实现Tool的程序: /** MyApp 需要从命令行读取参数,用户输入命令如, $bin/hadoop jar MyApp.jar -archives test.tgz arg1 arg ...
- 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...
这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...
- [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
- Hadoop 系列之 Hive
Hadoop 系列之 Hive Hive 的官网:http://hive.apache.org/ Hive versions 1.2 onward require Java 1.7 or newer. ...
- Hadoop 系列之 HDFS
Hadoop 系列之 HDFS 花絮 上一篇文章 Hadoop 系列之 1.0和2.0架构 中,提到了 Google 的三驾马车,关于分布式存储,计算以及列式存储的论文,分别对应开源的 HDFS,Ma ...
- Hadoop 系列之 1.0 和2.0 架构
Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop ...
- Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构
精选30+云产品,助力企业轻松上云!>>> Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背 ...
- hadoop系列三:mapreduce的使用(一)
一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6.4 上一篇:hadoop系列二: ...
最新文章
- 2ASK和2FSK相干解调误码率仿真matlab
- c语言函数之间互相调用符号,如何实现C和C++函数互相调用
- 白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量
- HarmonyOS之应用开发的电话服务与蜂窝网络
- JavaScript入门第一天,js教程,js变量, 数据类型,数据转换,隐式转换
- JDBC布尔兼容性列表
- php错误拦截机制,php拦截异常怎么写-PHP问题
- 睡眠音频分割及识别问题(六)--输入输出及方案讨论
- sql express 无法启动服务_在Windows2012下安装SQL Server 2005无法启动服务的解决办法...
- java 语法 泛型_java-解密泛型语法
- mysql 与QT的连接
- 刚刚发现的 xaml里面颜色的定义方式
- java重排序_Java synchronized 能防止指令重排序吗?
- 清华大学数学与计算机学院院长,王跃宣(清华大学教授)_百度百科
- 探秘广场舞:中老年市场绝佳切口?
- 代码-检测文件的编码
- 11.4-11.10PS自学第6课——套索与魔棒工具
- 手机访问电脑文件ftp服务器,怎么用手机直接访问电脑上的视频文件图片等?
- 科学家风采 | 2022 ACM杰出会员揭榜:本刊编委陈恩红教授入选!
- Ubuntu三步配置scrcpy,实现手机投屏和控制
热门文章
- 13. Roman to Integer
- Excel VBA 入门(零)
- Delphi TreeView失去焦点也选中
- 如何創建一個自己的 Composer/Packagist 包 (PHP)
- 用 as with ,和 ROW_NUMBER() 做分页查询
- RabbitMQ在Windows下设置服务启动
- mongo php 自增,PHP7下MongoDB自增或自减一个字段的值
- Spring MVC的转发与重定向
- php免费下载手册,php手册|php中文手册下载|好特下载
- linux 查找文件 locate,linux文件查找(find,locate)