一种hadoop程序测试的方法和系统的制作方法

文档序号:6488645阅读:285来源:国知局
一种hadoop程序测试的方法和系统的制作方法
【专利摘要】本发明提供了一种HADOOP程序测试的方法和系统,其中运行待测试的HADOOP程序过程中,如果运行到对远程HADOOP分布式文件系统(HDFS)的SHELL接口的调用,则将对远程HDFS的SHELL接口的调用命令转换为对本地文件系统(FS)的SHELL接口的调用命令,并将HDFS路径转换为本地FS路径;执行转换后得到的命令,获取执行结果。或者,如果运行到对远程分布式(MAP/REDUCE)计算接口的调用,则将输入和输出路径从HDFS路径转换为本地FS路径,利用本地作业运行器替代作业追踪器,进入执行路径后,执行MAP执行脚本和REDUCE执行脚本,获取执行结果。通过本发明能够缩短测试执行的时间。
【专利说明】一种HADOOP程序测试的方法和系统
【【技术领域】】
[0001]本发明涉及计算机应用【技术领域】,特别涉及一种HADOOP程序测试的方法和系统。【【背景技术】】
[0002]HADOOP是一个由Apache基金会开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力高速运算和存储。
[0003]HADOOP程序的测试过程中,需要在已搭建好的分布式文件系统(HDFS,HadoopDistributed File system)和HADOOP计算集群上进行,在访问HDFS和提交分布式计算作业(MAP/REDUCE JOB)时,需要进行远程数据访问和传输、处理JOB提交和初始化、任务分配和执行等远程工作,这些远程数据访问和调度工作往往会耗费大量时间。经试验需要I千到2千次远程数据访问,数据量在IM之内的情况下,全部自动化功能测试用例执行一遍至少需要I个小时40分钟。
[0004]另外,由于HADOOP程序使用Java实现,在运行时会启动Java虚拟机(JVM),也也会增加执行时间。

【发明内容】

[0005]有鉴于此, 本发明提供了一种HADOOP程序测试的方法和系统,以便于缩短测试执行的时间。
[0006]具体技术方案如下:
[0007]一种HADOOP程序测试的方法,该方法包括:
[0008]S1、运行待测试的HADOOP程序;
[0009]S2、如果运行到对远程HADOOP分布式文件系统HDFS的SHELL接口的调用,执行步骤S3 ;或者,如果运行到对远程分布式MAP/REDUCE计算接口的调用,则执行步骤S4 ;
[0010]S3、按照预设的远程命令名与本地命令名之间的映射关系,将对远程HDFS的SHELL接口的调用命令转换为对本地文件系统FS的SHELL接口的调用命令,并基于预设的路径映射规则,将对远程HDFS的SHELL接口的调用命令中的HDFS路径转换为本地FS路径;执行转换后得到的命令,获取执行结果,转至步骤SI直至待测试的HADOOP程序运行结束;
[0011]S4、基于预设的路径映射规则,将对远程MAP/REDUCE计算接口的调用涉及到的输入和输出路径从HDFS路径转换为本地FS路径,利用本地作业运行器LocalJobRunner替代作业追踪器JobTracker,进入执行路径后,执行MAP执行脚本和REDUCE执行脚本,获取执行结果,转至步骤SI直至待测试的HADOOP程序运行结束。
[0012]根据本发明一优选实施例,所述路径映射规则为:
[0013]Localpath=Workspace+HDFSpath ;
[0014]其中所述Localpath为本地FS路径,所述Workspace为从配置文件中读取的本地工作路径,所述HDFSpath为HDFS路径。
[0015]根据本发明一优选实施例,在所述步骤S3中使用python执行所述转换后得到的命令。
[0016]根据本发明一优选实施例,在所述步骤S4中还包括:将执行路径按照LocalExcpath=fforkspace+Excpath转换为本地执行路径,所述进入的执行路径为转换后的本地执行路径;
[0017]其中,所述LocalExcpath为本地执行路径,所述Workspace为从配置文件中读取的本地工作路径,所述Excpath为原始生成的执行路径。
[0018]根据本发明一优选实施例,执行所述MAP执行脚本和REDUCE执行脚本的过程中,如果存在对HDFS API的调用,则在so动态共享库的函数入口处,将集群路径从HDFS路径转换为本地FS路径。
[0019]根据本发明一优选实施例,步骤S4中在将输入和输出路径从HDFS路径转换为本地FS路径之后,且利用LocalJobRunner替代JobTracker之前还包括:将执行MAP执行脚本和REDUCE执行脚本过程中使用的文件解压缩;
[0020]在执行MAP执行脚本和REDUCE执行脚本之前还包括:将解压缩的文件拷贝到本地执行路径。
[0021 ] 一种HADOOP程序测试的系统,该系统包括:
[0022]程序获取单元,用于运行待测试的HADOOP程序;
[0023]调用判断单元,用于如果所述程序获取单元运行到对远程HADOOP分布式文件系统HDFS的SHELL接口的调用,则触发SHELL接口调用单元;或者,如果运行到对远程分布式MAP/REDUCE计算接口的调用,则触发分布式计算接口调用单元;
[0024]SHELL接口调用单元,用于受到触发后,按照预设的远程命令名与本地命令名之间的映射关系,将对远程HDFS的SHELL接口的调用命令转换为对本地文件系统FS的SHELL接口的调用命令,并基于预设的路径映射规则,将对远程HDFS的SHELL接口的调用命令中的HDFS路径转换为本地FS路径;执行转换后得到的命令,获取执行结果;
[0025]分布式计算接口调用单元,用于受到触发后,基于预设的路径映射规则,将对远程MAP/REDUCE计算接口的调用涉及到的输入和输出路径从HDFS路径转换为本地FS路径,利用本地作业运行器LocalJobRunner替代作业追踪器JobTracker,获取LocalJobRunner的执行结果;
[0026]LocalJobRunner,用于进入执行路径后,执行MAP执行脚本和REDUCE执行脚本。
[0027]根据本发明一优选实施例,所述路径映射规则为:
[0028]Localpath=fforkspace+HDFSpath ;
[0029]其中所述Localpath为本地FS路径,所述Workspace为从配置文件中读取的本地工作路径,所述HDFSpath为HDFS路径。
[0030]根据本发明一优选实施例,所述SHELL接口调用单元使用python执行所述转换后得到的命令。
[0031]根据本发明一优选实施例,分布式计算接口调用单元,还用于将执行路径按照LocalExcpath=fforkspace+Excpath转换为本地执行路径,所述LocalJobRunner进入的执行路径为转换后的本地执行路径;
[0032]其中,所述LocalExcpath为本地执行路径,所述Workspace为从配置文件中读取的本地工作路径,所述Excpath为原始生成的执行路径。[0033]根据本发明一优选实施例,所述LocalJobRunner在执行所述MAP执行脚本和REDUCE执行脚本的过程中,如果存在对HDFS API的调用,则在so动态共享库的函数入口处,将集群路径从HDFS路径转换为本地FS路径。
[0034]根据本发明一优选实施例,所述分布式计算接口调用单元在将输入和输出路径从HDFS路径转换为本地FS路径之后,且利用LocalJobRunner替代JobTracker之前,还用于将执行MAP执行脚本和REDUCE执行脚本过程中使用的文件解压缩;在所述LocalJobRunner执行MAP执行脚本和REDUCE执行脚本之前将解压缩的文件拷贝到本地执行路径。
[0035]由以上技术方案可以看出,本发明将远程集群上执行的HDFS访问、MAP/REDUCE计算转换到本地文件系统上,将基于JVM的操作替换为脚本操作,加快了测试执行速度,缩短了测试执行时间。
【【专利附图】

【附图说明】】
[0036]图1为本发明实施例一提供的HADOOP程序测试的方法流程图;
[0037]图2为本发明实施例二提供的上述步骤103的具体方法流程图;
[0038]图3为本发明实施例三提供的上述步骤104的具体方法流程图;
[0039]图4为本发明实施例四提供的HADOOP程序测试的系统结构图。
【【具体实施方式】】
[0040]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0041]实施例一、
[0042]图1为本发明实施例一提供的HADOOP程序测试的方法流程图,如图1所示,该方法包括以下步骤:
[0043]步骤101:运行待测试的HADOOP程序。
[0044]步骤102:判别运行到的调用类型,如果运行到对远程HDFS的SHELL接口的调用,则执行步骤103 ;如果运行到对远程MAP/REDUCE计算接口的调用,则执行步骤104。
[0045]HADOOP程序主要包括两种调用,即对远程HDFS的SHELL接口的调用和对远程MAP/REDUCE计算接口的调用。对远程HDFS的SHELL接口的调用主要是对远程文件的操作,诸如读、写、上传、下载、显示、复制、移动、删除等。对远程MAP/REDUCE计算接口的调用主要是以流式(streaming)方式启动的MAP/REDUCE计算任务。
[0046]步骤103:将对远程HDFS的SHELL接口的调用转换为对本地SHELL接口的调用,在本地执行调用命令后,获取执行结果,转至步骤101直至待测试的HADOOP程序运行结束。
[0047]将对远程HDFS的SHELL接口的调用转换为对本地SHELL接口的调用包含路径转换和命令转换,具体的转换过程将在实施例二中详细描述。
[0048]步骤104:将对远程MAP/REDUCE计算接口的调用转换为本地执行,获取执行结果,转至步骤101直至待测试的HADOOP程序运行结束。
[0049] 对远程MAP/REDUCE计算接口的调用转换为本地执行包括路径的转换和作业执行的转换,具体的转换过程将在实施例三中详细描述。[0050]在执行完毕后,可以将执行结果与预期结果进行比对得到测试结果,即如果执行结果与预期结果一致,则测试通过,否则测试失败。
[0051]实施例二、
[0052]图2为本发明实施例二提供的上述步骤103的具体方法流程图,如图2所示,包括以下步骤:
[0053]步骤201:按照预设的远程命令名与本地命令名之间的映射关系,将对远程HDFS的SHELL接口的调用命令转换为对本地FS的SHELL接口的调用命令。
[0054]预先配置远程命令名与本地命令名之间的映射关系,使得对远程HDFS的SHELL接口的调用命令能够转换为对本地FS的SHELL接口的调用命令,该映射关系可以如表1中所示例子。
[0055]表1
[0056]
【权利要求】
1.一种HADOOP程序测试的方法,其特征在于,该方法包括: 51、运行待测试的HADOOP程序; 52、如果运行到对远程HADOOP分布式文件系统HDFS的SHELL接口的调用,执行步骤S3 ;或者,如果运行到对远程分布式MAP/REDUCE计算接口的调用,则执行步骤S4 ; 53、按照预设的远程命令名与本地命令名之间的映射关系,将对远程HDFS的SHELL接口的调用命令转换为对本地文件系统FS的SHELL接口的调用命令,并基于预设的路径映射规则,将对远程HDFS的SHELL接口的调用命令中的HDFS路径转换为本地FS路径;执行转换后得到的命令,获取执行结果,转至步骤SI直至待测试的HADOOP程序运行结束; 54、基于预设的路径映射规则,将对远程MAP/REDUCE计算接口的调用涉及到的输入和输出路径从HDFS路径转换为本地FS路径,利用本地作业运行器LocalJobRunner替代作业追踪器JobTracker,进入执行路径后,执行MAP执行脚本和REDUCE执行脚本,获取执行结果,转至步骤SI直至待测试的HADOOP程序运行结束。
2.根据权利要求1所述的方法,其特征在于,所述路径映射规则为:
Localpath=fforkspace+HDFSpath ; 其中所述Localpath为本地FS路径,所述Workspace为从配置文件中读取的本地工作路径,所述HDFSpath为HDFS路径。
3.根据权利要求1所述的方法,其特征在于,在所述步骤S3中使用python执行所述转换后得到的命令。`
4.根据权利要求1所述的方法,其特征在于,在所述步骤S4中还包括:将执行路径按照LocalExcpath=Workspace+Excpath转换为本地执行路径,所述进入的执行路径为转换后的本地执打路径; 其中,所述LocalExcpath为本地执行路径,所述Workspace为从配置文件中读取的本地工作路径,所述Excpath为原始生成的执行路径。
5.根据权利要求1所述的方法,其特征在于,执行所述MAP执行脚本和REDUCE执行脚本的过程中,如果存在对HDFS API的调用,则在so动态共享库的函数入口处,将集群路径从HDFS路径转换为本地FS路径。
6.根据权利要求1所述的方法,其特征在于,步骤S4中在将输入和输出路径从HDFS路径转换为本地FS路径之后,且利用LocalJobRunner替代JobTracker之前还包括:将执行MAP执行脚本和REDUCE执行脚本过程中使用的文件解压缩; 在执行MAP执行脚本和REDUCE执行脚本之前还包括:将解压缩的文件拷贝到本地执行路径。
7.一种HADOOP程序测试的系统,其特征在于,该系统包括: 程序获取单元,用于运行待测试的HADOOP程序; 调用判断单元,用于如果所述程序获取单元运行到对远程HADOOP分布式文件系统HDFS的SHELL接口的调用,则触发SHELL接口调用单元;或者,如果运行到对远程分布式MAP/REDUCE计算接口的调用,则触发分布式计算接口调用单元; SHELL接口调用单元,用于受到触发后,按照预设的远程命令名与本地命令名之间的映射关系,将对远程HDFS的SHELL接口的调用命令转换为对本地文件系统FS的SHELL接口的调用命令,并基于预设的路径映射规则,将对远程HDFS的SHELL接口的调用命令中的HDFS路径转换为本地FS路径;执行转换后得到的命令,获取执行结果; 分布式计算接口调用单元,用于受到触发后,基于预设的路径映射规则,将对远程MAP/REDUCE计算接口的调用涉及到的输入和输出路径从HDFS路径转换为本地FS路径,利用本地作业运行器LocalJobRunner替代作业追踪器JobTracker,获取LocalJobRunner的执行结果; LocalJobRunner,用于进入执行路径后,执行MAP执行脚本和REDUCE执行脚本。
8.根据权利要求7所述的系统,其特征在于,所述路径映射规则为:
Localpath=fforkspace+HDFSpath ; 其中所述Localpath为本地FS路径,所述Workspace为从配置文件中读取的本地工作路径,所述HDFSpath为HDFS路径。
9.根据权利要求7所述的系统,其特征在于,所述SHELL接口调用单元使用python执行所述转换后得到的命令。
10.根据权利要求7所述的系统,其特征在于,分布式计算接口调用单元,还用于将执行路径按照LocalExcpath=Workspace+Excpath转换为本地执行路径,所述LocalJobRunner进入的执行路径为转换后的本地执行路径; 其中,所述LocalExcpat h为本地执行路径,所述Workspace为从配置文件中读取的本地工作路径,所述Excpath为原始生成的执行路径。
11.根据权利要求7所述的系统,其特征在于,所述LocalJobRunner在执行所述MAP执行脚本和REDUCE执行脚本的过程中,如果存在对HDFS API的调用,则在so动态共享库的函数入口处,将集群路径从HDFS路径转换为本地FS路径。
12.根据权利要求7所述的系统,其特征在于,所述分布式计算接口调用单元在将输入和输出路径从HDFS路径转换为本地FS路径之后,且利用LocalJobRunner替代JobTracker之前,还用于将执行MAP执行脚本和REDUCE执行脚本过程中使用的文件解压缩;在所述LocalJobRunner执行MAP执行脚本和REDUCE执行脚本之前将解压缩的文件拷贝到本地执行路径。
【文档编号】G06F11/36GK103678098SQ201210328786
【公开日】2014年3月26日 申请日期:2012年9月6日 优先权日:2012年9月6日
【发明者】沙安澜 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1