分享

使用MRUnit实现MapReduce程序的单元测试

问题导读:
1.怎样自动化的对MR程序进行测试 ?
2.MRUnit属于哪个公司产品?
3.MRUnit是什么?
4.MRUnit能干什么?
5.MRUnit包含几种Driver?




Hadoop的MapReduce程序的测试,一直比较麻烦。因为不方便抽取出来,作为独立的Junit测试。所以很多时候,我们都是写一个Main函数,然后在里面手工调用Map或者Reduce,用System.out.println打印出结果,人眼测试,而且还要判断OutputCollector是否为空,不然直接Main调用还会抛NullPointerException。
这样最大的弊端,是无法实现自动化的断言判断,达到测试驱动和检查的目的。那么对程序的任何改动,都需要放到Hadoop集群上,跑个十几分钟才能肯定到底对不对。我们需要一个更快的方法,能够方便的自动化的对MR程序进行测试,从而达到测试驱动和敏捷开发的状态。


What’s MRUnit:
MRUnit是由Couldera公司开发的专门针对Hadoop中编写MapReduce单元测试的框架,基本原理是JUnit4和EasyMock。MR就是Map和Reduce的缩写。MRUnit框架非常精简,其核心的单元测试依赖于JUnit。而且MRUnit实现了一套Mock对象来控制OutputCollector的操作,从而可以拦截OutputCollector的输出,和我们的期望结果进行比较,达到自动断言的目的。

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


How MRUnit:
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。


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




  1. public class ExtractKeywordTest {
  2. private Reducer<Text, Text, Text, Text> reducer;
  3. private ReduceDriver<Text, Text, Text, Text> reduceDriver;
  4. @Before
  5. public void setUp() throws Exception {
  6. reducer = new ExtractKeywordAcookie.Reduce();
  7. reduceDriver = new ReduceDriver<Text, Text, Text, Text>(reducer);
  8. }
  9. @Test
  10. public void testReduce() {
  11. List<Text> values = new ArrayList<Text>();
  12. values.add(new Text(1.0_0.1));
  13. values.add(new Text(2.0_0.2));
  14. values.add(new Text(3.0_0.3));
  15. reduceDriver.withInput(new Text(20100106_00_IBM), values)
  16. .withOutput(new Text(20100106_00_IBM_6.00_0.60_), null)
  17. .runTest();
  18. }
复制代码




已有(3)人评论

跳转到指定楼层
lavimer 发表于 2015-1-9 15:29:23
楼主可否留个demo,初学者使用MRUnit表示好多bug,调不过来。1340458776@qq.com。谢谢。
回复

使用道具 举报

不期而遇 发表于 2017-5-7 12:16:48
老哥,附件呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条