`
jessezhang1981
  • 浏览: 41355 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

chp5_MapReduce应用开发_20111011

阅读更多

 

MapReduce应用开发

1.        MapReduce程序开发步骤

编写map 和 reduce 程序–> 单元测试 -> 编写驱动程序进行验证-> 本地数据集调试 ->  部署到集群运行

 

用到的工具:

Junit、Mockito、Ant

 

2.        使用Configuration

关键点:

1、  Configuration类可以加载配置文件,包括系统的和自定义的

2、  addResource方法后面的配置文件会覆盖前面的

3、  配置文件的几个特性:name、value、description、final、${} 引用

4、  系统属性(System.setProperty)中的优先级高于源文件中的优先级

代码:

其中,添加配置文件最好使用 Path对象的方法,否则会找不到配置文件。注意黄色背景内容

 

public static void main(String[]args) {

       // TODO Auto-generatedmethod stub

 

       String baseDir = Thread.currentThread().getContextClassLoader()

                .getResource("").getPath().substring(1)+ "demo/chp5/conf-1.xml";

       String fileStr = newFile(baseDir).getAbsolutePath();  

       Path filePath = newPath(baseDir);

       System.out.println("filePath="+filePath);

 

       Configuration conf = new Configuration();

       conf.addResource(filePath);

       //conf.addResource("conf-2.xml");    //后面添加的会覆盖前面的

 

       System.out.println(conf.get("color"));

       System.out.println(conf.get("fs.default.name"));

       }

 

3.        环境准备

1、  尽量保证运行和程序分离,也就是运行环境、运行程序、运行数据、配置文件之间的分离存放。

2、  Hadoop.job.ugi (用户标识)

 

辅助类:GenericOptionsParser,Tool 和 ToolRunner

         GenericOptionsParser:解释常用命令选项

         Tool接口,ToolRunner:运行应用程序,内部调用GenericOptionsParser

 

         通过上面的方式,构建一个任务的执行框架,代码样例如下:

     public classConfigurationPrinter extends Configured implements Tool {

 

  //静态构造函数

  static{

 

       Configuration.addDefaultResource("hdfs-default.xml");

  }

  /* (non-Javadoc)

   * @seeorg.apache.hadoop.util.Tool#run(java.lang.String[])

   */

  @Override

  public int run(String[] arg0) throws Exception{

       // TODO Auto-generated method stub

      

       Configuration conf = getConf();

       for(Entry<String,String> entry :conf){

            System.out.printf("%s=%s\n",entry.getKey(),entry.getValue());

       }

       return 0;

  }

  /**

   * @paramargs

   * @throwsException

   */

  public static void main(String[] args) throwsException {

       // TODO Auto-generated method stub

       int exitCode = ToolRunner.run(newConfigurationPrinter(), args);

       System.exit(exitCode);

  }

 

}

 

4.        程序开发及测试

a)        编写单元测试

使用Mockito框架模拟进行测试。

b)       运行的代码框架包括:

驱动程序:XXXDriver,运行的主程序

Mapper:XXXMapper,mapper的程序

Reducer:XXXReducer,reducer的程序

-------------------------------------------------------------------------------------------------------------------

 

作者:CNZQS|JesseZhang  个人博客:CNZQS(http://www.cnzqs.com)

版权声明:除非注明,文章均为原创,可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 

--------------------------------------------------------------------------------------------------------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics