一种基于MapReduce的大规模负载测试方法及其评价方法技术

技术编号:38926517 阅读:20 留言:0更新日期:2023-09-25 09:34
一种基于MapReduce的大规模负载测试方法及其评价方法,属于计算机技术领域。为解决大规模分布式负载测试的精度和性能问题。本发明专利技术生成大规模负载测试任务文件;分布式缓存对大规模负载测试任务文件进行分发:Hadoop分布式文件系统对大规模负载测试任务文件进行负载测试任务文件的预处理,然后插入同步检测点,得到Map任务分片数据;对得到的Map任务分片数据输入到Map任务进行大规模负载模拟测试,得到大规模负载模拟测试中间数据输入到Reduce任务进行数据分析、数据回收,将Reduce输出结果存储到Hadoop分布式文件系统中。本发明专利技术实现测试工具的自动化部署、启动和关闭,具有良好的容错性。的容错性。的容错性。

【技术实现步骤摘要】
一种基于MapReduce的大规模负载测试方法及其评价方法


[0001]本专利技术属于计算机
,具体涉及一种基于MapReduce的大规模负载测试方法及其评价方法。

技术介绍

[0002]互联网和移动技术的成熟与发展,催生出众多大型分布式软件系统。无论是电商系统,还是即时通讯系统,都需要支撑亿级用户的并发访问。为提高软件系统的性能与服务质量,需要在闲时或发布前对系统进行大规模负载测试,以期获取系统的吞吐量、可用性、可靠性以及成本费用等信息,为识别系统瓶颈与优化系统配置等提供参考。负载测试是指通过评估软件系统在负载下的行为以检测负载相关问题的过程。负载相关的问题是指在负载压力下系统才会出现的问题,该类测试需要使用负载发生器模拟大量在线用户,并按照一定规则对系统进行并发访问。在测试过程中需要持续的监控和收集系统的执行日志和事件日志。最后由测试人员分析收集到的日志数据,以检测软件系统的异常行为。在进行负载测试时,测试用例可以从历史数据中获取,以保证负载的真实性。与此同时测试一般会持续数小时或数天时间来重现一些规律型负载。因此,大型分布式软件系统的负载测试通常需要模拟大量并发用户对目标系统发送访问请求,并回收需要分析的测试数据。单次大规模分布式负载测试可以产生GB,甚至TB级的数据量,这使得模拟负载和测试数据的回收分析都变得异常困难。在面向大型分布式软件系统的负载测试时,传统的单机版负载测试工具已然不能满足大规模负载模拟与海量测试数据分析的需求。因此需要使用分布式相关技术,利用集群进行负载模拟、日志收集和数据分析。r/>[0003]目前已有许多成熟的负载测试工具,可分为两大类:商业负载测试工具和开源负载测试工具。商业化负载测试工具的代表软件是惠普公司的LoadRunner。该软件一般为特定需求的客户开发,并经过全面测试,具有稳定性高和评测结果准确等优点。然而商用价格昂贵,且二次开发难度较大。
[0004]开源负载测试工具的代表软件是Apache JMeter,相对于商业软件,开源软件具有以下优势:首先,可以大幅降低IT投入,该类软件一般都是免费的。其次,更加灵活的订制和开发。用户可以在遵守约定的情况下,进行二次开发。第三,具有更便捷的技术支持,测试人员甚至直接可以和工具的开发人员进行交流。为了在分布式系统日志中准确地模拟和重现高强度工作负载,需要采用分布式方法。虽然JMeter负载测试工具提供了分布式框架用于进行大规模的负载测试,但在测试过程中则过度依赖主节点,并会遇到以下问题:(1)容错性差。无论主节点还是从节点,只要有一个节点在测试过程中出现问题,均会导致整体测试的失败。(2)测试数据的存储与分析存在问题。所有从节点的测试数据都需要收集到主节点。在测试结束后,仅有主节点独立完成测试数据分析。这种方式无法满足海量测试数据的存储与分析需求。(3)在分布式负载模拟的过程中,子任务间缺乏有效同步措施,无法精确复现复杂的负载场景。(4)一般需要为大规模负载测试构建专用集群,并需要手动部署测试软件,整个过程费事费力。

技术实现思路

[0005]本专利技术要解决的问题是大规模分布式负载测试的精度和性能问题,提出一种基于MapReduce的大规模负载测试方法及其评价方法。
[0006]为实现上述目的,本专利技术通过以下技术方案实现:
[0007]一种基于MapReduce的大规模负载测试方法,包括如下步骤:
[0008]S1、生成大规模负载测试任务文件;
[0009]S2、分布式缓存对大规模负载测试任务文件进行分发:Hadoop分布式文件系统对大规模负载测试任务文件进行负载测试任务文件的预处理,然后插入同步检测点,得到Map任务分片数据;
[0010]S3、对步骤S2得到的Map任务分片数据输入到Map任务进行大规模负载模拟测试,得到大规模负载模拟测试中间数据;
[0011]S4、对步骤S3得到的大规模负载模拟测试中间数据输入到Reduce任务进行数据分析、数据回收,将Reduce输出结果存储到Hadoop分布式文件系统中。
[0012]进一步的,步骤S1中利用主控模块生成每个Map任务需要执行的负载测试命令,同时主控模块负责向Hadoop分布式文件系统按照并行任务数提交大规模负载测试任务文件。
[0013]进一步的,步骤S2的具体实现方法包括如下步骤:
[0014]S2.1、大规模负载测试任务文件的并行化处理的具体实现方法为通过改变逻辑分片的数量间接控制Map任务的数量;逻辑分片的数量由大规模负载测试任务文件大小和大规模负载测试任务文件数量共同决定,逻辑分片的计算表达式为:
[0015]InputSplitSize=max(SplitMinSize,min(SplitMaxSize,BlockSize))
[0016]其中,InputSplitSize为输入逻辑分片大小,SplitMinSize为输入逻辑分片的最小值,SplitMaxSize为输入逻辑分片的最大值,BlockSize为分布式文件系统的块大小;
[0017]S2.2、设置大规模负载测试任务文件的控制规则,具体实现方法为:
[0018]S2.2.1、将每个负载测试任务执行的模拟参数放入独立的文件中,生成负载测试任务模拟参数文件;
[0019]S2.2.2、对比步骤S2.2.1生成的负载测试任务模拟参数文件的大小和逻辑分片的大小,如果负载测试任务模拟参数文件的大小超过逻辑分片的大小,则通过调整MapReduce作业的SplitMinSize,以此来确保每个负载测试任务模拟参数文件仅对应一个逻辑分片;
[0020]S2.3、设置基于逻辑分片信息的调度规则,具体实现方法为:
[0021]S2.3.1、首先通过作业的上下文信息,获取Map任务的初始逻辑分片信息和逻辑分片所属的主机信息;
[0022]S2.3.2、计算获得每个节点需要平均分配的任务个数;
[0023]S2.3.3、对于每个逻辑分片首先考虑本地性,当某个逻辑分片中所属的某个主机节点可以同时满足本地性和平均任务数约束时,则将该节点的主机信息设置为当前逻辑分片的唯一主机信息;
[0024]S2.3.4、剩余无法满足本地性约束的Map任务,则选择承担任务数最小节点的主机节点,将该节点的主机信息设置为当前逻辑分片的唯一主机信息;
[0025]S2.4、设置面向并行任务数量的同步方法,用于监测并行执行的Map任务数量达到要求时,启动Map任务,具体实现方法为:
[0026]S2.4.1、确定同步点的插入位置为RecordReader;
[0027]S2.4.2、采用主从式同步方法,选用Hadoop集群的主节点作为同步的主节点,在Hadoop集群的主节点上启动用于统计同步任务准备情况的服务进程,所述服务进程负责接收并检查当前测试阶段已就绪的负载Map任务信号,当已就绪的负载Map任务数与设定的并行任务数相等时,则返回Map任务的启动时刻,否则返回继续等待信号。...

【技术保护点】

【技术特征摘要】
1.一种基于MapReduce的大规模负载测试方法,其特征在于,包括如下步骤:S1、生成大规模负载测试任务文件;S2、分布式缓存对大规模负载测试任务文件进行分发:Hadoop分布式文件系统对大规模负载测试任务文件进行负载测试任务文件的预处理,然后插入同步检测点,得到Map任务分片数据;S3、对步骤S2得到的Map任务分片数据输入到Map任务进行大规模负载模拟测试,得到大规模负载模拟测试中间数据;S4、对步骤S3得到的大规模负载模拟测试中间数据输入到Reduce任务进行数据分析、数据回收,将Reduce输出结果存储到Hadoop分布式文件系统中。2.根据权利要求1所述的一种基于MapReduce的大规模负载测试方法,其特征在于,步骤S1中利用主控模块生成每个Map任务需要执行的负载测试命令,同时主控模块负责向Hadoop分布式文件系统按照并行任务数提交大规模负载测试任务文件。3.根据权利要求1或2所述的一种基于MapReduce的大规模负载测试方法,其特征在于,步骤S2的具体实现方法包括如下步骤:S2.1、大规模负载测试任务文件的并行化处理的具体实现方法为通过改变逻辑分片的数量间接控制Map任务的数量;逻辑分片的数量由大规模负载测试任务文件大小和大规模负载测试任务文件数量共同决定,逻辑分片的计算表达式为:InputSplitSize=max(SplitMinSize,min(SplitMaxSize,BlockSize))其中,InputSplitSize为输入逻辑分片大小,SplitMinSize为输入逻辑分片的最小值,SplitMaxSize为输入逻辑分片的最大值,BlockSize为分布式文件系统的块大小;S2.2、设置大规模负载测试任务文件的控制规则,具体实现方法为:S2.2.1、将每个负载测试任务执行的模拟参数放入独立的文件中,生成负载测试任务模拟参数文件;S2.2.2、对比步骤S2.2.1生成的负载测试任务模拟参数文件的大小和逻辑分片的大小,如果负载测试任务模拟参数文件的大小超过逻辑分片的大小,则通过调整MapReduce作业的SplitMinSize,以此来确保每个负载测试任务模拟参数文件仅对应一个逻辑分片;S2.3、设置基于逻辑分片信息的调度规则,具体实现方法为:S2.3.1、首先通过作业的上下文信息,获取Map任务的初始逻辑分片信息和逻辑分片所属的主机信息;S2.3.2、计算获得每个节点需要平均分配的任务个数;S2.3.3、对于每个逻辑分片首先考虑本地性,当某个逻辑分片中所属的某个主机节点可以同时满足本地性和平均任务数约束时,则将该节点的主机信息设置为当前逻辑分片的唯一主机信息;S2.3.4、剩余无法满足本地性约束的Map任务,则选择承担任务数最小节点的主机节点,将该节点的主机信息设置为当前逻辑分片的唯一主机信息;S2.4、设置面向并行任务数量的同步方法,用于监测并行执行的Map任务数量达到要求时,启动Map任务,具体实现方法为:S2.4.1、确定同步点的插入位置为RecordReader;S2.4.2、采用主从式同步方法,选用Hadoop集群的主节点作为同步的主节点,在Hadoop
集群的主节点上启动用于统计同步任务准备情况的服务进程,所述服务进程负责接收并检查当前测试阶段已就绪的负载Map任务信号,当已就绪的负载Map任务数与设定的并行任务数相等时,则返回Map任务的启动时刻,否则返回继续等待信号。4.根据权利要求3所述的一种基于MapReduce的大规模负载测试方法,其特征在于,步骤S3的具体实现方法包括如下步骤:S3.1、读入Map任务分片数据;S3.2、将Map任务分片数据在文件中的偏移量设置为键,将Map任务分片数据的内容设置为值;S3.3、判断读取的Map任务分片数据是否存在新的记录,判断为是,则提取Map任务分片数据内容解析为测试命令,并执行所述测试命令,判断为否则结束Map任务;S3.4、对步骤S3.3执行的测试命令进行判断,如果判断测试完成则终止此次测试,得到大规模负载模拟测试中间数据发送给Reduce任务待处理,如果判断测试未完成,则重复步骤S3.3。5.根据权利要求4所述的一种基于MapReduce的大规模负载测试方法,其特征在于,步骤...

【专利技术属性】
技术研发人员:张展刘宏伟李文浩左德承陈思远冯懿封威温冬新舒燕君董剑
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1