HADOOP测试常见问题和测试方法

发表于:2012-8-02 10:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  二、常用测试方法

  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是“<key-length><key><value- length><value>”的格式,所以在输入前要进行一定的处理;常用方法是:

  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,很可能发现一些意想不到的问题。

33/3<123
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号