RDD可以很好地适用于支持数据并行的批量分析应用,包括数据挖掘,机器学习,图算法等,因为这些程序通常都会在很多记录上执行相同的操作。RDD不太适合那些异步更新共享状态的应用,例如并行web爬行器。因此,我们的目标是为大多数分析型应用提供有效的编程模型,而其他类型的应用交给专门的系统。

关于RDD详见:

弹性分布式数据集:一种基于内存的集群计算的容(二):弹性分布式数据集(RDD)

硬件环境:

开发机器是 3台 Intel(R) Xeon(R) CPU E5440 @ 2.83GHz双核 2.8G 4G内存

操作系统:

Red Hat Enterprise Linux Server release 5.7 (Tikanga)

Spark配置:

三节点,每个节点2G内存,14 个维度,100个类别,10次迭代,使用不同大小样例文件分析。

结论1:定义0.8(数据量/2048/3)作为三节点的阈值,当运行数据在阈值内时性能成单调递增,当超过该阈值时,性能急剧下降,当超过阈值2%时性能下降53.11937%,当超过34.01326%,性能下降70.80896%

以下是测试数据:

序号 数据文件大小(M) 记录条数 耗时 数据文件/耗时 数据/内存 数据/内存/节点数
0 33.33 147,106 10 3.333344 0.016274 0.005425
1 100 441,319 13 7.692317 0.048828 0.016276
2 166.67 735,533 15 11.11118 0.081382 0.027127
3 233.33 1,029,746 20 11.66652 0.113931 0.037977
4 341.33 1,506,371 23 14.8406 0.166665 0.055555
5 512 2,259,557 30 17.06666 0.25 0.083333
6 682.67 3,012,743 42 16.25402 0.333335 0.111112
7 853.33 3,765,929 45 18.96291 0.416665 0.138888
8 1,024.00 4,519,115 57 17.96494 0.5 0.166667
9 1,194.67 5,272,301 65 18.37953 0.583335 0.194445
10 1,365.33 6,025,487 73 18.70316 0.666665 0.222222
11 1,536.00 6,778,673 80 19.20001 0.75 0.25
12 1,706.67 7,531,859 95 17.96491 0.833335 0.277778
13 1,877.33 8,285,044 147 12.77097 0.916665 0.305555
14 2,048.00 9,038,230 104 19.6923 1 0.333333
15 2,218.66 9,791,416 113 19.63417 1.08333 0.36111
16 2,389.33 10,544,602 124 19.26881 1.166665 0.388888
17 2,560.01 11,297,788 175 14.62861 1.250005 0.416668
18 2,730.66 12,050,974 184 14.84056 1.33333 0.444443
19 2,901.34 12,804,160 164 17.69109 1.41667 0.472223
20 3,072.00 13,557,346 155 19.81934 1.5 0.5
21 3,242.67 14,310,532 162 20.01647 1.583335 0.527778
22 3,413.34 15,063,718 166 20.56231 1.66667 0.555557
23 3,754.68 16,570,089 179 20.97585 1.83334 0.611113
24 4,266.68 18,829,646 189 22.57501 2.08334 0.694447
25 4,500.01 19,859,392 209 21.53114 2.197271 0.732424
26 4,666.68 20,594,925 202 23.10235 2.278652 0.759551
27 4,766.68 21,036,244 202 23.5974 2.32748 0.775827
28 4,866.68 21,477,563 226 21.53396 2.376309 0.792103
29 4,966.68 21,918,882 220 22.5758 2.425137 0.808379
30 5,066.68 22,360,201 458 11.06261 2.473965 0.824655
31 5,120.01 22,595,577 463 11.05834 2.500005 0.833335
32 6,656.01 29,374,250 1010 6.59011 3.250005 1.083335

性能趋势图:

Spark配置:

一节点, 2G内存,14 个维度,100个类别,10次迭代。

结论2:定义0.9(数据量/2048)作为三节点的阈值,当运行数据在阈值内时性能成单调递增,当超过该阈值时,性能急剧下降,当超过阈值8.3334961%时性能下降57.61797318%,当超过18.18167291%,性能下降66.4701143%

当超过36.36441116%,性能下降94.14757913%

序号 数据文件大小(M) 记录条数 耗时 数据文件/耗时 数据/内存
0 33.33 147,106 10 3.333344 0.016274
1 100.00 441,319 20 5.000006 0.048828
2 166.67 735,533 27 6.17288 0.081382
3 233.33 1,029,746 34 6.862657 0.113931
4 341.33 1,506,371 45 7.585197 0.166665
5 512.00 2,259,557 64 7.999997 0.25
6 682.67 3,012,743 85 8.031401 0.333335
7 853.33 3,765,929 102 8.365989 0.416665
8 1,024.00 4,519,115 118 8.67798 0.5
9 1,194.67 5,272,301 137 8.720216 0.583335
10 1,365.33 6,025,487 153 8.923729 0.666665
11 1,536.00 6,778,673 176 8.727279 0.75
12 1,706.67 7,531,859 193 8.84283 0.833335
13 1,877.33 8,285,044 223 8.41853 0.916665
14 2,048.00 9,038,230 574 3.567944 1
15 2,218.66 9,791,416 786 2.822724 1.08333
16 2,389.33 10,544,602 1134 2.106995 1.166665
17 2,560.01 11,297,788 5196 0.492688 1.250005

性能趋势图:

总论:在执行Spark程序的时候需预估所需的内存,当超过一定阈值后,性能将急剧下降。如有不对或不足的地方请指正。

版权声明:原创作品,转载请保持文章完整性,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。

博客地址:http://www.ninqing.net/

微博地址:http://weibo.com/ninqing

Posted in spark.Tagged spark性能测试.

【转】Spark性能测试报告的更多相关文章

  1. Spark性能测试报告与调优参数

    1.代码中尽量避免group by函数,如果需要数据聚合,group形式的为rdd.map(x=>(x.chatAt(0),x)).groupbyKey().mapValues((x=>x ...

  2. 【转载】Spark性能优化指南——高级篇

    前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...

  3. 【转载】 Spark性能优化指南——基础篇

    转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...

  4. 【转】【技术博客】Spark性能优化指南——高级篇

    http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...

  5. 【转】Spark性能优化指南——基础篇

    http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&sn=2f413828d1fdc6a ...

  6. intel Xeon(R) CPU E5-2650 v2 性能测试报告

                                          intel  Xeon(R) CPU E5-2650 v2                                 ...

  7. Spark性能调优之代码方面的优化

    Spark性能调优之代码方面的优化 1.避免创建重复的RDD     对性能没有问题,但会造成代码混乱   2.尽可能复用同一个RDD,减少产生RDD的个数   3.对多次使用的RDD进行持久化(ca ...

  8. [Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

    本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...

  9. [Spark性能调优] 第二章:彻底解密Spark的HashShuffle

    本課主題 Shuffle 是分布式系统的天敌 Spark HashShuffle介绍 Spark Consolidated HashShuffle介绍 Shuffle 是如何成为 Spark 性能杀手 ...

随机推荐

  1. sql游标的使用

    转载:http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263988.html 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集 ...

  2. poj 2109 Power of Cryptography

    点击打开链接 Power of Cryptography Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 16388   Ac ...

  3. maven配置开发

    1.项目中使用Log4j对其日志进行配置管理,采取的方式一种是通过properties文件设置,另一种方式就是通过设置xml文件的配置. 使用场景: 编程模型:log.err();log.debug( ...

  4. DPdao

    hrbust1053 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1053 #in ...

  5. js面向过程改写成面向对象--通用方法

    响亮的标题:一个万能的,保底的.面向过程改写成面向对象的方法 前提朗读:很多刚接触js面向对象的时候都不知道如何能快速的写出一个面向对象的程序,这个是必然的现象,不是每一位学js的一上来就会写面向对象 ...

  6. 解决Cannot find or open the PDB file问题

    今天使用opencv里的mat想要保存数据里边的像素的平均值和标准差: 但是编程好了之后会出现下面的问题,不能找到pdb file .下面将提供三种解决方法以及产生问题的原因. 程序也运行不出来,整个 ...

  7. maven + appium + testng + java之pom.xml

    参考来源:<https://search.maven.org/remotecontent?filepath=io/appium/java-client/3.3.0/java-client-3.3 ...

  8. opencv 连通域需要的函数解析

    OpenCV支持大量的轮廓.边缘.边界的相关函数,相应的函数有moments.HuMoments.findContours.drawContours.approxPolyDP.arcLength.bo ...

  9. VC获取并修改计算机屏幕分辨率(MFC)

    //检测当前分辨率 int Width = GetSystemMetrics(SM_CXSCREEN); int Height = GetSystemMetrics(SM_CYSCREEN); DEV ...

  10. AD转换精度的计算

    声明原文来源于:http://wenku.baidu.com/view/1e6d8f3083c4bb4cf7ecd1c2.html 讨论AD转换分辨率的算法(zt) (1)在总长度为5米的范围里,平均 ...