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

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、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务。        

创业与投资专题论坛:硬件的现在!创业的未来? 造就Office新用法:微软推WP应用 可遥控Office文件 成为一名PHP专家其实并不难 前富士康CEO程天纵:创新来自长尾,创业源于创客! 最危险的开源项目——比特币 11月20日:微软正式发布Windows 1.0 回顾历代Windows版本界面 微软CEO鲍尔默卸职前在股东会上的最后演讲 微软改革员工排名制度或将开启新篇章 【快讯】SAP联合中国电信,又一外商公有云曲线入华 微软CloudOS云操作系统构建企业级三云合一 IE11支持JavaScript新型API,Web应用国际化更便捷 谷歌推订阅应用Play Newsstand:杂志+RSS阅读器 【信息图】到2020年开发者、设计师、测试员的数量将达到史无前例的高度 推广与盈利专题论坛:中国影响世界,世界定义中国 SlideIdea CEO李建忠:移动产品的技术面思考 BDTC→→百度林仕鼎、腾讯蒋杰、阿里唐洪论道大数据平台与技术 谷歌首席互联网布道师:隐私保护并不是一种正常行为 微软公开“挑衅”谷歌,出售反谷歌标语T恤 四大UX设计原则,打造网站最佳浏览体验 【BDTC讲师】黄晓庆:从小灵通到Hadoop与实时大数据分析 【BDTC讲师】杨强:从禽流感预测到图片语义解释 2013中国大数据技术大会讲师议题正式发布 “2013中国大数据周”即将开幕 正式发布中国大数据现状白皮书 搜狐畅游发布3D游戏引擎Genesis-3D 基于MIT协议开源 传闻微软将收购AOL旗下的Winamp和Shoutcast 【BDTC讲师】大数据时代“掘金机”:百度、360、一淘搜索技术分享 谷歌董事长:审查,将会在十年内消失 50万奖金+天使投资:创维天赐家庭互联网创新大赛开幕 专利案苹果获胜:获赔2.9亿美元 三星不服将继续上诉 Google正打造Spark:一个基于Chrome App的集成开发环境 研发周报:成为一名PHP专家其实并不难 关于在Oracle数据库服务器如何提供下载一个excel文件型的大对象到本地?十万火急!三根鸡毛! 怎样得到数据库里某字段里没出现过、而且还是最小的数字呢? 请问大家这种数据表怎样设计最好??? 关于ID3V2?请大家帮帮忙 <<VC技术内幕(第四版)>>中应用程序框架示例的程序要怎样才能运行? Win2K的远程访问出现身份验证问题 关于TMediaPlayer缩放,请您赐教 如何显示一个库中所有的表以及显示一个表的结构 能不能使自己画的一个图形,响应鼠标事件? 如何取得数据库某字段中从未出现过的、而且还是最小的数字呢? 关于终端服务器的打印问题!!!!在线等,解决立即给分 怎样才可以在WIN2000下隐藏你的程序 急,请问把一个控件上的内容拖到LISTVIEW1上时,在LISTVIEW1上的一个ITEM上释放,此时如何获得ITEM的caption??? .pdg 类型文件怎么打开? 大家不妨说说二层应用程序转向三层应用的一些经验以及注意事项 为何看不到网络邻居上其它计算机的共享文件夹? 请问大家这种数据表怎样设计最好??? 用listbox绑定数据库的某个字段后,如何通过点击取得相应的值 dbgrid中的mousedown事件怎么触发不了 系统日志的错误信息,谁给分析一下?分不够还可以加 tell me why??有关jdbc for sqlserver VC录音问题 内存分配问题! 我安装上.net后,运行一个asp.net程序,可是出现了下载index.aspx文件的对话框? 菜单总被下拉列表框盖住的问题? 有谁知道Base64编码的规定?十万火急!!! 如何用Filter来过滤时间呢!!! 菜单总被下拉列表框盖住的问题? 一个带变量的JS语句 如何使用jBrokerWeb来做Java Web Service win95下的DLL注册的问题。。。?????? 急!急!关于<form runat=server>的@@@@@ 请进~~~~~~~~~~~~~~(急。。。答出者高分相送) 一个AnsiString 和内存的问题。 极为特殊linux的组网问题!!! 大家都来看看这是为什么? 菜单总被下拉列表框盖住的问题? 请教:如何使用windows定义的打印机打印文件 我安装上.net后,运行一个asp.net程序,可是出现了下载index.aspx文件的对话框? 怎样读文件和写文件?3Q!! 有湖北宜昌去TOP面试了的吗? 火速求助 关于终端服务器的打印问题!!!!在线等,解决立即给分 jbuilder7+WebLogic7 的配置,各位帮忙看一下,急,在线等。 ATL组件注册问题,请指教,不胜感激 新手愚问:为什么我Tquery检索数据库中的数据时,它弹出“××is not a valid component name ”.其中××是所检索出来的值。 弹出确定后 我怎么通过系统存储过程改变用户权限? ATL组件注册问题,请指教,不胜感激 请问那有《UltraDev 4 JSP/XML 高级实例教程》下载? Delphi的Form或Frame问题 如何判断一个数组是否定义。 一种利用声音传播规律制成的探测装置安放在船上的控制室内,利用它就可以及时发现冰山或暗礁的存在的装置电影《泰坦尼克号》,描述的是1912年一艘名叫“泰坦尼克号”的大海轮跟冰山相 一篇很长的英语作文 不限题材 一件小事初中作文,要求开头结尾要美可以提高悬赏 利用超声波探测海中的冰山和暗礁的装置的名称,和它的原理 求英语作文一篇,题材不限,60词左右 描写诸葛亮的成语谁知道啊, 科学家利用超声波的传播规律发明了一种探测装置.把这种装置安装在船上,船员能及时发现暗礁.超声波在海水中的传播速度是1500米/秒,某船向海底发出超声波,经1秒后接收到返回的超声波,求 求那件小事激励着我作文题材要新颖, 作文一件小事的开头,今晚就要 2010语文期末试卷高一阅读 草木之情 韩少功 力求一篇英语作文80字的,题材不限 谁能帮我写一篇关于秋的文章,急用!600字左右就行了, 《从军行》表达了作者怎样的思想感情? 那件小事激励着我作文.那件小事激励着我.作文 我要一篇写秋的文章(急)600-700字,半小时之内追加50分~ 李白的《从军行》表达了怎样的思想感情?就一句话 不要发一大段 赏析什么的网上都有 只发思想感情 求英语作文一篇(题材不限,字数不限), 求文档:赠刘景文古诗每一句话的意思 从军行4表达作者怎样的思想感情 隆中对中诸葛亮为刘备提出了怎样的战略方针 古诗 赠刘景文、山行的意思 王昌龄的《从军行》(其四)表达了她怎样的思想感情? 联合国的意思是什么只要意思 那件小事激励着我 作文 分析《从军行》中作者所表达的思想感情 我要在山的那一边课文的读后感 作文:那件小事激励这我!记叙文,请不要去复制粘贴!不用写太好 500字左右.要新的没怎么分了 江苏版 求一篇关于 秋天 的作文! 那件小事激励了我 作文600字左右,不要太好的 写一篇关于"如何理解马克思主义的中国化以及中国化的马克思主义"的见解文章,字数400字左右谢谢了啦,急啊 在山的那一边本文讲了什么?表达了作者什么样的感情? 托福和雅思的作文区别在哪? 《真诚的谢谢你》作文 200字左右 作文:那件小事激励了我写的是散文,写了三件事,三件事都写了激励,可以吗,非要像记叙文那样写一件小事 里为什么说是“怀着一种隐秘的想望” “满纸荒唐言”这句话的的诗名是谁 谁给我写个作文叫《那件小事激励着我》, 在山的那边 作者为什么对山的那边怀着一种隐秘的想望 用历尽磨难的诗句造一段话 从百草园到三味书屋中先生的特点快 在山的那边 隐秘的向往指的是什么 为什么说是隐秘的 隆中对中诸葛亮给刘备提出了怎样的战略方针三个空 用自己的语言说一说诗的意思什么时候我还托着腮帮仰望父亲脸上岁月碾过的道道车辙 冥想着 时光的马车呼啸而至 满载着我一个个天真的梦想 什么时候我还趴在母亲的膝旁耳边的故事像山 作文:九九重阳节,浓浓敬老情 我为---------(爷爷,奶奶)做点事是爷爷,奶奶等 更多老年人! 从军行 其二王昌龄琵琶起舞换新声,总是关山旧别情.撩乱边愁听不尽,高高秋月照长城.一、二两句中的“新”和“旧”是否矛盾?请简要回答高高秋月照长城.这句景物描写有何作用? 仿写句子:初一下册语文书第一课得第二段,不少于100字,要有不必说……也不必说……单是……这几个关键词 诗中"雨"说了什么话?这些话集中表达了什么意思?注意有俩个问 从军行翻译 从军行其4 王昌龄 主题 古诗词比赛的题目我们班要弄古诗词知识竞赛,请大家帮我出十个以上的题目,感激不尽~ 从军行有几首? 从军行主要内容用几句话概括内容 用简洁易懂的语言说出下列古诗的意思.七步诗 鸟鸣涧 芙蓉楼送辛渐 江畔独步寻花 初一下册语文第一课,你是如何看待三味书屋的? 什么叫做联合国?是一个国家 还是地区?别怪我没水平 没文化 这就是不读书的下场我承认我后悔过 《宿建德江》 用简要语言说说全诗所表达的意思宿建德江 移舟泊烟渚,日暮客愁新.野旷天低树,江清月近人. 从军行 其]四 联合国的会微有什么意思 一件小事作文的开头结尾怎么写?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘