大数据是不能使用传统计算技术处理的大型数据集的集合。这些数据集的测试涉及各种工具,技术和框架。大数据涉及数据创建,存储,检索和分析,数量,多样性和速度都要求非常高。
测试策略
更多的是验证其数据处理而不是单个功能,性能和功能测试*是关键都很重要。
使用集群和其他支持组件来验证TB级数据的处理。它需要高水平的测试技能,因为处理非常快。处理有三种类型
数据质量也是大数据测试的重要因素,检查数据的质量是重要环节,需要检查一致性、有效性,重复,完整性等。
测试步骤在·
数据分段验证
也称为pre-Hadoop阶段,涉及处理验证。
-
各种来源(如RDBMS,博客,社交媒体等)的数据应进行验证,以确保正确的数据pull到系统
-
比较源数据与推送到Hadoop系统中的数据
-
验证数据正确提取并加载到正确的HDFS位置
像工具Talend,Datameer,可用于数据分段的验证
MapReduce验证
验证每个节点上的业务逻辑验证,然后在多个节点运行后验证它们,确保
-
Map Reduce进程正常工作
-
数据聚合或隔离规则
-
生成键值对
-
验证Map Reduce处理后数据
输出验证阶段
生成输出数据文件,并准备根据需要将其移至EDW(企业数据仓库)或其他系统。
-
转换规则正确应用
-
数据完整并成功加载到目标系统
-
将目标数据与HDFS文件系统数据进行比较以确认没有数据损坏
架构测试
Hadoop处理非常大量的数据,资源密集。架构测试对于确保大数据项目的成功至关重要。系统设计不当会导致性能下降,系统可能无法满足要求。至少,需要测试性能和Failover 。
性能测试包括测试作业完成时间,内存利用率,数据吞吐量和类似的系统指标。Failover 测试验证数据处理在节点故障的情况下无缝转移。
性能测试
大数据的性能测试包括两个主要方面:
-
**数据获取和吞吐量:包含获取数据和插入数据。例如插入数据到Mongo和Cassandra数据库中。
-
数据处理:查询或map reduce作业的速度。还包括数据隔离。例如,在底层HDFS上运行Map Reduce作业
-
子组件性能:如,消息索引和使用的速度,mapreduce作业,查询性能,搜索等。
性能测试方法
大数据应用程序的性能测试涉及大量结构化和非结构化数据的测试,它需要特别的测试方法。
性能测试的方式
-
对要性能测试的大数据集群的进行设置
-
识别和设计相应的工作负载
-
准备单个客户端(创建自定义脚本)
-
执行测试并分析结果(如果不满足目标,则调整组件并重新执行)
-
优化配置
性能测试的参数
-
数据存储:数据如何存储在不同的节点中
-
提交日志:提交日志允许增长的大小
-
并发性:有多少线程可以执行写和读操作
-
缓存:调整缓存设置“row缓存”和“key缓存”。
-
超时:连接超时,查询超时等。
-
JVM参数:堆大小,GC收集算法等。
-
Map reduce性能:排序,合并等
-
消息队列:消息速率,大小等
测试环境需求
-
足够的空间用于存储和处理大量的数据
-
分布式节点和数据的集群
-
最小的CPU和内存利用率
大数据测试和传统数据库测试比较
属性 | 传统数据库测试 | 大数据测试 |
数据 | 使用结构化数据 | 同时处理结构化数据和非结构化数据 |
测试方法定义明确且成熟 | 探索中 | |
手工抽样或自动化完全验证 | 抽样的挑战很大 | |
基础设施 | 需要特殊的测试环境,因为文件大小有限 | 需要特殊的测试环境,因为大的数据和文件(HDFS) |
验证工具 | Excel的宏、基于UI的自动化工具、Python等 | 从MapReduce到HIVEQL |
容易上手 | 较有技术难度。 |
大数据工具
大数据集群 | 大数据工具 |
NoSQL | CouchDB,MongoDB,Cassandra,Redis,ZooKeeper,Hbase |
MapReduce | Hadoop,Hive,Pig,Cascading,Oozie,Kafka,S4,MapR,Flume |
存储 | S3,HDFS(Hadoop分布式文件系统) |
服务器 | Elastic,Heroku,Google App Engine,EC2 |
处理 | R,Yahoo!Pipes,Mechanical Turk,BigSheets,Datameer |
大数据测试中的挑战
-
自动化
技术难度高,异常难处理。
-
虚拟化
虚拟机的延时及镜像管理。
-
大数据集
-
大量数据集
-
自动化测试
-
跨平台
-
性能测试的挑战
-
技术复杂多样
-
多种工具
-
脚本来设计测试场景和测试用例
-
特殊的测试环境
-
监控复杂
-
开发定制解决方案定位性能瓶颈