大数据性能测试的目的
1.大数据组件的性能回归,在版本升级的时候,进行新旧版本的性能比对
2.在新版本/新的生产环境 发布之后获取性能基线,建立可度量的参考标准,为其他测试场景或者调优过程提供对比参考
3.在众多的发行版本中进行测试比对,为PoC测试提供参考数据
4.支持POC测试,得出结论,到时候可以根据业务模型和需求,或者根据客户需求 选择不同的方案。
5.在客户方进行性能测试,达到客户要求的性能标准满足客户使用的需求。
性能测试的时机:
1.上线新版本
2.上线新的环境/新的主机
3.开辟了新的区域
4.PoC 测试
5.性能专项测试
性能测试的步骤:
1.明确测试的目标。
确定性能测试场景,集群规模和规格,数据量,数据格式,压缩算法等。比如版本迭代测试,需要和历史版本集群规格和参数对齐,以便比较版本性能是否劣化;Poc测试需要明确客户场景;软件发行商测试,需要与发行商集群规模保持一致。
2.申请主机环境和测试周期
3.搭建运行环境和监控
获取的性能指标 部分包含:性能数据,比如带宽,磁盘IO,CPU,内存等指标
4.开展测试:
测试过程中使用nmon或者其他系统监控的工具记录系统指标变化,以供发现系统瓶颈,利于后续调优。
5.针对性能结果进行调整优化,进行迭代性能测试
6.出具性能测试报告
大数据组件测试工具和方法
组件 | 方法 | 其他方法 |
HDFS | HiBench的DFSIO | |
Alluxio | HiBench的DFSIO | Alluxio自带的runMiniBenchMark |
spark | Hibench的wordkcount/terasort | |
MapReduce | Hibench的wordkcount/terasort | |
Hive SQL | TPC-H/TPC-DS | |
spark SQL | TPC-H/TPC-DS | |
presto | TPC-H/TPC-DS | |
impala | TPC-H/TPC-DS | |
kafka | 自带的性能测试工具 |
Flink | TPC-DS /HiBench的wordcount和fixwindow | |
ElasticSearch | Rally | |
TiDB | sysbench/TPC-H /TPC-DS | |
Clickhouse | TPC-H /TPC-DS | |
apache Doris | TPC-H /TPC-DS |
除了上述主流的大数据主键外还有Hbase等
除了主流的测试工具 Hibench 之外还有雅虎的大数据测试套件
https://github.com/Intel-bigdata/HiBench
https://github.com/elastic/rally
https://github.com/yahoo/streaming-benchmarks
https://github.com/brianfrankcooper/YCSB
大数据性能调优:
1.在大数据领域普遍存在数据倾斜的问题,需要参考对应组件的官方文档
2.参考业界的案例介绍
大数据相关的测试:
基准测试:
单一用户单个事务的测试,目的是在对选择的用户在无压力的情况下获取系统处理单个请求的情况
负载测试:
通过逐步增加系统的负载,测试系统性能的变化
稳定性测试:
通过给系统加载一定的业务压力,运行7*24 小时,以此检测系统是否稳定运行。
功能测试:
特别是在OLAP引擎选择的时候,需要测试其对标准SQL支持的情况,如部门不支持update和delete操作,
不支持with语句,不支持except和intersection操作等
性能需求:
CPU,内存,磁盘IO,网络负载使用率不超过80%
响应时间 90%的 读取 写入 导出 导入 不超过 3s,有不到10%的响应时间不超过 5s
测试案例:
1.在不同数据量 (100G 500G 1T) 分别对Hadoop和spark 进行读取,数据写入,数据导出 数据导入基准测试
2.在不同数据量下进行并行 和读写混合测试
3.在不同数据量下进行 7*24小时的数据稳定性测试
测试观察指标:
1.CPU 使用率
2.内存使用率
3.IO
4.网络
5.响应时间
6.其他指标