Hadoop编写调试MapReduce程序详解(2)

4进行单元测试:

编写完程序后需要进行单元测试,分别对Map函数和Reduce函数进行测试,功能正确后,就可以在小规模集群上进行测试,测试成功后就可以在Hadoop集群上进行运行。这里先不介绍单元测试的知识,后面再专门介绍如何在Hadoop中使用MRUnit进行单元测试。MRUnit是由Couldera公司开发的专门针对 Hadoop中 编写MapReduce单元测试的框架,基本原理是JUnit4和 EasyMock。MR就是Map和Reduce的缩写。MRUnit框架非常精简,其核心的单元测试依赖于JUnit。而且MRUnit实现了一套 Mock对象来控制OutputCollector的操作,从而可以拦截OutputCollector的输出,和我们的期望结果进行比较,达到自动断言 的目的。

有了MRUnit,对MR程序做重构的时候,只要明确输入和输出,就可以写出单元测试,并且在放到群集校验前进行试验,从而节省时间和资源,也 能更快的定位到问题。而进行重构的话,只要写得足够详细的单元测试都是绿色的话,那么基本就可以保证在群集运行的结果也是正常的。

MRUnit不在Apache标准的Hadoop的发行版中,而是在Couldera公司的增强版本中hadoop- 0.20.1+133.tar.gz的contrib\mrunit\hadoop-0.20.1+169.56-mrunit.jar,已经贴在附件 中。只要把它和Junit4的jar添加到Hadoop程序项目的classpath中,就可以使用MRUnit了。

4准备测试数据:

4.1建立一个text文档,test.text内容如下

china2013inbeijing023isok
china2013inbeijing024isok
china2013inbeijing+25isok
china2013inbeijing026isok
china2013inbeijing027isok
china2013inbeijing028isok
china2013inbeijing029isok
china2013inbeijing030isok
china2013inbeijing031isok
china2013inbeijing132isok
china2013inbeijing033isok
china2013inbeijing034isok

4.2在HDFS的工作目录下建立一个文件夹input,把test.text上传到input目录里:

4.3配置运行参数:

Hadoop编写调试MapReduce程序详解

注意在程序运行之前output文件夹是不存在的。hdfs://localhost:9000/user/XXX/input/test.text是输入文件的绝对目录。

4.4运行:

Hadoop编写调试MapReduce程序详解

运行结果:

Hadoop编写调试MapReduce程序详解

Hadoop编写调试MapReduce程序详解

Hadoop编写调试MapReduce程序详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3bb5e32dc35743632015246fb9f87945.html