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

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

DELPHI图形编辑技巧二则 DELPHI显示JPEG图像文件 Delphi中CANVAS使用三例 Delphi中的图形显示技巧 DELPHI中画布应用技巧 Delphi中控件深度投影及阴影效果的实现 DELPHI中利用对象的常用属性制作动画 Form生成时的事件次序-Delphi资料 LED数码管仿真显示程序-Delphi资料 TPaintBox与TImage的比较-Delphi资料 WINDOWS基于调色板的图像消隐-Delphi资料 改变图片效果-Delphi资料 改造HINT的输出方式-Delphi资料 基于Delphi的图像漫游 将BMP放入Paradox的BLOB的字段中-Delphi资料 界面色彩渐变效果的实现-Delphi资料 如何查阅可视窗口标题-Delphi资料 如何得到Timage控件的DC-Delphi资料 如何关闭一个MDI子窗口-Delphi资料 如何检测鼠标击了哪一个对象-Delphi资料 如何将鼠标锁定在固定范围内-Delphi资料 如何使你的窗口Stay on Top-Delphi资料 如何在ListView控件中绘底图-Delphi资料 如何在屏幕上移动Image图象-Delphi资料 软件中复活节彩蛋的实现-Delphi资料 实现图象局部放大的原理和方法-Delphi资料 使用Delphi实现滚动式面板窗口 通用的MsgBox-Delphi资料 图象放大镜——实现图象局部放大的原理和方法-Delphi资料 图形的特殊显示效果-Delphi资料 图形整体拉出效果-Delphi资料 唉,弄了好几天了,如何解决?????????????? 请问哪里有免费的PHP+MYSQL主页空间呀! 大家快来帮忙:数据库的一个小问题 我现在想学一门新技术,不知道是学VC++,JAVA,还是刚刚出来的。NET技术呢?请高手指点呀。 高分征解:一个动态提示窗口的问题,给出答案必定给分!!!求救我啊!! 在这里赚分真不容易呀! 怎样检查FORM中CHECKBOX和RADIO的值呢 那里有在asp中操作word对象的详细教程? 请问:如何得到TForm的窗口句柄? authorware中的按钮。 哪里有发送mail成功的php程序!! 关于上传数据的一个特殊问题,有点难 怎么用OLE实现与手机的通讯?? 汉语分词算法 grid显示问题 成为Delphi高手须看哪方面的书籍,请高高手指教? 关于属性页的小问题? 为水园增加点正气: 大家都是斯文人吗,呵呵||||| 诗经国风2001版----之桃夭 高手高手教教我 +++++++++++++一个很奇怪的问题************* 请问:有没有专门介绍C++函数使用的书籍? 提個有點難度的問題.看問題的有獎. 高手请看:这语句错在哪? 哪儿有dos的原代码? 谁能平息这几天水园的争端^^^^^^^^^^一个详和的水园^^^^^^^^^^^我只能拿分支持 为何显示黑乎乎的一片,chick!!!!!!! 原来女人也好色,欢迎MM。 心芯蕊~来拿分~~~~MM要分能不给吗??砸锅卖铁也要给啊!~~~~55555,可怜我的分啊~~~~~~~~~~~ 着急??一小段代码!!谁来看一下?? 男子汉说到做到,我在此特地向一位女士道歉 高分求救!急急! ! ! ! 奇怪,编译DIRECTX例子正常,新建一工程后改写主文件后运行BltFast函数为何这样? 急求高人!不简单:关于common dialogbox控件的问题? 怎样学可视化编程? 用Jmail收信后,为什么WORD之类的附件打开总是乱码?? 请问如何使用BCB中的PageControl创建Wizard? 别人跟的帖子也应该能回复呀! Rational Rose2000 Enterprise Edition的License Key是什么? 哪位好兄弟肯给我一个Jbuilder4的序列号? 就有两个月了,还没怎么看书,不知道能不能过高程!!! -------我和我MM系列(转)几乎是完全版 有MM和没MM的都来看看吧 当然MM也可以看~~ 建议:在此开设一个程序之家聊天室。 请教一个简单问题!! 请问各位:如何显示GIF图像??? 最近水园很没劲,看样子是要离开的时候了,虽然我来的时间不是很长。唉,为什么会这样? 这几天晚上我都会在263战网 谁能 提供超大空间 用于上传PB80光盘 月末,大富翁银行将作月结,如果跟本银行还有业务关系,速来通知 用ado怎么连接excel文件,不用odbc行吗? 软驱自动保存是怎么一回事情 请问各位大虾,在VB中,怎样才能改变PictureBox或Imagebox的形状,让它可以容纳圆形的图片.或者用其它方法实现对不规则图片的操作.比如我编了个网络象棋程序,怎样用一个PictureBox来容纳一个圆形的棋子. KClO3受热分解用氧化还原的思路配平它. k2cr2o7+naoh 颜色为什么不发生明显变化 _K2Cr2O7+_H2SO4+_FeSO4=>_Fe2(SO4)3+_K2SO4+_Cr2(SO4)3+_H2O 加热氯酸钾和二氧化锰混和物的化学式 h2so4环境下,k2cr2o7氧化h2o2颜色变化过程我做实验时逐滴加入H2O2,溶液先变暗绿色,渐变成亮绿色.应该是三价铬吧?为什么会不同颜色? C+K2Cr2O7+H2SO4 ------ CO2+Cr2(SO4)3+K2SO4+H2O 配平 加热氯酸钾和二氧化锰混合物出来的是什么? 为什么K2Cr2O7,KMnO4颜色比CuSO4,FeCl3等深得多?(K2MnO4的灰绿色颜色也很深,但经不起稀释会歧化)我一浴缸水加了几粒KMnO4(不超过0.1g)结果整浴缸水都变成紫红色了K2Cr2O7,差一点,但稀释10000倍还有 K2Cr2O7+ H2C2O4+ H2SO4 — K2SO4+ Cr2(SO4)3+ CO2+ H2O 氯酸钾和二氧化锰混合加热支取氧气的化学式那个加热还有二氧化锰不是要写在等号上面吗? K2Cr2O7+Na2SO3生成什么 K2CR2O7在反应中得电子怎么算啊详细点 K2Cr2O7+H2C2O7+H2SO4-----K2SO4+Cr2(SO4)3+CO2+H2O求高手配平...小弟拜谢...最好带过程... KCLO3和MnO2的反应化学式 K2Cr2O7怎么读?有奖征询,奖积分,走过看过,不要错过望各位大侠,助小女一臂之力,大恩大德,没齿难忘 Cr,K2Cr2O7,Cr2(SO4)3,CrCl2,Cr2O3,ZnCrO4这六种物质中铬元素显化合价的有哪些?请说明理由, kclO3是什么的化学式 化学问题K2Cr2O7读什么?2和7都是下标 与K2Cr2O7的Cr的化合价相同的氯化物的化学式是什么 KClO3 Kmn2O4是什么的化学式 高中化学.k2cr2o7怎么念?了 KMnO4求化合价Mn H2O2、O3、SO2、HClO中漂白品红原理与其余三种不同的是 化学方程式配平:()K2Cr2O7+()Fe3O4+()H2SO4 与K2CR2O7中的CR的化合价相同的氧化物化学式 Cl2,ClO2,O3,H2O2中氧化性最强的是咋算的呢?( ⊙o⊙ K2Cr2O7+H2SO4+(NH)2Fe(SO4)2-->请帮忙完成反应方程式并配平 如SO4 CO3 NO3 PO4 CLO3 SO3 这类是否有方法记忆其化合价 背了好久还没背出举个例子就行如SO4如何记忆 Cl2,O3,H2O2的氧化性比较RT,并且如果要是夹在常见的氧化物里面,如何加进去? 配平K2Cr2O7+KI+H2SO4---K2SO4+I2+Cr2(SO4)3+H2OK2Cr2O7+KI+H2SO4---K2SO4+I2+Cr2(SO4)3+H2O OH,NO3 NH4 SO4 CO3 PO4 MnO4 ClO3 是什麼根?我只知道 MnO4 是锰酸根. 氯酸钾分解的化学方程式怎么读? 过氧化钠、过氧化氢、NaClO、HClO、ClO2、SO2、O3、活性炭等物质与漂白粉的漂白原 配平 k2cr2o7 + ki + h2so4---k2so4+ cr2(so4)3+ i2+ h2o 假设FeSO4按KCLO3的方式分解,反应的化学方程式为假若他分解生成两种氧化物,他的反应方程式为 HCLO氧化性强于HCLO4,怎么讲呢? 要配制浓度为0.02mol/L的K2Cr2O7溶液1L,应准确称取K2Cr2O7基准物多少克?(K=39.1,Cr=52.0,O=16)请写出计算过程. 氯酸钾(KCLO3)在二氧化锰催化剂并加热的条件下能较快的分解生成氯化钾和氧气,试写出化学反应方程式要得到8g氧气,需分解氯酸钾多少克? HClO4和HNO3 反应?方程式有不? 例:如K2Cr2O7标准溶液浓度为0.02150mol/L,问TFe/K2Cr2O7=?g/mL?TFe/K2Cr2O7=0.007192g/mL谁能告诉我怎么解的么. 科学兴趣小组学习了二氧化锰(MnO2)催化分解过氧化氢的实验后,进行如下实验.(一)选择装置并检查气密性.(二)称取0.1克的二氧化锰粉末加入容器中.(三)量取50毫升溶质质量分数 为什么HClO的氧化性比HClO4强 怎样将0.1000的硫代硫酸钠标准溶液稀释成0.01 mol/L这是书上的解释硫代硫酸钠标准滴定液:c(Na2S2O3)=0.01mol/L。移取1000mL刚标定过的硫代硫酸钠标准溶液0.1000mol/L于100mL棕色容量瓶中,用水稀 只有MnO2才能对过氧化氢的分解起到催化作用吗? 用化学方程式证明KMnO4氧化性比MnO2强 若用a、b、c分别表示有理数a、b、c,0为原点如图所示.已知a H2O2被FeCl3,CuO,MnO2催化原理并说明哪些物质能做催化剂为什么要化学方程式还有CuSO4 为什么Cr2O7-的氧化性大于SO2能说明 K2Cr2O7能将Na2DO3氧化成Na2SO4? K2Cr2O7中的Cr的化合价怎么求? MnO2催化H2O2我猜的是MnO2+H2O2=H2MnO4.2H2MnO4=2MnO2↓+2H2O+O2↑纯属猜测...呵呵..我是根据高锰酸不稳定猜的...不对的话请指教下....我想知道的是MnO2催化H2O2分解的机理... 如何证明一个物质的氧化性比另一个的强?如何证明一个物质的氧化性(或还原性)比另一个物质的强?还有在酸性或碱性条件下.(可以举例)还有什么是极性键和非级性键?怎么区分? 重铬酸钾(K2Cr2O7)中铬元素(Cr)的化合价明天就要考试了... h2o2用MnO2催化分解是否需要加热? k2cr2o7与k2cro4的氧化性谁强? K2Cr2O7 铬元素的化合价是多少 求得KCLO3的分解率想探究是否只有MnO2能催化KClO3受热分解?CuO、Fe2O3、Cr2O3等对氯酸钾的受热分解有没有催化作用?已知投入氯酸钾为0.6克,投入氧化铜作催化剂,产生气体为67.2ml(已折算为标况) 求 试比较KMNO4,MNO2,O2氧化性如何进行比较的呢 12个Na2So3恰好与4个K2Cr2O7完全反应,则元素Cr在被还原的产物中的化合价为 KCLO3的分解百分率是什么意思 k2cr2o7加硫酸颜色变 化学方程式配平K2Cr2O7+C+H2SO4→Cr2(SO4)3+K2SO4+CO2+H2OCr从+6→+3,C从0→+4 ,如果按照最小公倍数K2Cr2O7前面是4,C前面是3啊,为什么K2Cr2O7前面是2呢?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn