Hadoop单元测试及配置调试

1. 单元测试

2. 配置调试

在使用hadoop运行程式时,可以加上选项,例如指定配置文件或多定义几个变量,例如:

hadoop fs -ls # 不带选项
hadoop fs -D color=red -ls # 带上选项-D color=red

这就定义了一个新的属性color和值red,虽然这个属性没有意义,仅用于演示加选项的情况。常用的选项:

-D property=value 新增一个属性和值,该属性的优先级最高,将覆盖可能已有的属性值
-conf filename 指定hadoop的配置文件,利用该选项可以切换不同的配置文件
-fs uri 指定默认HDFS的地址,等价于-D fs.default.name=uri

更多的选项输入:

hadoop fs

查看帮助信息,一般在最后面显示。

编程获得参数

在旧的Hadoop版本中,採用继承Configured和实现Tool接口的方式完成对选项的读取和设置;新的API接口已不採用这种形式。获得所有选项的属性名和值的例子 ConfigurationPrinterNew.java:

import java.util.Map.Entry;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.GenericOptionsParser;

/**
 * 2011年11月16日 上午11:26:23
 * 运行: hadoop ConfigurationPrinterNew -D color=red input output
 */
public class ConfigurationPrinterNew {

    /**
     * 实现该接口,获得配置文件的值
     */

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        // conf.addResource("hdfs-default.xml"); // 添加额外的配置文件

        // otherArgs包含了除了选项之外的其它参数
        String[] otherArgs = new GenericOptionsParser(conf, args)
                .getRemainingArgs();

        // 打印选项属性及值
        for (Entry<String, String> entry : conf) {
            System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());
        }

        // 打印otherArgs
        System.out.println("=============================================");
        for (String arg : otherArgs) {
            System.out.print(arg);
            System.out.print(' ');
        }
        System.out.println();

    }

}

程序中注释的运行参数,选项参数要写在其它参数之前。程序运行结果应该是:在若干个选项中有出现color=red,最后其它参数将出现input output。

文档更新时间: 2018-11-10 19:07   作者:nick