4、结果的校验:TeraValidate
TeraSort还带有一个校验程序,来检验排序输出结果是否是有序的。TeraValidate是一个简单的Map Reduce作业,大家看看Mapper和Reducer就好了。
执行TeraValidate的命令是:
bin/hadoop jar hadoop-0.19.2-examples.jar teravalidate /terasort/output1TB /terasort/validate1TB |
如果有错误,log记录会放在输出目录里。
需要一提的是TeraValidate的作业配置里有这么一句:
job.setLong("mapred.min.split.size", Long.MAX_VALUE); |
它用来保证每一个输入文件都不会被split,又因为TeraInputFormat继承自FileInputFormat,所以TeraValidate运行mapper的总数正好等于输入文件的个数。
5、TeraSort与hadoop测试
TeraSort巧妙的利用了Hadoop的MapReduce机制来实现了Sort的目的,与Hadoop机制的完美结合也许是它优异排序成绩的一个重要原因。而也正因为如此,我们可以在集群上利用TeraSort来测试Hadoop,它将具有很高的测试利用价值。
我稍微总结下,可以用TeraSort来测试的场景:
● 在不同版本Hadoop上运行TeraSort,使用相同的配置参数,来进行正确性对比测试
● 在不同版本Hadoop上运行TeraSort,使用相同的配置参数,来进行性能对比测试
● 在相同版本Hadoop上运行TeraSort,使用不同的配置参数,进行性能对比测试,发现问题
尤其是第三项,可以衍生许许多多的测试用例;也可以利用第三项来作为Hadoop作业调优的依据。
TeraSort只是一个小工具,比起生产应用作业,可能是微不足道了。但一个小工具,如果能够挖掘到底,背后也会有大价值;尤其对测试来讲,如果能够对背景知识有更多的了解,一个小工具可以转换成众多方便且有价值的测试用例;并且,如果能对一个小工具举一反三,也能够为其他地方的测试提供价值。