CN103176903A - MapReduce分布式系统程序的测试方法及设备 - Google Patents

MapReduce分布式系统程序的测试方法及设备 Download PDF

Info

Publication number
CN103176903A
CN103176903A CN2013100774050A CN201310077405A CN103176903A CN 103176903 A CN103176903 A CN 103176903A CN 2013100774050 A CN2013100774050 A CN 2013100774050A CN 201310077405 A CN201310077405 A CN 201310077405A CN 103176903 A CN103176903 A CN 103176903A
Authority
CN
China
Prior art keywords
script
parameter
environment variable
variable parameter
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013100774050A
Other languages
English (en)
Other versions
CN103176903B (zh
Inventor
杨斐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201310077405.0A priority Critical patent/CN103176903B/zh
Publication of CN103176903A publication Critical patent/CN103176903A/zh
Application granted granted Critical
Publication of CN103176903B publication Critical patent/CN103176903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种MapReduce分布式系统程序的测试方法及设备。本发明实施例通过利用接收到的MapReduce启动命令中所包含的启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,以及进一步获得所述MapReduce分布式系统相关的第二环境变量参数,使得能够利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,由于通过运行第一脚本,获得待测试程序相关的第一环境变量参数,再结合利用所获得的MapReduce分布式系统相关的第二环境变量参数,运行第二脚本,使得无需搭建基于HDFS的MapReduce分布式集群环境即可运行所述待测试程序得以实现,从而降低了测试成本。

Description

MapReduce分布式系统程序的测试方法及设备
【技术领域】
本发明涉及通信技术,尤其涉及一种MapReduce分布式系统程序的测试方法及设备。
【背景技术】
近年来,随着宽带网络技术与并行计算理论的快速发展,一种更简化的分布式系统即映射和汇总(MapReduce)分布式系统应运而生,以为多种应用提供服务,例如,为搜索引擎提供服务。在MapReduce分布式系统,也可以称为MapReduce分布式集群,例如,Hadoop系统,中,一个数据处理过程称为一个作业(Job),Job提交之后,将待处理数据分为N份,每份待处理数据由一个映射(Map)任务进行处理,Map任务运行在该MapReduce分布式系统中的一个节点设备上,一个节点设备上可以运行一个或多个Map任务;所有Map任务的输出结果由汇总(Reduce)任务进行汇总,输出对应的结果。其中,Hadoop是阿帕奇软件基金下的一个开源项目。
然而,在MapReduce分布式系统中,对所运行的程序即MapReduce分布式系统程序进行测试,往往需要搭建基于Hadoop分布式文件系统(HadoopDistributed File System,HDFS)的MapReduce分布式集群环境,从而导致了测试成本的增加。
【发明内容】
本发明的多个方面提供一种MapReduce分布式系统程序的测试方法及设备,用以降低测试的成本。
本发明的一方面,提供一种MapReduce分布式系统程序的测试方法,包括:
接收MapReduce启动命令,所述MapReduce启动命令用于启动MapReduce分布式系统的待测试程序,所述MapReduce启动命令中包含启动参数;
利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数;
获得所述MapReduce分布式系统相关的第二环境变量参数;
利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获得所述MapReduce分布式系统相关的第二环境变量参数,包括:
利用集群配置文件,运行第三脚本,以获得所述第二环境变量参数;或者
根据预先配置的配置信息,获得所述第二环境变量参数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第一脚本包括local脚本和run.sh脚本;所述利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,包括:
利用所述启动参数,运行local脚本;其中,所述local脚本用于检查所述启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置文件、所述待测试程序和所述MapReduce分布式系统的系统程序;
运行run.sh脚本;其中,所述run.sh脚本用于解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置文件中;所述run.sh脚本还用于根据所述第一环境变量参数中的mapper参数和/或reducer参数,执行Map任务和/或Reduce任务;其中,根据所述mapper参数,执行Map任务,包括:
根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第三脚本包括replace_conf.sh脚本;所述利用所述启动参数,运行第三脚本,以获得所述第二环境变量参数,包括:
利用所述集群配置文件,运行replace_conf.sh脚本;其中,所述replace_conf.sh脚本用于读取所述集群配置文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第二脚本包括env.sh脚本和localrunner.py脚本;所述利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,包括:
运行env.sh脚本;其中,所述env.sh脚本用于对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载;
运行localrunner.py脚本;其中,所述localrunner.py脚本用于生成控制信息和执行信息,以及利用套接字将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述工作目录下的文件还包括用于进行性能测试的动态库文件;所述方法还包括:
根据所述第一环境变量参数中的性能测试参数,利用所述动态库文件,对所述待测试程序进行性能测试。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
根据所述作业配置文件中的debug参数,对所述待测试程序进行调试。
本发明的另一方面,提供一种MapReduce分布式系统程序的测试设备,包括:
接收单元,用于接收MapReduce启动命令,所述MapReduce启动命令用于启动MapReduce分布式系统的待测试程序,所述MapReduce启动命令中包含启动参数;
运行单元,用于利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数;
获得单元,用于获得所述MapReduce分布式系统相关的第二环境变量参数;
测试单元,用于利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获得单元,具体用于
利用集群配置文件,运行第三脚本,以获得所述第二环境变量参数;或者
根据预先配置的配置信息,获得所述第二环境变量参数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第一脚本包括local脚本和run.sh脚本;所述运行单元,具体用于
利用所述启动参数,运行local脚本;其中,所述local脚本用于检查所述启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置文件、所述待测试程序和所述MapReduce分布式系统的系统程序;以及
运行run.sh脚本;其中,所述run.sh脚本用于解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置文件中;所述run.sh脚本还用于根据所述第一环境变量参数中的mapper参数和/或reducer参数,执行Map任务和/或Reduce任务;其中,根据所述mapper参数,执行Map任务,包括:
根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第三脚本包括replace_conf.sh脚本;所述获得单元,具体用于
利用所述集群配置文件,运行replace_conf.sh脚本;其中,所述replace_conf.sh脚本用于读取所述集群配置文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第二脚本包括env.sh脚本和localrunner.py脚本;所述测试单元,具体用于
运行env.sh脚本;其中,所述env.sh脚本用于对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载;以及
运行localrunner.py脚本;其中,所述localrunner.py脚本用于生成控制信息和执行信息,以及利用套接字将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述工作目录下的文件还包括用于进行性能测试的动态库文件;所述测试单元,还用于
根据所述第一环境变量参数中的性能测试参数,利用所述动态库文件,对所述待测试程序进行性能测试。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述设备还包括调试单元,用于
根据所述作业配置文件中的debug参数,对所述待测试程序进行调试。
由上述技术方案可知,本发明实施例通过利用接收到的MapReduce启动命令中所包含的启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,以及进一步获得所述MapReduce分布式系统相关的第二环境变量参数,使得能够利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,由于通过运行第一脚本,获得待测试程序相关的第一环境变量参数,再结合利用所获得的MapReduce分布式系统相关的第二环境变量参数,运行第二脚本,使得无需搭建基于HDFS的MapReduce分布式集群环境即可运行所述待测试程序得以实现,从而降低了测试成本。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的MapReduce分布式系统程序的测试方法的流程示意图;
图2为本发明另一实施例提供的MapReduce分布式系统程序的测试设备的结构示意图;
图3为本发明另一实施例提供的MapReduce分布式系统程序的测试设备的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本发明一实施例提供的MapReduce分布式系统程序的测试方法的流程示意图。
101、接收MapReduce启动命令,所述MapReduce启动命令用于启动MapReduce分布式系统的待测试程序,所述MapReduce启动命令中包含启动参数。
102、利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数。
103、获得所述MapReduce分布式系统相关的第二环境变量参数。
104、利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序。
需要说明的是,101~104的执行主体可以是一台测试设备,即单机设备。
这样,通过利用接收到的MapReduce启动命令中所包含的启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,以及进一步获得所述MapReduce分布式系统相关的第二环境变量参数,使得能够利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,由于通过运行第一脚本,获得待测试程序相关的第一环境变量参数,再结合利用所获得的MapReduce分布式系统相关的第二环境变量参数,运行第二脚本,使得无需搭建基于HDFS的MapReduce分布式集群环境即可运行所述待测试程序得以实现,从而降低了测试成本。
具体地,所述第一脚本可以包括但不限于本地化(local)脚本和触发执行(run.sh)脚本,本实施例对此不进行限定。
相应地,在102中,测试设备具体可以利用所述启动参数,运行local脚本;其中,所述local脚本用于检查所述启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置文件、所述待测试程序和所述MapReduce分布式系统的系统程序(例如,StreamingProcess文件、BistreamingProcess文件或libhce.so文件等)。可以理解的是,所述MapReduce启动命令具体可以调用Java接口、文本处理(Streaming)接口、二进制文本处理(Bistreaming)接口或HCE(Hadoop C++ Extension)接口等接口,进行传递。因此,local脚本则可以包括多种语言编译的脚步稳健,例如,C++编译的hcelocal脚本等。
然后,所述测试设备则可以进一步运行run.sh脚本;其中,所述run.sh脚本用于解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置(jobconf)文件中。所述run.sh脚本还用于根据所述第一环境变量参数中的mapper参数和/或reducer参数,执行Map任务和/或Reduce任务;其中,根据所述mapper参数,执行Map任务,可以包括执行如下操作:
根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片(spilt)。
例如,所述启动参数中可以包含但不限于下列参数中的至少一项:
映射(mapper)参数,Map阶段执行的运行命令;
汇总(reducer)参数,Reduce阶段执行的运行命令;
输入(input)参数,输入数据地址;
输出(output)参数,输出数据地址;
文件(file)参数,指定需要上传的文件地址;
大文件分发(cachearchive)参数,指定分发的大文件;以及
jobconf参数或者D参数,指定运行时需要的jobconf信息。
相应地,所述第一环境变量参数也包括相应的环境变量参数。
例如,streaming待测试程序的启动命令如下
./hadoop   hcelocal   -mapper   ./StreamingProcess-reducer         ./StreamingProcess       -file/home/yangfei/code/LocalRuner/bin/StreamingProcess      -jobconfstream.map.streamprocessor=cat-jobconfstream.reduce.streamprocessor=cat      -input/home/yangfei/code/LocalRuner/input/part-00000-output/output/test
或者再例如,hce待测试程序的启动命令如下:
./hadoop  hcelocal  -mapper  ./hce-text-sort  -file/home/yangfei/code/LocalRuner/bin/hce-text-sort  -reducer  ./hce-text-sort-input/home/yangfei/code/LocalRuner/input/part-00000-output/output/test
在指定-input运行参数时,还提供了这样一个附带功能:可以通过-input/home/data/inputfile来指定多个输入文件。
例如,指定多个输入文件的hce待测试程序的启动命令如下:
./hadoop  hcelocal  -mapper  ./hce-text-sort  -file/home/yangfei/code/LocalRuner/bin/hce-text-sort  -reducer  ./hce-text-sort-input/home/yangfei/code/LocalRuner/input/part-00000/home/yangfei/code/LocalRuner/input/part-00001/home/yangfei/code/LocalRuner/input/part-00002-output/output/test
可选地,在本实施例的一个可能的实现方式中,在103中,测试设备还可以根据预先配置的配置信息,获得所述第二环境变量参数。
可选地,在本实施例的一个可能的实现方式中,在103中,测试设备可以利用集群配置文件即.xml文件,运行第三脚本,以获得所述第二环境变量参数。
具体地,所述第三脚本可以包括但不限于配置文件替换(replace_conf.sh)脚本,本实施例对此不进行限定。
相应地,测试设备利用所述启动参数,运行第三脚本,以获得所述第二环境变量参数,具体可以执行如下操作:
所述测试设备具体可以利用所述集群配置文件,运行replace_conf.sh脚本;其中,所述replace_conf.sh脚本用于读取所述集群配置文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
例如,所述集群配置文件可以位于测试设备本地,具体地可以包括如下内容:
14<property>
15  <name>fs.default.name</name>
16  <value>hdfs://yx-dpfqa-a102.yx01.baidu.com:54310</value>
17  <description>The name of the default file system.A URI whose
18  scheme and authority determine the FileSystem implementation.The
19  uri's scheme determines the config property(fs.SCHEME.impl)naming
20  the FileSystem implementation class.The uri's authority is used to
21  determine the host,port,etc.for a filesystem.</description>
22</property>
测试设备运行所述replace_conf.sh脚本,可以读取这个内容,在jobconf文件中把原有的
fs.default.name=hdfs://db-testing-dpwk18.db01.baidu.com:54310,修改为
fs.default.name=hdfs://yx-dpfqa-a102.yx01.baidu.com:54310。
具体地,所述第二脚本可以包括但不限于配置文件加载(env.sh)脚本和单机执行驱动程序(包含服务端逻辑,localrunner.py)脚本,本实施例对此不进行限定。
相应地,在104中,测试设备具体可以运行env.sh脚本;其中,所述env.sh脚本用于对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载。
然后,所述测试设备则可以运行localrunner.py脚本;其中,所述localrunner.py脚本用于生成控制信息和执行信息,以及利用套接字将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理。
为使得本发明实施例提供的方法更加清楚,下面将以如下启动命令作为举例。假设MapReduce启动命令为
$HADOOP_HOME/bin/hadoop hcelocal
-mapper./hce-text-sort
-file/home/yangfei/code/LocalRuner/bin/hce-text-sort
-reducer./hce-text-sort
-input/home/yangfei/code/LocalRuner/input/part-00000
-output/output/test
具体地,该MapReduce启动命令的执行可以分为三个部分,即第一部分、第二部分和第三部分。
第一部分
测试设备接收到该启动命令,获知执行作业类型为hce,则利用所述启动参数,运行hcelocal脚本,即检查该启动命令中所包含的启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置(jobconf)文件、所述待测试程序和所述MapReduce分布式系统的系统程序;在该工作目录下,利用source./run.sh"$",调用run.sh脚本。
可以理解的是,测试设备准备工作目录,即为在当前目录下建立一个.local/run的隐藏文件夹,将作业配置(jobconf)文件、所述待测试程序和所述MapReduce分布式系统的系统程序等文件复制(copy)到该目录下。
这一部分中,因为单机环境中只运行一个任务即Map任务或Reduce任务,所以作业提交、作业调度和任务切分的工作实际是不需要的。以hce单机测试设备为例,只需要完成环境准备工作和C++子进程的启动。对于环境准备工作,在hcelocal脚本中将这部分工作交给改写后的C++端的记录读取程序(RecordWriter)去完成,主要完成工作目录的清理和建立。C++子进程的启动工作通过hce单机测试设备中提供的run.sh脚本启动,在这个脚本中,会解析启动命令中mapper参数、reducer参数和file参数等参数,将file参数中指定的相应文件复制到所建立的工作目录下,执行mapper参数或reducer参数中的执行命令来启动C++子进程。
第二部分
测试设备运行run.sh脚本,即解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置(jobconf)文件中,即所述第一环境变量参数中包含mapper参数、file参数、reducer参数等执行参数;然后,根据所述第一环境变量参数中的mapper参数和reducer参数,按顺序依次执行Map任务和Reduce任务;在执行Map任务和Reduce任务的过程中,利用./replace-conf.sh./jobconf${VALUE},调用replace_conf.sh脚本,以及利用./env.sh,调用env.sh脚本,利用通过python hcelocalrunner.py$MAPPER的方式,调用hcelocalrunner.py脚本。
需要说明的是,根据所述mapper参数,执行Map任务,可以包括执行如下操作:根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片(spilt)。
测试设备运行replace_conf.sh脚本,即读取所述集群配置(xml)文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
测试设备运行env.sh脚本,即对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载,也就是说,将所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数写到该测试设备的内存中。
在这一部分中,因为hce待测试程序在运行过程中需要一些jobconf信息,现有技术中,这些jobconf信息是通过java和C++的套接字(socket)通信来传递的;在单机测试设备中,通过jobconf文件来保存运行HCE待测试程序时所需要的jobconf信息。当用户在HCE待测试程序的MapReduce启动命令中设置了-D或-jobconf选项时,单机测试设备会解析该MapReduce启动命令中的这些设置,并修改jobconf文件,同时还会自动解析hadoop-site.xml文件中的一些默认设置添加到jobconf文件中。在执行run.sh启动一个C++子进程之前,hcelocal脚本在AddUserConf()函数中读取jobconf文件中jobconf信息,并通过TaskContextImpl->setJobConf()方法设置C++子进程的jobconf信息。
第三部分
测试设备运行localrunner.py脚本,即生成控制信息和执行信息,以及利用套接字(socket)将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理
最后,测试设备确认所有的任务执行完毕之后,清理环境。
在这一部分中,所述控制信息和所述执行信息即事件(event)信息可以包括但不限于START_MESSAGE、SET_JOB_CONF、RUN_MAP、RUN_REDUCE、REP_COMMIT、CLOSE和ABORT七种。在hcelocal脚本中,通过提供一个SimBinaryConnection对象来替代BinaryConnection对象的工作,在SimBinaryConnection对象中不再从java端读取event信息,而是自己维护一个m_messageQueue的event队列,在程序运行时,hcelocal脚本会解析hcelocal脚本中的启动参数,来设置m_messageQueue中的event信息。当调用nextEvent()方法时便会从这个event队列的头部取出一个event,从而实现对C++进程执行逻辑的控制。例如,在hcelocal脚本中指定了-mapper参数,那么在执行Map阶段,SimBinaryConnect对象中便会在m_messageQueue队列中依次推送(push)进START_MESSAGE、SET_JOB_CONF、RUN_MAP和REP_COMMIT四个event,从而来模拟在执行Map阶段时,C++进程顺序收到的java端传递过来的event信息这一过程,来控制Map阶段的执行流程。
本实施例中,通过利用接收到的MapReduce启动命令中所包含的启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,以及进一步获得所述MapReduce分布式系统相关的第二环境变量参数,使得能够利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,由于通过运行第一脚本,获得待测试程序相关的第一环境变量参数,再结合利用所获得的MapReduce分布式系统相关的第二环境变量参数,运行第二脚本,使得无需搭建基于HDFS的MapReduce分布式集群环境即可运行所述待测试程序得以实现,从而降低了测试成本。
本发明另一实施例提供了MapReduce分布式系统程序的测试方法,其中,所述测试设备运行run.sh脚本所准备的所述工作目录下的文件,还可以进一步包括用于进行性能测试的动态库文件;相应地,本实施例的MapReduce分布式系统程序的测试方法中,所述测试设备还可以进一步根据所述第一环境变量参数中的性能测试参数,利用所述动态库文件,对所述待测试程序进行性能测试。
具体地,在MapReduce启动命令中所包含的启动参数中,性能测试参数是作为一个可选项存在的。通过设置-jobconf heap_profile=true,–jobconfcpu_profile=true,来开启性能测试功能。例如,在待测试程序的运行过程中,输出内存堆栈(memory heap)信息和cpu堆栈(cpu heap)信息,从而帮助分析在任务执行时的内存使用状况和函数执行时间,从而使得在单机上对待测试程序进行测试时,还可以同时进行性能测试。
例如,./hadoop  hcelocal  –mapper  ./hce-text-sort  –file/home/yangfei/code/LocalRuner/bin/hce-text-sort  –reducer  ./hce-text-sort–input  /home/yangfei/code/LocalRuner/input/part-00000  -output/output/test–jobconf heap_profile=true–jobconf cpu_profile=true
本发明另一实施例提供了MapReduce分布式系统程序的测试方法,本实施例的MapReduce分布式系统程序的测试方法中,所述测试设备还可以进一步根据所述作业配置文件中的debug参数,对所述待测试程序进行调试。
具体地,如果-jobconf debug=gdb,测试设备则可以利用开源调试工具(GNU Symbolic Debugger,GDB),对所述待测试程序进行调试,从而使得在单机上还可以对所述待测试程序进行调试。具体地,所述GDB的详细描述可以参见现有技术中的相关内容,此处不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本发明另一实施例提供的MapReduce分布式系统程序的测试设备的结构示意图。本实施例提供的MapReduce分布式系统程序的测试设备可以包括接收单元21、运行单元22、获得单元23和测试单元24。其中,接收单元21,用于接收MapReduce启动命令,所述MapReduce启动命令用于启动MapReduce分布式系统的待测试程序,所述MapReduce启动命令中包含启动参数;运行单元22,用于利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数;获得单元23,用于获得所述MapReduce分布式系统相关的第二环境变量参数;测试单元24,用于利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序。
需要说明的是,本实施例所提供的MapReduce分布式系统程序的测试设备是一台单机设备。
这样,通过运行单元利用接收单元接收到的MapReduce启动命令中所包含的启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,以及进一步由获得单元获得所述MapReduce分布式系统相关的第二环境变量参数,使得测试单元能够利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,由于通过运行第一脚本,获得待测试程序相关的第一环境变量参数,再结合利用所获得的MapReduce分布式系统相关的第二环境变量参数,运行第二脚本,使得无需搭建基于HDFS的MapReduce分布式集群环境即可运行所述待测试程序得以实现,从而降低了测试成本。
具体地,所述第一脚本可以包括但不限于local脚本和run.sh脚本,本实施例对此不进行限定。
相应地,所述运行单元22,具体可以用于利用所述启动参数,运行local脚本;其中,所述local脚本用于检查所述启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置文件、所述待测试程序和所述MapReduce分布式系统的系统程序(例如,StreamingProcess文件、BistreamingProcess文件或libhce.so文件等);以及运行run.sh脚本;其中,所述run.sh脚本用于解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置文件中;所述run.sh脚本还用于根据所述第一环境变量参数中的mapper参数和/或reducer参数,执行Map任务和/或Reduce任务;其中,根据所述mapper参数,执行Map任务,包括:
根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片。
可以理解的是,所述MapReduce启动命令具体可以调用Java接口、文本处理(Streaming)接口、二进制文本处理(Bistreaming)接口或HCE(HadoopC++ Extension)接口等接口,进行传递。因此,local脚本则可以包括多种语言编译的脚步稳健,例如,C++编译的hcelocal脚本等。
例如,所述启动参数中可以包含但不限于下列参数中的至少一项:
mapper参数,Map阶段执行的运行命令;
reducer参数,Reduce阶段执行的运行命令;
input参数,输入数据地址;
output参数,输出数据地址;
file参数,指定需要上传的文件地址;
cachearchive参数,指定分发的大文件;以及
jobconf参数或者D参数,指定运行时需要的jobconf信息。
相应地,所述第一环境变量参数也包括相应的环境变量参数。
例如,streaming待测试程序的启动命令如下
./hadoop      hcelocal      -mapper      ./StreamingProcess-reducer        ./StreamingProcess        -file/home/yangfei/code/LocalRuner/bin/StreamingProcess        -jobconfstream.map.streamprocessor=cat-jobconfstream.reduce.streamprocessor=cat        -input/home/yangfei/code/LocalRuner/input/part-00000-output/output/test
或者再例如,hce待测试程序的启动命令如下:
./hadoop    hcelocal    -mapper    ./hce-text-sort    -file/home/yangfei/code/LocalRuner/bin/hce-text-sort  -reducer  ./hce-text-sort-input/home/yangfei/code/LocalRuner/input/part-00000-output/output/test
在指定-input运行参数时,还提供了这样一个附带功能:可以通过-input/home/data/inputfile来指定多个输入文件。
例如,指定多个输入文件的hce待测试程序的启动命令如下:
./hadoop    hcelocal    -mapper    ./hce-text-sort    -file/home/yangfei/code/LocalRuner/bin/hce-text-sort   -reducer   ./hce-text-sort-input/home/yangfei/code/LocalRuner/input/part-00000/home/yangfei/code/LocalRuner/input/part-00001/home/yangfei/code/LocalRuner/input/part-00002-output/output/test
可选地,在本实施例的一个可能的实现方式中,所述获得单元23,具体可以用于根据预先配置的配置信息,获得所述第二环境变量参数。
可选地,在本实施例的一个可能的实现方式中,所述获得单元23,具体还可以用于利用集群配置文件即.xml文件,运行第三脚本,以获得所述第二环境变量参数。
具体地,所述第三脚本可以包括但不限于replace_conf.sh脚本,本实施例对此不进行限定。
相应地,所述获得单元23,具体可以用于利用所述集群配置文件,运行replace_conf.sh脚本;其中,所述replace_conf.sh脚本用于读取所述集群配置文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
例如,所述集群配置文件可以位于测试设备本地,具体地可以包括如下内容:
14<property>
15  <name>fs.default.name</name>
16  <value>hdfs://yx-dpfqa-a102.yx01.baidu.com:54310</value>
17  <description>The name of the default file system.A URI whose
18  scheme and authority determine the FileSystem implementation.The
19  uri's scheme determines the config property(fs.SCHEME.impl)naming
20  the FileSystem implementation class.The uri's authority is usedto
21  determine the host,port,etc.for a filesystem.</description>
22</property>
所述获得单元23运行所述replace_conf.sh脚本,可以读取这个内容,在jobconf文件中把原有的
fs.default.name=hdfs://db-testing-dpwk18.db01.baidu.com:54310,修改为
fs.default.name=hdfs://yx-dpfqa-a102.yx01.baidu.com:54310。
具体地,所述第二脚本可以包括但不限于env.sh脚本和localrunner.py脚本,本实施例对此不进行限定。
相应地,所述测试单元24,具体可以用于运行env.sh脚本;其中,所述env.sh脚本用于对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载;以及运行localrunner.py脚本;其中,所述localrunner.py脚本用于生成控制信息和执行信息,以及利用套接字将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理。
为使得本发明实施例提供的方法更加清楚,下面将以如下启动命令作为举例。假设MapReduce启动命令为
$HADOOP_HOME/bin/hadoop hcelocal
-mapper./hce-text-sort
-file/home/yangfei/code/LocalRuner/bin/hce-text-sort
-reducer./hce-text-sort
-input/home/yangfei/code/LocalRuner/input/part-00000
-output/output/test
具体地,该MapReduce启动命令的执行可以分为三个部分,即第一部分、第二部分和第三部分。
第一部分
接收单元接收到该启动命令,运行单元获知执行作业类型为hce,则利用所述启动参数,运行hcelocal脚本,即检查该启动命令中所包含的启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置(jobconf)文件、所述待测试程序和所述MapReduce分布式系统的系统程序;在该工作目录下,利用source./run.sh"$",调用run.sh脚本。
可以理解的是,测试设备准备工作目录,即为在当前目录下建立一个.local/run的隐藏文件夹,将作业配置(jobconf)文件、所述待测试程序和所述MapReduce分布式系统的系统程序等文件复制(copy)到该目录下。
这一部分中,因为单机环境中只运行一个任务即Map任务或Reduce任务,所以作业提交、作业调度和任务切分的工作实际是不需要的。以hce单机测试设备为例,只需要完成环境准备工作和C++子进程的启动。对于环境准备工作,在hcelocal脚本中将这部分工作交给改写后的C++端的RecordWriter去完成,主要完成工作目录的清理和建立。C++子进程的启动工作通过hce单机测试设备中提供的run.sh脚本启动,在这个脚本中,会解析启动命令中mapper参数、reducer参数和file参数等参数,将file参数中指定的相应文件复制到所建立的工作目录下,执行mapper参数或reducer参数中的执行命令来启动C++子进程。
第二部分
运行单元运行run.sh脚本,即解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置(jobconf)文件中,即所述第一环境变量参数中包含mapper参数、file参数、reducer参数等执行参数;然后,根据所述第一环境变量参数中的mapper参数和reducer参数,按顺序依次执行Map任务和Reduce任务;在执行Map任务和Reduce任务的过程中,利用./replace-conf.sh./jobconf${VALUE},调用replace_conf.sh脚本,以及利用./env.sh,调用env.sh脚本,利用通过python hcelocalrunner.py$MAPPER的方式,调用hcelocalrunner.py脚本。
需要说明的是,根据所述mapper参数,执行Map任务,可以包括执行如下操作:根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片(spilt)。
获得单元运行replace_conf.sh脚本,即读取所述集群配置(xml)文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
测试单元运行env.sh脚本,即对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载,也就是说,将所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数写到该测试设备的内存中。
在这一部分中,因为hce待测试程序在运行过程中需要一些jobconf信息,现有技术中,这些jobconf信息是通过java和C++的套接字(socket)通信来传递的;在单机测试设备中,通过jobconf文件来保存运行HCE待测试程序时所需要的jobconf信息。当用户在HCE待测试程序的MapReduce启动命令中设置了-D或-jobconf选项时,单机测试设备会解析该MapReduce启动命令中的这些设置,并修改jobconf文件,同时还会自动解析hadoop-site.xml文件中的一些默认设置添加到jobconf文件中。在执行run.sh启动一个C++子进程之前,hcelocal脚本在AddUserConf()函数中读取jobconf文件中jobconf信息,并通过TaskContextImpl->setJobConf()方法设置C++子进程的jobconf信息。
第三部分
测试单元运行localrunner.py脚本,即生成控制信息和执行信息,以及利用套接字(socket)将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理
最后,本实施例提供的测试设备在确认所有的任务执行完毕之后,可以执行清理环境的操作。
在这一部分中,所述控制信息和所述执行信息即事件(event)信息可以包括但不限于START_MESSAGE、SET_JOB_CONF、RUN_MAP、RUN_REDUCE、REP_COMMIT、CLOSE和ABORT七种。在hcelocal脚本中,通过提供一个SimBinaryConnection对象来替代BinaryConnection对象的工作,在SimBinaryConnection对象中不再从java端读取event信息,而是自己维护一个m_messageQueue的event队列,在程序运行时,hcelocal脚本会解析hcelocal脚本中的启动参数,来设置m_messageQueue中的event信息。当调用nextEvent()方法时便会从这个event队列的头部取出一个event,从而实现对C++进程执行逻辑的控制。例如,在hcelocal脚本中指定了-mapper参数,那么在执行Map阶段,SimBinaryConnect对象中便会在m_messageQueue队列中依次推送(push)进START_MESSAGE、SET_JOB_CONF、RUN_MAP和REP_COMMIT四个event,从而来模拟在执行Map阶段时,C++进程顺序收到的java端传递过来的event信息这一过程,来控制Map阶段的执行流程。
本实施例中,通过运行单元利用接收单元接收到的MapReduce启动命令中所包含的启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,以及进一步由获得单元获得所述MapReduce分布式系统相关的第二环境变量参数,使得测试单元能够利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,由于通过运行第一脚本,获得待测试程序相关的第一环境变量参数,再结合利用所获得的MapReduce分布式系统相关的第二环境变量参数,运行第二脚本,使得无需搭建基于HDFS的MapReduce分布式集群环境即可运行所述待测试程序得以实现,从而降低了测试成本。
本发明另一实施例提供了MapReduce分布式系统程序的测试设备,其中,所述运行单元运行run.sh脚本所准备的所述工作目录下的文件,还可以进一步包括用于进行性能测试的动态库文件;相应地,所述测试单元24,还可以进一步用于根据所述第一环境变量参数中的性能测试参数,利用所述动态库文件,对所述待测试程序进行性能测试。
具体地,在MapReduce启动命令中所包含的启动参数中,性能测试参数是作为一个可选项存在的。通过设置-jobconf heap_profile=true,–jobconfcpu_profile=true,来开启性能测试功能。例如,在待测试程序的运行过程中,输出内存堆栈(memory heap)信息和cpu堆栈(cpu heap)信息,从而帮助分析在任务执行时的内存使用状况和函数执行时间,从而使得在单机上对待测试程序进行测试时,还可以同时进行性能测试。
本发明另一实施例提供了MapReduce分布式系统程序的测试设备,如图3所示,本实施例的MapReduce分布式系统程序的测试设备还可以进一步包括调试单元31,用于根据所述作业配置文件中的debug参数,对所述待测试程序进行调试。
具体地,如果-jobconf debug=gdb,调试单元31则可以利用开源调试工具(GNU Symbolic Debugger,GDB),对所述待测试程序进行调试,从而使得在单机上还可以对所述待测试程序进行调试。具体地,所述GDB的详细描述可以参见现有技术中的相关内容,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (14)

1.一种MapReduce分布式系统程序的测试方法,其特征在于,包括:
接收MapReduce启动命令,所述MapReduce启动命令用于启动MapReduce分布式系统的待测试程序,所述MapReduce启动命令中包含启动参数;
利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数;
获得所述MapReduce分布式系统相关的第二环境变量参数;
利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序。
2.根据权利要求1所述的方法,其特征在于,所述获得所述MapReduce分布式系统相关的第二环境变量参数,包括:
利用集群配置文件,运行第三脚本,以获得所述第二环境变量参数;或者
根据预先配置的配置信息,获得所述第二环境变量参数。
3.根据权利要求1或2所述的方法,其特征在于,所述第一脚本包括local脚本和run.sh脚本;所述利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数,包括:
利用所述启动参数,运行local脚本;其中,所述local脚本用于检查所述启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置文件、所述待测试程序和所述MapReduce分布式系统的系统程序;
运行run.sh脚本;其中,所述run.sh脚本用于解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置文件中;所述run.sh脚本还用于根据所述第一环境变量参数中的mapper参数和/或reducer参数,执行Map任务和/或Reduce任务;其中,根据所述mapper参数,执行Map任务,包括:
根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片。
4.根据权利要求3所述的方法,其特征在于,所述第三脚本包括replace_conf.sh脚本;所述利用所述启动参数,运行第三脚本,以获得所述第二环境变量参数,包括:
利用所述集群配置文件,运行replace_conf.sh脚本;其中,所述replace_conf.sh脚本用于读取所述集群配置文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
5.根据权利要求3或4所述的方法,其特征在于,所述第二脚本包括env.sh脚本和localrunner.py脚本;所述利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序,包括:
运行env.sh脚本;其中,所述env.sh脚本用于对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载;
运行localrunner.py脚本;其中,所述localrunner.py脚本用于生成控制信息和执行信息,以及利用套接字将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理。
6.根据权利要求3~5任一权利要求所述的方法,其特征在于,所述工作目录下的文件还包括用于进行性能测试的动态库文件;所述方法还包括:
根据所述第一环境变量参数中的性能测试参数,利用所述动态库文件,对所述待测试程序进行性能测试。
7.根据权利要求1~6任一权利要求所述的方法,其特征在于,所述方法还包括:
根据所述作业配置文件中的debug参数,对所述待测试程序进行调试。
8.一种MapReduce分布式系统程序的测试设备,其特征在于,包括:
接收单元,用于接收MapReduce启动命令,所述MapReduce启动命令用于启动MapReduce分布式系统的待测试程序,所述MapReduce启动命令中包含启动参数;
运行单元,用于利用所述启动参数,运行第一脚本,以获得所述待测试程序相关的第一环境变量参数;
获得单元,用于获得所述MapReduce分布式系统相关的第二环境变量参数;
测试单元,用于利用所述第一环境变量参数和所述第二环境变量参数,运行第二脚本,以运行所述待测试程序。
9.根据权利要求8所述的设备,其特征在于,所述获得单元,具体用于
利用集群配置文件,运行第三脚本,以获得所述第二环境变量参数;或者
根据预先配置的配置信息,获得所述第二环境变量参数。
10.根据权利要求8或9所述的设备,其特征在于,所述第一脚本包括local脚本和run.sh脚本;所述运行单元,具体用于
利用所述启动参数,运行local脚本;其中,所述local脚本用于检查所述启动参数是否正确,若所述启动参数不正确,则返回输入手册,若所述启动参数正确,则准备工作目录,所述工作目录下的文件包括作业配置文件、所述待测试程序和所述MapReduce分布式系统的系统程序;以及
运行run.sh脚本;其中,所述run.sh脚本用于解析所述MapReduce启动命令,获得所述第一环境变量参数,将所述第一环境变量参数写到所述作业配置文件中;所述run.sh脚本还用于根据所述第一环境变量参数中的mapper参数和/或reducer参数,执行Map任务和/或Reduce任务;其中,根据所述mapper参数,执行Map任务,包括:
根据所述第一环境变量参数中的input参数,将所述待测试程序需要处理的与所述input参数所指示的数目一致的输入文件切分成所述数目的分片。
11.根据权利要求10所述的设备,其特征在于,所述第三脚本包括replace_conf.sh脚本;所述获得单元,具体用于
利用所述集群配置文件,运行replace_conf.sh脚本;其中,所述replace_conf.sh脚本用于读取所述集群配置文件,获得所述第二环境变量参数,将所述第二环境变量参数写到所述作业配置文件中。
12.根据权利要求10或11所述的设备,其特征在于,所述第二脚本包括env.sh脚本和localrunner.py脚本;所述测试单元,具体用于
运行env.sh脚本;其中,所述env.sh脚本用于对所述作业配置文件中的所述第一环境变量参数和所述第二环境变量参数进行加载;以及
运行localrunner.py脚本;其中,所述localrunner.py脚本用于生成控制信息和执行信息,以及利用套接字将所述控制信息和所述执行信息传递给所述待测试程序,以运行所述待测试程序,对所述分片的输入文件对应的任务进行处理。
13.根据权利要求10~12任一权利要求所述的设备,其特征在于,所述工作目录下的文件还包括用于进行性能测试的动态库文件;所述测试单元,还用于
根据所述第一环境变量参数中的性能测试参数,利用所述动态库文件,对所述待测试程序进行性能测试。
14.根据权利要求8~13任一权利要求所述的设备,其特征在于,所述设备还包括调试单元,用于
根据所述作业配置文件中的debug参数,对所述待测试程序进行调试。
CN201310077405.0A 2013-03-12 2013-03-12 MapReduce分布式系统程序的测试方法及设备 Active CN103176903B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310077405.0A CN103176903B (zh) 2013-03-12 2013-03-12 MapReduce分布式系统程序的测试方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310077405.0A CN103176903B (zh) 2013-03-12 2013-03-12 MapReduce分布式系统程序的测试方法及设备

Publications (2)

Publication Number Publication Date
CN103176903A true CN103176903A (zh) 2013-06-26
CN103176903B CN103176903B (zh) 2019-03-29

Family

ID=48636798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310077405.0A Active CN103176903B (zh) 2013-03-12 2013-03-12 MapReduce分布式系统程序的测试方法及设备

Country Status (1)

Country Link
CN (1) CN103176903B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104022913A (zh) * 2013-12-18 2014-09-03 深圳市腾讯计算机系统有限公司 用于数据集群的测试方法和装置
CN104461721A (zh) * 2014-12-11 2015-03-25 北京国双科技有限公司 工作流的调用方法和装置
CN104750482A (zh) * 2015-03-13 2015-07-01 合一信息技术(北京)有限公司 一种构建基于MapReduce的动态脚本执行引擎的方法
CN109976730A (zh) * 2017-12-26 2019-07-05 航天信息股份有限公司 一种数据传递的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089560A1 (en) * 2007-10-01 2009-04-02 Accenture Organization Infrastructure for parallel programming of clusters of machines
CN102841846A (zh) * 2012-08-27 2012-12-26 北京邮电大学 一种基于Hadoop的软件测试方法、装置和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089560A1 (en) * 2007-10-01 2009-04-02 Accenture Organization Infrastructure for parallel programming of clusters of machines
CN102841846A (zh) * 2012-08-27 2012-12-26 北京邮电大学 一种基于Hadoop的软件测试方法、装置和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王峰等: "Hadoop分布式文件系统的模型分析", 《电信科学》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104022913A (zh) * 2013-12-18 2014-09-03 深圳市腾讯计算机系统有限公司 用于数据集群的测试方法和装置
CN104022913B (zh) * 2013-12-18 2015-09-09 深圳市腾讯计算机系统有限公司 用于数据集群的测试方法和装置
CN104461721A (zh) * 2014-12-11 2015-03-25 北京国双科技有限公司 工作流的调用方法和装置
CN104461721B (zh) * 2014-12-11 2017-11-14 北京国双科技有限公司 工作流的调用方法和装置
CN104750482A (zh) * 2015-03-13 2015-07-01 合一信息技术(北京)有限公司 一种构建基于MapReduce的动态脚本执行引擎的方法
CN104750482B (zh) * 2015-03-13 2018-04-10 合一信息技术(北京)有限公司 一种构建基于MapReduce的动态脚本执行引擎的方法
CN109976730A (zh) * 2017-12-26 2019-07-05 航天信息股份有限公司 一种数据传递的方法及装置

Also Published As

Publication number Publication date
CN103176903B (zh) 2019-03-29

Similar Documents

Publication Publication Date Title
CN110554965B (zh) 自动化模糊测试方法及相关设备、计算机可读存储介质
US7827548B1 (en) Environment-neutral application build
CN108959059B (zh) 一种测试方法以及测试平台
US20150100829A1 (en) Method and system for selecting and executing test scripts
US20150100832A1 (en) Method and system for selecting and executing test scripts
CN103226485A (zh) 代码发布方法、代码发布机和代码发布系统
US9715440B2 (en) Test scope determination based on code change(s)
CN102375778A (zh) 实现数字信号处理器自动测试的方法及系统
CN106294113B (zh) 一种基于可编程式测试服务的创建方法及装置
US20150100831A1 (en) Method and system for selecting and executing test scripts
CN107015841B (zh) 一种程序编译的预处理方法及程序编译设备
CN103123605A (zh) 一种Android平台自动化集成测试方法和装置
CN104268074A (zh) 一种基于dcs系统应用软件在线调试方法
CN109901985B (zh) 分布式测试装置及方法、存储介质和电子设备
CN103176903A (zh) MapReduce分布式系统程序的测试方法及设备
CN109144525A (zh) 一种网络自适应的软件安装方法与系统
EP3413149B1 (en) Field device commissioning system and field device commissioning method
CN111338925A (zh) 小程序测试方法及装置、系统、电子设备和存储介质
US20080141225A1 (en) Method for migrating files
US20080115109A1 (en) Enhanced Hover Help For Software Debuggers
CN104063306A (zh) 智能终端软件测试中的自动登录方法、装置和系统
CN112463574A (zh) 软件测试方法、装置、系统、设备和存储介质
CN105279074A (zh) 一种通过NSLog在终端上展示日志信息的方法和装置
CN111045891B (zh) 基于java多线程的监控方法、装置、设备以及存储介质
CN109947407B (zh) 一种数据获取方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant