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. gnu c语言中的?:的作用

    #include <stdio.h> #include <stdlib.h> char * test() { return "abc" ?: "f ...

  2. 监控RAC中的临时表空间

    it is from metalink:Note:465840.1 1>Monitor the temp space allocation to make sure each instance ...

  3. Microsoft Office 2007的ContentType

    当从浏览器返回一个文件时,需要指定ContentType,以下是Office2007对应的值: "application/vnd.openxmlformats-officedocument. ...

  4. 动手学servlet(一) 第一个servlet程序

    1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...

  5. Spring的java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!异常处理方法

    使用Spring提供的模板类HibernateDaoSupport,如果单纯的使用'命名参数'的形式编写HQL语句如: public class UserDaoImpl extends Hiberna ...

  6. java中好玩的案例

    1:实现猜数字游戏, 如果没有猜对可以继续输入你猜的数字,如果猜对了停止程序. 最多只能猜三次,如果还剩下最后一次机会的时候要提醒用户. 代码: Random random = new Random( ...

  7. 怎样用CODESOFT打印连续的条码标签?

    在实际工作中,经常会用CODESOFT条 码打印软件来实现打印连续的条码标签,将这些标签按递增或递减等方式连续打印.这样设置可大大提高用户的工作效率.实现在CODESOFT 2015打印连续条码标签, ...

  8. Genymotion中文手册(官方用户手册翻译)

    目录 1.概述    2 2.特点    2 2.1最擅长于虚拟Android    2 2.2高可控性    2 2.3管理你的设备    2 2.4从Eclipse中开启虚拟设备    3 3.要 ...

  9. python中时间和时区

    1.时区 http://blog.csdn.net/cz157733055/article/details/38319195 2.时间 datetime.timedelta代表两个时间之间的的时间差 ...

  10. 学习记录 java 哈希

    哈希表(Hash Table,又叫散列表),是存储键值对(Key-value)的表,之所以不叫它Map(键值对一起存储一般叫做Map),是因为它下面的特性:它能把关键码(key)映射到表中的一个位置来 ...