提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
Benchmark简介
Benchmark是一个评价方式,在整个计算机领域有着长期的应用。在计算机领域应用最为成功的就是性能测试,主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。其主要利用压力测试挖掘整个系统的性能情况。
Benchmark组成
Benchmark主要由三大部分:数据集、 工作负载、度量指标。
数据集
而数据集又分为结构化数据、半结构化数据和非结构化数据。
结构化数据
结构化数据又为传统关系模型,可用二维表结构表示。如下图所示
半结构化数据
类似XML、HTML之类,半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。比如:(类似于html的标签)
<person>
<name>A</name>
<age>13</age>
<gender>female</gender>
</person>
非结构化数据
顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。一般的存储方式是整体存储,而且一般存储为二进制的数据格式。
工作负载
由于当前互联网数据量和用户量都非常巨大,对工作负载的理解可以从密集计算类型(IO密集型计算、网络密集型计算)、计算范式(批处理、流计算、图计算、机器学习)、计算延迟(实时计算、离线计算)、应用领域(游戏、媒体等)。
度量指标
当前较为流行的性能估计主要为Benchmark和Profile两大工具,Benchmark用压力测试挖掘整个系统的性能状况。而Profile工具最大限度地呈现系统的运行时状态和性能指标。
为了得到指标,我们可以利用以下几种工具:
架构层面:perf、nmon等工具和命令;
JVM层面:btrace、Jconsole、JVisualVM、JMap、JStack等工具和命令;
在Spark层面:web ui、console log,也可以修改Spark源码打印日志进行性能监控。
指标方面,我们主要从以下几个方面出发,测试一个目标各个方面的性能。
架构角度度量:浮点型操作密度、整数型操作密度、指令中断、cache命中率、TLB命中;
Spark系统执行时间和吞吐的角度度量:Job作业执行时间、Job吞吐量、Stage执行时间、Stage吞吐量、Task执行时间、Task吞吐量;
Spark系统资源利用率的角度度量:CPU在指定时间段的利用率、内存在指定时间段的利用率、磁盘在指定时间段的利用率、网络带宽在指定时间段的利用率;
扩展性的角度度量:数据量扩展、集群节点数据扩展(scale out)、单机性能扩展(scale up)。
Benchmark的运用
Hibench
由Intel开发的针对Hadoop的基准测试工具,其官方的介绍是:
HiBench 是一个大数据基准测试套件,可帮助评估不同的大数据框架的速度、吞吐量和系统资源利用率。它包含一组 Hadoop、Spark 和流式工作负载,包括 Sort、WordCount、TeraSort、Repartition、Sleep、SQL、PageRank、Nutch 索引、Bayes、Kmeans、NWeight 和增强型 DFSIO 等。它还包含多个用于 Spark Streaming 的流式工作负载、Flink、Storm 和 Gearpump。
下载连接
Berkeley BigDataBench
Berkeley BigDataBench是由AMPLab开发的一套大数据基准测试工具。
官网链接
Hadoop GridMix
Hadoop Gridmix是针对hadoop系统的基准测试程序。它具备评测大规模数据处理系统所需的各个功能模块,包括:产生数据,生成并提交作业,统计作业完成时间等。主要特点是免费,方便。
我们可以在HADOOP_HOME目录下找到src\benchmarks,可以看到gridmix,gridmix2两个目录。gridmix下有多个测试类型的运行脚本。而gridmix2目录下src目录及build.xml,用ant编译生成gridmix.jar,用于执行测试。
TPC-DS
TPC-DS是一个面向决策支持系统(decision support system)的包含多维度常规应用模型的决策支持基准,包括查询(queries)与数据维护,得到的基准主要支持以下特性:
1、测试大规模数据。
2、执行需求多样或复杂的查询。
3、解决大数据问题,如关系型数据库(RDBMS),或基于Hadoop/Spark的系统等。
官网地址
其他应用
其余Benchmark:Malstone、Cloud Harmony、YCSB、SWIM、LinkBench、DFSIO、Hive performance Benchmark(Pavlo)等等
总结
以上就是Benchmark的主要内容,本文仅仅简单介绍了Benchmark方面,是为后续学习提供一个方向,如需要深入研究Benchmark需要多加使用本文种提到的工具,实际测试一个数据或研究一个项目来更好的学习。后续会发表更多关于Benchmark的文章