MapReduce编程实战之“调试”和"调优"


本篇内容


在上一篇的“初识”环节,我们已经在本地和Hadoop集群中,成功的运行了几个MapReduce程序,对MapReduce编程,已经有了最初的理解。

在本篇文章中,我们对MapReduce编程进行进一步的了解,包括:配置API、辅助类、调试手段、调优手段。

总体来说,我个人的理解是:

(1)本地开发阶段,对于Eclipse开发MapReduce程序来说,是不需要任何插件的,和开发普通的Java程序是一样的,通过DEBUG和单元测试排错;

(2)Hadoop环境测试阶段,也比较困难或者说比较麻烦进行远程调试,经常做的是打印语句,看日志。


配置API和辅助类


配置API


一个Configuration类的实例,代表配置属性及其取值的一个集合。maven项目的src/main/resources下有配置文件conf.xml,内容如下:

<?xml version="1.0"?>
<configuration>
  <property>
    <name>color</name>
    <value>yellow</value>
    <description>Color</description>
  </property>
  <property>
    <name>size</name>
    <value>10</value>
    <description>Size</description>
  </property>
  <property>
    <name>weight</name>
    <value>heavy</value>
    <final>true</final>
    <description>Weight</description>
  </property>
  <property>
    <name>size-weight</name>
    <value>${size},${weight}</value>
    <description>Sizeandwelght</description>
  </property>
</configuration>

如下代码,可以读取配置文件的内容:

import org.apache.hadoop.conf.Configuration;

public class ConfTest {
	public static void main(String[] args) {
		Configuration conf = new Configuration();
		conf.addResource("conf.xml");
		//注意:系统属性的优先级高于源文件中设置的属性,前提是size在conf.xml中有设置,否则就是null了
		//对于这样写的,也可以用JVM参数 -Dproperty=value进行重新设置
		System.setProperty("size", "15");	
		
		System.out.println(conf.getInt("size", 0));	// 输出10
		System.out.println(conf.get("weight"));
		System.out.println(conf.get("size-weight"));	//输出15,heavy
	}
}

辅助类GenericOptionsParser/Tool/ToolRunner


GenericOptionsParser是一个类,用来解释常用的Hadoop命令行选项,根据需要,为Configuration对象设置相应的取值。通常不直接使用它,而是使用继承自它的接口Tool:实现Tool接口,通过ToolRunner来运行程序,ToolRunner内部调研GenericOptionsParser,如下:


                
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值