spark性能测试理论-Benchmark(转)

摘要:
Benchmark使用压力测试来挖掘整个系统的性能状态,而概要文件工具最大化了系统的运行状态和性能指标,使用户可以轻松诊断性能问题并对其进行调整。因为大数据环境中的数据类型很复杂,负载也很多样,所以大数据Benchmark需要生成三种类型的数据和相应的负载。

一、Benchmark简介
Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, tests were developed that allowed comparison of different architectures.”Benchmark在计算机领域应用最成功的就是性能测试,主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。
性能调优的两大利器是Benchmark和profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而profile工具最大限度地呈现系统的运行状态和性能指标,方便用户诊断性能问题和进行调优。
二、Benchmark的组成
Benchmark的核心由3部分组成:数据集、 工作负载、度量指标。
1、数据集
数据类型分为结构化数据、半结构化数据和非结构化数据。由于大数据环境下的数据类型复杂,负载多样,所以大数据Benchmark需要生成3种类型的数据和对应负载。
1)结构化数据:传统的关系数据模型,可用二维表结构表示。典型场景有电商交易、财务系统、医疗HIS数据库、政务信息化系统等等;
2)半结构化数据:类似XML、HTML之类,自描述,数据结构和内容混杂在一起。典型应用场景有邮件系统、Web搜索引擎存储、教学资源库、档案系统等等,可以考虑使用Hbase等典型的KeyValue存储;
3)非结构化数据:各种文档、图片、视频和音频等。典型的应用有视频网站、图片相册、交通视频监控等等。
2、工作负载
互联网领域数据庞大,用户量大,成为大数据问题产生的天然土壤。对工作负载理解和设计可以从以下几个维度来看
1)密集计算类型:CPU密集型计算、IO密集型计算、网络密集型计算;
2)计算范式:SQL、批处理、流计算、图计算、机器学习;
3)计算延迟:在线计算、离线计算、实时计算;
4)应用领域:搜索引擎、社交网络、电子商务、地理位置、媒体、游戏。
3、度量指标
性能高估的两大利器就是Benchmark和Profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而Profile工具最大限度地呈现系统的运行时状态和性能指标,方便用户诊断性能问题和进行调优。
1)工具的使用
a)在架构层面:perf、nmon等工具和命令;
b)在JVM层面:btrace、Jconsole、JVisualVM、JMap、JStack等工具和命令;
c)在Spark层面:web ui、console log,也可以修改Spark源码打印日志进行性能监控。
2)度量指标
a)从架构角度度量:浮点型操作密度、整数型操作密度、指令中断、cache命中率、TLB命中;
b)从Spark系统执行时间和吞吐的角度度量:Job作业执行时间、Job吞吐量、Stage执行时间、Stage吞吐量、Task执行时间、Task吞吐量;
c)从Spark系统资源利用率的角度度量:CPU在指定时间段的利用率、内存在指定时间段的利用率、磁盘在指定时间段的利用率、网络带宽在指定时间段的利用率;
d)从扩展性的角度度量:数据量扩展、集群节点数据扩展(scale out)、单机性能扩展(scale up)。
三、Benchmark的运用
1、Hibench:由Intel开发的针对Hadoop的基准测试工具,开源的,用户可以到Github库中下载
2、Berkeley BigDataBench:随着Spark的推出,由AMPLab开发的一套大数据基准测试工具,官网介绍
3、Hadoop GridMix:Hadoop自带的Benchmark,作为Hadoop自带的测试工具使用方便、负载经典,应用广泛
4、Bigbench:由Teradata、多伦多大学、InfoSizing、Oracle开发,其设计思想和利用扩展具有研究价值,可以参阅论文Bigbench:Towards an industry standard benchmark for big data analytics。
5、BigDataBenchmark:由中科院研发,官方介绍
6、TPC-DS:广泛应用于SQL on Hadoop的产品评测
7、其他的Benchmark:Malstone、Cloud Harmony、YCSB、SWIM、LinkBench、DFSIO、Hive performance Benchmark(Pavlo)等等

免责声明:文章转载自《spark性能测试理论-Benchmark(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇css选择符的渲染效率iOS: 如何调节UITabbarItem的图片和文字位置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Insert的一个小应用——复制数据

    越深入的学习,越觉得一种知识的深厚底蕴。   平时使用SQL语言中的Insert的方式是:insert into Table value()。今天使用SQL的Insert语句时。 实现一个功能,复制一条数据,主键不同,数据相同。 举例如下: 1、表结构    环境为Sql Server2008。 2、Code   (1)把Value句换成sele...

Decimal为SQL Server、MySql等数据库的一种数据类型

Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部份以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间,例如百分比使用decimal(4,2)即可。存储数据范围是:-10^38~10^38-1 的固定精度和小数位的数字。一个decimal类型的数据占用了2~17...

Hadoop企业级应用

  Hadoop专业解决方案之构建Hadoop企业级应用   一、大数据的挑战   大数据面对挑战是你必须重新思考构建数据分析应用的方式。传统方式的应用构建是基于数据存储在不支持大数据处理的基础之上。这主要是因为一下原因:   1.传统应用的基础设施是基于传统数据库访问模式设计的,它不支持Hadoop;   2.数据存储在Hadoop之上,实时访问集群...

react异步数据如ajax请求应该放在哪个生命周期?

react请求接口数据是在componentDidMount 还是componentWillMount周期好?React数据获取为什么一定要在componentDidMount里面调用? 对于同步的状态改变,是可以放在componentWillMount,对于异步的,最好好放在componentDidMount。但如果此时有若干细节需要处理,比如你的组件需...

mui 上拉刷新加载template数据

html没什么好说的,就是主要刷新列表要套多套一层,要不动画会不见 //待刷新区域 <div style="margin-top: 30px;"> <div id="cx_lst2"> </div> </div> //临时数组var cx = [{ "ypmc": "11", "jg": 100, "id":...

SQL Server表的数据量大小查询

今天想在服务器上还原一个DB,发现磁盘空间不够,查看发现,其中一个DB竟然有56G了。因此想收缩一下这个DB,发现大小没多大变化。然后在网上找了找SQL脚本,看能不能查看下哪个表的数据量那么大。 网上找到的脚本: CREATE TABLE #Temp (NAME nvarchar(100),ROWS char(20),reserved varchar(18...