MRUnit MapReduce单元测试框架

程序名称:MRUnit

授权协议: Apache

操作系统: 跨平台

开发语言: Java

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了。

MRUnit包含四种
Driver:MapDriver,ReduceDriver,MapReduceDriver,PipelineMapReduceDriver。可以
根据自己的需要选择合适的Driver。

给出一个Reduce的很简单例子,Reduce的逻辑就是把Value中的各个值相加。

public class ExtractKeywordTest {

private Reducer reducer;

private ReduceDriver reduceDriver;

@Before

public void setUp() throws Exception {

reducer = new ExtractKeywordAcookie.Reduce();

reduceDriver = new ReduceDriver(reducer);

}

@Test

public void testReduce() {

List values = new ArrayList();

values.add(new Text(1.0_0.1));

values.add(new Text(2.0_0.2));

values.add(new Text(3.0_0.3));

reduceDriver.withInput(new Text(20100106_00_IBM), values)

.withOutput(new Text(20100106_00_IBM_6.00_0.60_), null)

.runTest();

}

MRUnit 官网

http://mrunit.apache.org/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐