Spark硬件配置及性能调研报告

Spark官方推荐硬件配置

存储系统

让Spark尽可能的与HDFS运行在同一节点上,最简单的方式是使用Sparkstandalone mode部署Spark,然后分配Spark和Hadoop的内存和CPU使用,避免冲突。当然,你也可以在一些通用的集群管理器上同时运行Hadoop和Spark,如:Mesos或Hadoop YARN。

如果不能让Spark和HDFS运行在同一节点上的话,那么尽可能让它们在同一局域网内。

但是对于像HBase这样的低延迟数据存储,最好在与存储系统不同的节点上运行计算任务以避免干扰。

本地磁盘

虽然Spark能够在内存中完成大部分运算,但它依然需要本地磁盘(如:存储数据无法装载进内存、存储各个阶段输出的临时文件)。建议每个节点配4-8块磁盘,以非独立冗余磁盘阵列挂载(只需要单独挂载即可)。在Linux中,使用noatime选项挂载磁盘以减少不必要的写操作。在Spark中,可以配置spark.local.dir变量以逗号分离指定本地磁盘目录。如果该节点上也有HDFS,可以使用与HDFS相同的磁盘。

内存

通常,Spark在8GB到数百GB内存的机器上运行良好。在任何情况下,我们都建议给Spark分配至多75%的内存,剩下的部分留给操作系统和缓存。

你所需的内存大小取决于你的应用。如需确定你的应用在使用某些数据集时需要多少内存,可以先加载部分数据集然后通过Spark的监控UI(http://<driver-node>:4040)查看其占用内存大小。需要注意的是,内存占用很大程度上受存储级别和序列化格式影响——更多内存优化建议,参考调优指南

最后,需要注意Java虚拟机在超过200GB内存的机器上并非总是表现良好。如果你购买的机器内存大于200GB,建议在单个节点上启动多个worker JVM。在Spark独立部署模式下(standalone mode),你可在conf/spark-env.sh中设置SPARK_WORKER_INSTANCES来配置单个节点上的worker个数,以及通过SPARK_WORKER_CORES来设置单个worker占用的CPU核心数。

网络

以我们的经验来说,当数据加载进内存,那么多数Spark应用的瓶颈都是网络带宽。使用万兆网(10 Gigabit)以上的网络可以优化应用速度。对于一些包含有分布式归约相关算子(distributed reduce相关算子,如:group-by系列,reduce-by系列以及SQL join系列)的应用尤是如此。对于任何给定应用,你可以在应用监控UI上(http://<driver-node>:4040)查看Spark混洗(Spark Shuffles)跨网络传输了多少数据。

CPU内核

Spark在拥有数十个CPU内核的单机上也能表现良好,因为它尽可能少的减少了线程间数据的共享。建议每台机器至少配置8-16个内核。当然,根据你的工作量你可能需要更多。记住,一旦数据加载进内存,绝大多数应用的瓶颈要么是CPU,要么是网络。

官方推荐配置总结

官方推荐配置从存储系统、本地磁盘、内存、网络以及CPU核心数五个方面来谈的,可以得出以下结论:

1、Spark需要从外部的存储系统读取数据,则应距离存储系统越近越好,可以与HDFS部署在同一节点,但对于HBase这样的低延迟数据存储,最好在与存储系统不同的节点上运行计算任务以避免干扰。

2、虽然Spark能够在内存中完成大部分运算,但它依然需要本地磁盘。建议每个节点配4-8块磁盘,以非独立冗余磁盘阵列挂载。

3、内存大小取决于具体应用,可以通过Spark的监控UI(http://<driver-node:4040>)查看部分数据集运行时占用内存大小,从而推断出实际所需内存。同时内存占用很大程度上受存储级别和序列化格式影响。当内存超过200GB时,需要特殊配置。

4、网络越快越好。

5、CPU建议每台机器至少配置8-16内核。

6、记住,数据一旦加载进内存,绝大多数应用的瓶颈要么是CPU,要么是网络。


Spark性能官方基准测试

测试背景

为了验证Spark的性能,Spark开发团队于2014年参加了Sort Benchmark比赛。为什么参加排序比赛呢?因为排序比赛的核心是洗牌操作(Shuffle Operation),洗牌操作跨所有机器移动数据,几乎是所有分布式数据处理工作的基础。总之,排序比赛最能体现出系统的数据处理能力。Sort Benchmark比赛有多种类别,Spark团队参加了Daytona Gray类别的比赛——测试系统排序100TB(1万亿条记录)数据的速度。

测试结果

硬件环境:

206 Amazon EC2 i2.8xlarge nodes x(32 vCores - 2.5Ghz Intel Xeon E5-2670 v2, 244GBmemory, 8x800 GB SSD)

Spark团队使用了206台亚马逊ECS i2.8xlarge服务器,每台配置CPU为32核心-2.5Ghz Intel Xeon E5-2670 v2处理器,244GB内存,8*800GB SSD硬盘。

注意:关于到底是用了多少台机器,Sort Benchmark发布的测试结果中显示用了207台,而Spark创始人之一Reynold Xin在博客中说是用了206台,这一台的差异估计是没有算服务管理主机吧(我是这么理解的,这里就以Reynold Xin的为标准吧)。

测试结果:

spark 100TB
数据量 100TB
耗时 23分钟
节点数 206
内核总数 6592
集群磁盘吞吐量 618GB/s
是否符合Sort Benchmark Daytona规则
网络 虚拟机 (EC2) 10Gbps网络
排序速率 4.27 TB/min
排序速率/节点数 20.7 GB/min

除了排序100TB大小的数据外,Spark团队还排序了1PB大小的数据量,测试结果如下:

spark 1PB
数据量 1000TB
耗时 234分钟
节点数 190
内核总数 6080
集群磁盘吞吐量 570 GB/s
是否符合Sort Benchmark Daytona规则 否(因为目前还没有1PB数据的排序比赛)
网络 虚拟机 (EC2) 10Gbps网络
排序速率 4.27 TB/min
排序速率/节点数 22.5 GB/min

其他测试

除了Spark官方测试外,还有其他一些测试数据仅供参考。

视频处理公司Conviva,使用Spark将数据子集加载到RDD中。对于200GB压缩过的数据进行查询和聚合操作,并运行在两台Spark机器上,占用内存为96GB,执行完全部操作需要耗费30分钟左右的时间。

参考资料

[1] Spark官方网站硬件配置资料. http://spark.apache.org/docs/latest/hardware-provisioning.html.
[2] Reynold Xin.Apache Spark officially sets a new record in large-scale sorting. https://databricks.com/blog/2014/11/05/spark-officially-sets-a-new-record-in-large-scale-sorting.html.
[3] SortBenchmark官方网站. http://sortbenchmark.org
[4]CenOS关于noatime的说明. https://www.centos.org/docs/5/html/Global_File_System/s2-manage-mountnoatime.html.
[5] 残霏.磁盘阵列百度百科. https://baike.baidu.com/item/%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97/1149823?fr=aladdin&fromid=33858&fromtitle=RAID.

写在最后

聊技术,不止于技术

欢迎大家关注我的个人公众号:WU双,在这里我会与大家分享技术文章、管理知识以及个人的一些思想感悟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容