说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

1/10计算资源,1/3耗时,Spark颠覆MapReduce保持的排序记录

HTML文档下载 WORD文档下载 PDF文档下载
Spark在内存计算更具优势已众所周知,然而在许多人心里,磁盘数据计算上,Hadoop仍然老当益壮。为了打破这个误解,近日Databricks与AWS一起完成了一个Daytona Gray类别的Sort Benchmark,并创造了该测试的新纪录。

在过去几年,Apache Spark的采用以惊人的速度增加着,通常被作为MapReduce后继,可以支撑数千节点规模的集群部署。在内存中数据处理上,Apache Spark比MapReduce更加高效已经得到广泛认识;但是当数据量远超内存容量时,我们也听到了一些机构在Spark使用上的困扰。因此,我们与Spark社区一起,投入了大量的精力做Spark稳定性、扩展性、性能等方面的提升。既然Spark在GB或TB级别数据上运行良好,那么它在PB级数据上也应当同样如此。

为了评估这些工作,最近我们与AWS一起完成了一个Sort Benchmark(Daytona Gray类别)测试,一个考量系统排序100TB数据(万亿条记录)速度的行业基准测试。在此之前,这项基准测试的世界记录保持者是雅虎,使用2100节点的Hadoop MapReduce集群在72分钟内完成计算。而根据测试结果得知,在使用了206个EC2节点的情况下,Spark将排序用时缩短到了23分钟。这意味着在使用十分之一计算资源的情况下,相同数据的排序上,Spark比MapReduce快3倍!

此外,在没有官方PB排序对比的情况下,我们首次将Spark推到了1PB数据(十万亿条记录)的排序。这个测试的结果是,在使用190个节点的情况下,工作负载在短短不到4小时内完成,同样远超雅虎之前使用3800台主机耗时16个小时的记录。同时,据我们所知,这也是公用云环境首次完成的PB级排序测试。

Hadoop World Record Spark 100 TB Spark 1 PB
Data Size 102.5 TB 100 TB 1000 TB
Elapsed Time 72 mins 23 mins 234 mins
# Nodes 2100 206 190
# Cores 50400 6592 6080
# Reducers 10,000 29,000 250,000
1.42 TB/min 4.27 TB/min 4.27 TB/min
Rate/node 0.67 GB/min 20.7 GB/min 22.5 GB/min
Sort Benchmark Daytona Rules Yes Yes No
Environment dedicated data center EC2 (i2.8xlarge) EC2 (i2.8xlarge)

为什么会选择排序?

排序的核心是shuffle操作,数据的传输会横跨集群中所有主机。Shuffle基本支持了所有的分布式数据处理负载。举个例子,在一个连接了两个不同数据源的SQL查询中,会使用shuffle将需要连接数据的元组移动到同一台主机;同时,类似ALS等协同过滤算法同样需要依赖shuffle在网络中发送用户或产品的评级(ratings)和权重(weights)。

大部分数据管道开始时都会有大量的原始数据,但是在管道处理过程中,随着越来越多不相干数据被过滤,或者中间数据被更简洁的表示,数据量必然会减少。在100TB原始数据的查询上,网络上shuffle的数据可能只有100TB的一小部分,这种模式也体现在MapReduce的命名。

然而,排序却是非常有挑战的,因为数据管道中的数据量并不会减少。如果对100TB的原始数据进行排序,网络中shuffle的数据必然也是100TB。同时,在Daytona类型的基准测试中,为了容错,不管是输入数据还是输出数据都需要做备份。实际上,在100TB的数据排序上,我们可能会产生500TB的磁盘I/O及200TB的网络I/O。

因此,基于上述原因,当我们寻找Spark的测量标准和提升办法时,排序这个最苛刻的工作负载成为了对比的不二之选。

产生如此结果的技术实现

在超大规模工作负载上,我们投入了大量的精力来提升Spark。从细节上看,与这个基准测试高度相关的工作主要有3个: 

首先及最关键的,在Spark 1.1中我们引入了一个全新的shuffle实现,也就是基于排序的shuffle(SPARK­2045)。在此之前,Spark做的是基于哈希的shuffle实现,它需要在内存中同时保持P(reduce的分割数量)个缓冲区。而在基于排序的shuffle下,任何时候系统只使用一个缓冲区。这个操作将显著地减少内存开销,因此同一个场景下可以支撑数十万任务(我们在PB排序中使用了2.5万个任务)。

其次,我们修订了Spark的网络模型,通过JNI(SPARK­2468)使用基于Netty的Epoll本地端口传输。同时,新的模型还拥有了独立的内存池,绕过了JVM的内存分配器,从而减少垃圾回收造成的影响。

最后但同样重要的是,我们建立了一个外部shuffle服务(SPARK­3796),它与Spark本身的执行器完全解耦。这个新的服务基于上文所述的网络模型,同时,在Spark本身的执行器忙于GC处理时,它仍然可以保证shuffle文件处理的继续执行。


通过这三项改变,我们的Spark集群在map阶段单 节点可以支撑每秒3GB的IO吞吐,在reduce阶段单节点可以支撑1.1GB,从而榨干这些机器间10Gbps的网络带宽。

更多的技术细节

TimSort:在Spark 1.1版本中,我们将默认排序算法从 quicksort转换到TimSort,它是合并排序和嵌入排序的一个衍生。在大部分现实世界数据集中,TimSort比quicksort更加高效,在部分排序数据中表现则更为优秀。不管在map阶段还是Reduce阶段,我们都使用了TimSort。

缓存位置的利用:在排序基准测试中,每条记录的大小都是100字节,而被排序的键是前10个字节。在排序项目的性能分析阶段,我们注意到缓存命中率不如人意,因为每次比较都需要进行一个随机的对象指针查询。为此,我们重新设计了记录在内存的布局,用16字节长度(两个长整形)的记录来表示每条记录。在这里,前10个字节代表了排序的键,后4个字节则代表了记录的位置(鉴于字节顺序和符号,这点并不容易发现)。这样一来,每个比较只需要做一次缓存查询,而且它们都是连续的,从而避免了随机的内存查询。

使用TimSort和新的布局方式来利用缓存命中,排序所占用的CPU时间足足减少了5倍。

大规模下的容错机制:在大规模下,许多问题都会暴露。在这个测试过程中,我们看到因为网络连通问题出现的节点丢失,Linux内核自旋,以及因为内存碎片整理造成的节点停滞。幸运的是,Spark的容错机制非常好,并且顺利的进行故障恢复。

AWS的能量:如上文所述,我们使用了206个i2.8xlarge实例来跑这个I/O密集测试。通过SSD,这些实例交付了非常高的I/O吞吐量。我们将这些实例放到一个VPC放置组中,从而通过单SR-IOV增强网络性能,以获得高性能(10Gbps)、低延时和低抖动。

Spark只能在内存中大放异彩?

这个误解一直围绕着Spark,特别是刚进入社区中的新人更是如此认为。不错,Spark因为内存计算的高性能闻名,然而Spark的设计初衷和理念却是一个通用的大数据处理平台——不管是使用内存还是磁盘。在数据无法完全放入内存时,基本上所有的Spark运算符都会做一些额外的处理。通俗来说,Spark运算符是MapReduce的超集。

如本次测试所示,Spark可以胜任集群内存大小N倍的数据集处理。

总结

击败Hadoop MapReduce集群创造的大规模数据处理记录不仅是对我们工作的一个证明,也是对Spark承诺的一个验证——在任何数据体积,Spark在性能和扩展性上都更具优势。同时,我们也希望在用户使用过程中,Spark可以带来时间和开销上的双节省。

博文链接: Spark Breaks Previous Large-Scale Sort Record(翻译/童阳 责编/仲浩)

更多Spark及Hadoop信息可关注2014年12月12-14日在北京召开的2014中国大数据技术大会(暨第二届CCF大数据学术会议),届时百余位国内外顶尖技术人员、学术大师将送上第一手的实践分享。


免费订阅“CSDN云计算(左)CSDN大数据(右)”微信公众号,实时掌握第一手云中消息,了解最新的大数据进展!

CSDN发布虚拟化、Docker、OpenStack、CloudStack、数据中心等相关云计算资讯,     分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务。        

甲骨文公司宣布推出最新Java EE 7 10款最佳CSS/jQuery开源图片说明 创业者应避免对投资者说的五句话 直接拿来用!最火的iOS开源项目(二) 西部数据Pat Wilkison:云计算市场是创新热点 猎豹浏览器发布手机版:PM谈开发理念 成为伟大开发者的“九步曲” 使用GPU构建更便宜的Google神经网络 Facebook与Yahoo!的“火花”:系统间实时数据流管理工具 视金钱如粪土?Yahoo!又要买了,梅姐的算盘是这样打的 MySQL手册不再遵循GPL协议:MySQL走向闭源前兆? 扁平化设计会扼杀人们的创造力吗? 又一巨头涉足移动视频分享领域:传雅虎欲收购短视频应用Qwiki 史上最牛:主要靠三消游戏IPO King也许会是第一家 乐视超级电视预约启动 1小时预约近1.4万台 王坚:未来一年阿里云会有很大变化 梁胜:开源并不是做好软件的唯一方式 如何为IE 10编写特定的样式 MySQL手册许可证更改乃是Bug惹得祸 开源世界高峰论坛首批演讲议题公布 测试工程师的心灵鸡汤:谦虚、不沉默、有危机感、不断努力 高德地图API“沿图有你,晒出你的LBS应用”活动拉开帷幕! 谁能找出Windows 8.1的安全漏洞,就将获得微软10万美元奖金! 【直击美国云计算】Facebook分享数据中心新网络架构Fabric 【直击美国云计算】OCP发起产业界的Maker运动 红帽刘长春:开源是推动云计算和大数据发展的重要力量 【直击美国云计算】出货量达x86的20多倍 ARM或将成为数据中心主角 孙小群:将SAP HANA打造为开放的PaaS平台 GitHub推出重大改进:强调速度、内容和交互性 如何打造测试工程师精英团队? 如何做个有“钱”途的测试工程师? Delphi 2 BCB的问题:BCB中的"::", ".","->"有什么区别? *.idc不能运行了,请问这是为什么?谢谢 简单的数据库问题 CFileDialog()函数的参数问题????? php ed3.0 为什么不好使 大散分,快来答,答者有分! access 表中的datetime型字段在delphi中如何使用? 有谁看过《Visual C#.NET开发实践》?? 怎样改变按钮标题的颜色? 请大家帮忙测试一下这段winsocket代码,为什么接受不到字符串 数据库问题 如何理解COM中的自动化?跟贴有分!!! 怎么样才能实现对音量的控制,最好能达到有下脚喇叭的功能 phpmyadmin之前的密码认真是怎么回事呀(配置问题) 谁能帮忙介绍工作? 请介绍几个现在还提供免费个人主页的地方 IIS运行起来后,不能访问http://localhost是什么原因? 谁能帮忙介绍工作? 关于控件数组 急需收发文系统的完整代码,谢谢! 我想用VB写一个com分页读出tif中的多幅图像,请高手指点! 请教sql查询 情介绍一个数据库编程的好书! 请教:JBuilder中要调用MapXtreme 的bean,怎么搞,定给分 为什么TOP不能限制数据集的数目???见者有分!!! 找高手解决问题!! sql 2000的一个存储过程,有些问题, 谁能帮忙介绍工作? golive6,如何解决中文问题???在源码中无法显示中文,如何解决??? 请看看这两条代码是否一样? 寻---陈建春之<visual C++高级编程技术---开发实例剖析> 想学学UML…… 现在工作好烦!!!!!! 关于combobox很简单的问题 各位大夏,我用JBUILDER做EJB时已经编译了,可是为什么那个TOOL菜单里面的EJB DEPLOYMENT子菜单是灰的啊?也就是我怎么生成部署描述设置 教材 谁看了《我的野蛮女友了》,是不是和《不见不散》有点像阿 怎样定义自己的消息? 菜鸟问题:有关vs7.0与vs6.0的Session传递问题.(来者有分) 如何改变窗口的图标? 都有哪些方法? 报表的格式化问题? 英文win 2000 +英文IIS 联接 中文win 2000 +中文Sql Server 出现乱码的问题,在线等待 哪位有realplayer 8.0的序列号?是否可告知小妹:) 各位大侠,我想把网站的部分链接放到局域网的其他机子上,需要怎么设置 我要租房(深圳华侨城附近,1000元之内,30分钟车程之内) 请教各位,系统如何自动获取编号 转贴:回忆最有人缘的28个电视人物(1) 我要找一本叫《软件工程》的书! 网上赚钱的事会是真的吗 , 谁介绍一下 , 有没有不错的网站. 转贴:回忆最有人缘的28个电视人物(2) 大家都用的什么开发工具啊?? 修建一个直径是10米得圆形花坛,在花坛的周边上每隔1米在一棵花,最多可以在多少棵?在这个花坛里种上绿草,中绿草的面积是多少 大圆形的花坛直径为15米,在它的圆周上隔30厘米种一棵树苗,一共中多少树苗? 我可以感受到你的光芒用英文怎么说? 修建一个直径是10米的圆形花坛,在花坛的周边每隔1米栽一棵花,最少可以栽多少棵?在这个花坛里种上绿草种绿草的面积是多少 一块8平方米可以种3棵树平均每棵树占地面积是总面积的几分之几平均每棵树占地多少平方米 英语翻译let 后用found? 某天,一蔬菜经营户用120元钱从素菜批发市场批了西红柿和豆角共80㎏到菜市场去卖,西红柿和豆角这天的批发与零售价如下表 品名 西红柿 豆角批发价(单位:元/㎏) 1.2 1.6 零售价(单位: 把一块面积为5平方米的长方体菜地平均分成6块,每块占总面积的几分之几?是多少平方米?(用分数表示)写算式, 以“真情”为话题的作文600字左右,不要复制别人的,要写出真情实感 观察平面镜成像,你会发现像与物体的大小是( ).当你远离平面镜时,像会( )平面镜. 《生活中的爱》作文 好的开头 关于生命的作文 从一件小事得到的启示. 8千克豆角、9千克西红柿共值16.8元,9千克豆角、8千克西红柿共值17.2元,求豆角和西红柿单价个是多少式子 大圆形的直径为20米,在它的圆周上每隔40厘米种一棵灌木,请问一共可以种灌木多少棵? 一件小事的启示作文 某天,一蔬菜经营户用144元从蔬菜批发市场购进西红柿和豆角共100千克(用二元一次方程解,具体解题过程)某天,一蔬菜经营户用144元从蔬菜批发市场购进西红柿和豆角共100千克,到菜市场出售 大圆形花坛的直径为20米,在它的圆周上每隔0.4m种一棵花,最多可以种多少棵? 从一件小事中受到的启发(作文) 元旦节布置教室,我想自制一些既简单又环保的,东东, 体图形表面积与体积我们在画长方体时一般只画出三个面,这是因为长方体( )1.只有三个面 2.只能看到三个面 3.最多只能看到三个面 用a元买了单价为1.2元的黄瓜3.5千克,应找回多少元, 国庆见闻作文300字 立体图形的表面积和体积6年纪的 谁有全国数学建模大赛的论文?完整格式的 数学建模要学些什么东西 六年级数学题看图计算图形的表面积和体积上面是一个半圆柱,下面是一个长方体.长发体的长是30cm,宽是20cm,高是10cm,求图形的表面积和体积, 2013年全国电子设计大赛 数学建模.1、时间上给冲突?2、全国各省时间一致? 求一篇国庆见闻文章!300字 人间处处有真情作文好开头结尾 全国数学建模大赛怎么报名 关于平面镜成像,下列说法中正确的是() A 平面镜中的像是····关于平面镜成像,下列说法中正确的是() A 平面镜中的像是实际光线形成的,可以用光屏接到B比平面镜大的物体不能在镜中成完整 五年级上册语文第七单元作文(读后感)(最好是红楼梦的)我十一岁 写得好加十分最好是红楼梦的 求作文《真情》600字,开头和结尾要有排比的. 关于平面镜成像,下列说法正确的是A.物体越大,所成的像越大B.物体越小,所成的像越大C.物体离平面镜越近,所成的像越大D.平面镜越哒,所成的像越大 初三办新年联欢会,布置教室要有点创意,都买那些东西啊?大约要多少钱? 作文 一件小事的启示500字 圆柱的表面积为S,当圆柱体积最大时,圆柱的高为()答案是根号6πs/3π 星期天,妈妈去菜场买了2.1千克的豇豆,每千克6.46元.买豇豆需要付多少钱? 以微笑为话题的记叙有真情的六年级作文的开头结尾 急.不要散文式的 不要抄的 语文北大清华校园草坪上的温馨提示语烦告诉 作文 家乡的冬至 250字左右 一个圆形花坛的直径是21米,沿着它的边线大约每隔3米种一棵杜鹃花.一共要种植多少棵? 爱护花草树木的温馨提示 “冬至”作文不少于400字别有费话(限大家1~2天交) 一个圆形花坛的直径是42米,沿着它的边线每隔3米种一棵月季花.一共可以种多少棵 石家庄哪里有买草坪温馨提示牌的石家庄哪里有买草坪上面装的温馨提示牌?如果知道更清楚的话,希望把提示牌的材料以及价格报一下.急. 关于冬至的四百字以上作文 一件小事的启示的作文要怎么写? 仿写:校园草坪边广告牌上写有一则温馨提示:“柔弱小草,何忍践踏?”请你模仿这则提示,为防止向莲花池乱丢垃圾拟写一句话. 冬至作文 1000字关于冬至的由来,那天发生的故事,需1000字作文 作文 作文 妈妈有a元,买了单价是1.2的黄瓜2.4千克,还剩()元 温馨提示语 草坪中的下一句是什么 我们能在平面镜中看到物体___立______大的_____像,这是由光的_______现象形成的. 一件小事的启示作文怎么写 一个直径是10米的圆形花坛,花坛周边每隔1米载一科花,最多可以载几科?花坛里种上草,草的面积是多少? 数学建模大赛需要哪些预备知识? 白菜的单价是1.5/千克,黄瓜的单价是白菜的2.4倍,如果妈妈带10.2元买这两种蔬菜,质量同样多,个能买多少 一个直径是10米的圆形花坛,在花坛的周边每隔1米栽一棵花,最多栽多少棵?这个花坛里种上绿草,面积多少? 3.大圆形花坛的直径为15米,在它的圆周上隔了30厘米种上一棵冬青树,一共种了几棵 我可以感觉你的世界 用英文怎么说RT
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘