hadoop2.2编程:Tool, ToolRunner, GenericOptionsParser, Configuration
继承关系:
1. java.util
Interface Map.Entry<K,V>
description:
public static interface Map.Entry<K,V>
methods:
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object o)
Compares the specified object with this entry for equality.
|
K |
getKey()
Returns the key corresponding to this entry.
|
V |
getValue()
Returns the value corresponding to this entry.
|
int |
hashCode()
Returns the hash code value for this map entry.
|
V |
setValue(V value)
Replaces the value corresponding to this entry with the specified value (optional operation).
|
2.java.lang.Object
|__ org.apache.hadoop.conf.Configuration
constructor: public class Configuration extends Objectimplements Iterable<Map.Entry<String,String>>, Writable 3.org.apache.hadoop.util Class ToolRunner java.lang.Object |__ org.apache.hadoop.util.ToolRunner description:
public class ToolRunner extends Object
ToolRunner can be used to run classes implementing Tool interface. It works in conjunction with GenericOptionsParser to parse the generic hadoop command line arguments and modifies the Configuration of the Tool. The application-specific options are passed along without being modified.
methods:
static int |
run(Configuration conf, Tool tool, String[] args) Runs the given Tool by Tool.run(String[]),after parsing with the given generic arguments. |
static int |
run(Tool tool, String[] args)Runs the Tool with itsConfiguration. |
4.org.apache.hadoop.util Interface Tooldescription:
public interface Tool extends Configurablemethods:
int |
run(String[] args) Execute the command with the given arguments. |
5.org.apache.hadoop.conf
Interface Configurable
constructor:
public interface Configurable methods:
Configuration |
getConf() Return the configuration used by this object. |
void |
setConf(Configuration conf)Set the configuration to be used by this object. |
6.
java.lang.Object |__ org.apache.hadoop.conf.Configureddescription:
public class Configured extends Objectimplements Configurable
constructor:
Configured() Construct a Configured. |
Configured(Configuration conf)Construct a Configured |
methods:
Configuration |
getConf() Return the configuration used by this object. |
void |
setConf(Configuration conf)Set the configuration to be used by this object. |
Code1 (Configuration里添加的resource是String类型):
import java.util.Map.Entry;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.fs.Path;
public class ConfigurationPrinter extends Configured implements Tool {
static {
Configuration.addDefaultResource("config.xml");
}
@Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
for (Entry<String, String> hash: conf) {
System.out.printf("%s=%s\n", hash.getKey(), hash.getValue());
}
return 0;
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new ConfigurationPrinter(), args);
System.exit(exitCode);
}
}
注:Configuration class提供只一种静态方法:addDefaultresource(String name), 如上述代码, 添加Resource "config.xml"为String类型时,hadoop将从classpath里查找此文件;若Resource 为Path()类型时,hadoop将从local filesystem里查找此文件: Configuration conf = new Configuration(); conf.addResource(new Path("config.xml"));
code1的执行步骤:
#将自定义的config文件config.xml放在hadoop的$HADOOP_CONF_DIR里 mv config.xml $HADOOP_HOME/etc/hadoop/
#假如我们添加的resource如下:
<!--cat $HADOOP_HOME/etc/hadoop/config.xml-->
<configuration>
<property>
<name>color</name>
<value>yellow</value>
</property>
<property>
<name>size</name>
<value>10</value>
</property>
<property>
<name>weight</name>
<value>heavy</value>
<final>true</final>
</property>
</configuration>
执行代码:
mkdir class source $HADOOP_HOME/libexec/hadoop-config.sh javac -d class ConfigurationPrinter.java jar -cvf ConfigurationPrinter.jar -C class ./ export HADOOP_CLASSPATH=ConfigurationPrinter.jar:$CLASSPATH #下面查找刚才添加的resource是否被读入 #我们在config.xml里添加了一项 <name>color</name>,执行 yarn ConfigurationPrinter|grep "color" color=yellow #可见代码是正确的
或者在commandline里指定HADOOP_CONF_DIR, 比如执行:
yarn ConfigurationPrinter --conf config.xml | grep color color=yellow
也是可以的!
Code2 (Configuration里添加的resource是Path类型):
import java.util.Map.Entry;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.fs.Path;
public class ConfigurationPrinter extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.addResource(new Path("config.xml"));
for (Entry<String, String> hash: conf) {
System.out.printf("%s=%s\n", hash.getKey(), hash.getValue());
}
return 0;
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new ConfigurationPrinter(), args);
System.exit(exitCode);
}
}
此时添加的resource类型是Path()类型,故hadoop将从local filesystem里查找config.xml, 不需要将config.xml放在conf/下面,只要在代码中指定config.xml在本地文件系统中的路径即可(new Path("../others/config.xml"))
运行步骤:
mkdir class source $HADOOP_HOME/libexec/hadoop-config.sh javac -d class ConfigurationPrinter.java jar -cvf ConfigurationPrinter.jar -C class ./ export HADOOP_CLASSPATH=ConfigurationPrinter.jar:$CLASSPATH #下面查找刚才添加的resource是否被读入 #我们在config.xml里添加了一项 <name>color</name>,执行 yarn ConfigurationPrinter|grep "color" color=yellow #可见代码是正确的
备注:ConfigurationParser支持set individual properties:
Generic Options
The supported generic options are:
-conf <configuration file> specify a configuration file
-D <property=value> use value for given property
-fs <local|namenode:port> specify a namenode
-jt <local|jobtracker:port> specify a job tracker
-files <comma separated list of files> specify comma separated
files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated
jar files to include in the classpath.
-archives <comma separated list of archives> specify comma
separated archives to be unarchived on the compute machines.
可以尝试:
yarn ConfigurationPrinter -d fuck=Japan | grep fuck #输出为: fuck=Japan
再次提醒:
ToolRunner can be used to run classes implementing Tool interface. It works in conjunction with GenericOptionsParser to parse the generic hadoop command line arguments and modifies the Configuration of the Tool. The application-specific options are passed along without being modified.
ToolRunner和GenericOptionsParser共同来(解析|修改) generic hadoop command line arguments (什么是generic hadoop command line arguments? 比如:yarn command [genericOptions] [commandOptions]
hadoop2.2编程:Tool, ToolRunner, GenericOptionsParser, Configuration的更多相关文章
- hadoop2.2编程:从default mapreduce program 来理解mapreduce
下面写一个default mapreduce 的程序: import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapr ...
- hadoop2.2编程:使用MapReduce编程实例(转)
原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 从网上搜到的一篇hadoop的编程实例,对于初学者真是帮助太大 ...
- hadoop2.2编程:MRUnit测试
引用地址:http://www.cnblogs.com/lucius/p/3442381.html examples: Overview This document explains how to w ...
- hadoop2.2编程:矩阵相乘简单实现
/* matrix-matrix multiplication on Hadoop A x B = C constraint: A, B, C must be of the same size I u ...
- hadoop2.2编程:MRUnit
examples: Overview This document explains how to write unit tests for your map reduce code, and test ...
- hadoop2.2编程:DFS API 操作
1. Reading data from a hadoop URL 说明:想要让java从hadoop的dfs里读取数据,则java 必须能够识别hadoop hdfs URL schema, 因此我 ...
- LPCScrypt, DFUSec : USB FLASH download, programming, and security tool, LPC-Link 2 Configuration tool, Firmware Programming
What does this tool do? The LPC18xx/43xx DFUSec utility is a Windows PC tool that provides support f ...
- hadoop2.2编程: SequenceFileWritDemo
import java.io.IOException; import java.net.URI; import org.apache.hadoop.fs.FileSystem; import org. ...
- Hadoop2.2编程:新旧API的区别
Hadoop最新版本的MapReduce Release 0.20.0的API包括了一个全新的Mapreduce JAVA API,有时候也称为上下文对象. 新的API类型上不兼容以前的API,所以, ...
随机推荐
- 2016ACM竞赛训练暑期课期末考试 a题
描述 给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合. 输入 第一行是一个正整数n(n<=600).第二行是n个不同的整数,相邻两个整数之间用单个空格隔开. ...
- 在Linux系统下安装大于mysql5.5版本的数据库
linux下mysql 5.5的安装方法: 1.安装所需要系统库相关库文件 gcc等开发包,在安装linux系统的时候安装. 2.创建mysql安装目录 # mkdir -p /usr/lo ...
- Poj 1017 / OpenJudge 1017 Packets/装箱问题
1.链接地址: http://poj.org/problem?id=1017 http://bailian.openjudge.cn/practice/1017 2.题目: 总时间限制: 1000ms ...
- Jquery-Mobile滚动事件
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> < ...
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- [C#]获取一年中是第几个星期
关键代码: /// <summary> /// 获取日期是一年中第几个星期 /// </summary> /// <param name="date" ...
- (转载)Delphi开发经验谈
Delphi开发经验谈 开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件. ...
- Word分栏
情景描述 Word分栏在小论文的撰写过程中是很常用的技术.但是,我们经常会遇到很难过的情况: 一段文字本来是连续分布的,可是当选择了分两栏 之后,开始部分在左边一栏,中间在右边一栏. ...
- STM32之定时器
一.定时器简介 1.时钟来源 2.定时器结构(以基本定时器为例) 二.基本定时器的编程方法 1.基本定时器的寄存器 2.例程 /** * @brief 定时器6的初始化,定时周期0.01s * @pa ...
- 10.MVC框架开发(Ajax应用)
1.MVC自带的Ajax应用, 使用步骤: 第一步,引入js框架 <script src="../../Scripts/jquery-1.4.4.js" type=" ...