1、跨集群拷贝或者大数据量集群内拷贝
在测试过程中,可能需要从摸个集群或者某个目录拷贝大量测试数据,若是先把数据拷贝到本地,在上传到目的集群,将会非常的耗时间,这时,可以考虑用distcp命令。
DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。
hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo这条命令会把nn1集群的/foo/bar目录下的所有文件或目录名展开并存储到一个临时文件中,这些文件内容的拷贝工作被分配给多个map任务, 然后每个TaskTracker分别执行从nn1到nn2的拷贝操作。注意DistCp使用绝对路径进行操作。
由于distcp无法指定两个用户名和密码,因此,拷贝的源和目的集群的用户名和密码必须一致,且该用户名密码在源集群具有读权限,在目的集群具有写权限。
2、单机模拟分布式测试功能点
在测试部分功能点时或者内存不超过800M的性能时,可能会考虑到先用单机模拟分布式上运行进行测试:
cat input | mapper | sort | reducer > output
在用单机模拟分布式测试时,有以下注意点:
1)Streaming的输入是按行划分的文本,可以使用cat input即可;但是BiStreaming是“”的格式,所以在输入前要进行一定的处理;常用方法是:
cat input | ./ reader |./mapper |./ reducer >output
reader程序负责将文件转化为mapper程序能够识别的keyLength, key, valueLength, value的二进制格式。当输入已经是sequencefile格式时,也不需要reader。
2)当Mapper或Reducer中使用到hadoop的环境变量时,单机模拟时,需要先修改这些环境变量或者在运行时设置这些环境变量的值。
3、分布式程序和单机程序结果的对比
在校验分布式程序结果时,我们常常使用的方法是,实现一个单机版的程序,然后diff单机版和分布式版本的运行结果。
由于hadoop对于输入文件的切分,以及map后的reduce分桶。在和单机版做结果对比时,需要考虑到输入行乱序对于结果的影响。若输入行的乱序对结果的正确性没有影响。那在做分布式的结果和本地单机模拟的结果diff时,一定要先sort,然后在diff。
4、总控脚本的测试
分布式程序虽然以map-reduce程序为主体,但每一轮map-reduce任务都是在单机用脚本进行任务提交和启动,大多数项目都包含多轮map-reduce 任务。因此,各轮任务之间的调度协调和项目的系统运行就需要总控脚本来完成。
在测试总控脚本的时候,用-x参数运行,并把运行log重定向到输出文件。运行介绍后,即使结果正确,也需要看看运行脚本的log,很可能发现一些意想不到的问题。
如需了解更多测试技术信息请关注:https://www.duoceshi.cn/jswz/深圳多测师软件与技术服务有限公司
Copyright © 2016-2021 深圳多测师软件与技术服务有限公司 版权所有
本站部分文章源自于网络,如有侵犯您的版权,请联系删除