整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

5.4.2测试驱动程序

hadoop 小红牛 7℃ 0评论

除了灵活的配置选项可以使应用程序实现Tool,还可以插入任意Configuration来增加可测试性。可以利用这点来编写测试程序,它将利用本地作业运行器在已知的输《入数据上运行作业,借此来检査输出是否满足预期。

要实现这个目标,有两种方法。第一种方法是使用本地作业运行器,在本地文件系统的测试文件上运行作业。范例5-11的代码给出了一种思路。

范例5-11•这个MaxTemperatureDriver测试使用了一个正在运行的本地作业运行器

gTest

public void test() throws Exception {

Configuration conf = new Configuration(); conf.set("fs.default.name", "file:///"); conf.set("mapred.job.tracker", "local");

 

Path input = new Path("input/ncdc/micro"); Path output = new Path("output");

FileSystem fs = FileSystem.getLocal(conf); fs.delete(output, true); // delete old output

MaxTemperatureDriver driver = new MaxTemperatureDriver(); driver.setConf(conf);

int exitCode = driven.run(new String[] { input.toString(), output.toStning() }); assertThat(exitCode, is(0));

checkOutput(conf, output);

测试代码明确设置fs.default.namemapVed.job.tracker,所以,它

使用的是本地文件系统和本地作业运行器。随后,通过其Tool接口在少数已知数据上运行MaxTemperatureDriver。最后,Check0utput()方法被调用

以逐行对比实际输出与预期输出。

测试驱动程序的第二种方法是使用一个mini集群来运行它。Hadoop有一组测试类,名为MiniDFSCluster、MiniMRClusterMiniYARNCluster

它以程序方式创建正在运行的集群。不同于本地作业运行器,它们允许在整个HDFSMapReduce机器上运行运行测试。注意,mini集群上的tasktracker启动不同的JVM来运行任务,这会使调试更困难。

mini集群广泛应用于Hadoop自带的自动测试包中,但也可以用于测试用户代码。HadoopClusterMapReduceTestCase抽象类提供了一个编写此类测试的基础,它的setUp()和tearDown()方法可处理启动和停止运行中的HDFSMapReduce集群的细节,同时产生一个合适的被配置为一起工作的配置对象。子类只需要得到HDFS中的数据(可能从本地文件中复制得到),运行MapReduce作业,然后确认输出是否满足要求。参见本书示例代码中的MaxTemperatureDriverMiniTest类。

这样的测试是回归测试,暴一个非常有用的输入边界用例和相应的期望结果的资源库。随着测试用例的增加,简单将其加入输入文件,然后更新相应输出即可。

转载请注明:全栈大数据 » 5.4.2测试驱动程序

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址