2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

排序性能 PK:Spark 完胜 MapReduce

  • 2014-10-15
  • 本文字数:1223 字

    阅读完需:约 4 分钟

作为 Hadoop MapReduce 后继者 Apache Spark 可以支撑数千节点规模的集群部署,尤其在内存数据处理上,Spark 比 MapReduce 更加高效,且支持 GB 或 TB 级别的数据。然而很多人都认为在磁盘数据计算上,MapReduce 比 Spark 更有优势。近日,大数据公司 Databricks 为了评估 Spark 在 PB 级磁盘数据计算的运行状况, 其技术团队使用 AWS 进行了一个 Daytona Gray 类别的排序基准测试。测试结果显示Spark 打破了MapReduce 保持的排序性能记录。这次测试是一个考量系统排序100TB 数据(约万亿条记录)速度的行业基准测试。在此之前,这项基准测试的世界记录保持者是雅虎,他们使用2100 节点的MapReduce 集群在72 分钟内完成了计算。而本次测试Spark 只使用了206 个EC2 节点,就将排序用时缩短到了23 分钟。也就是说在相同数据的排序上,Spark 只使用了1/10 的计算资源就比MapReduce 快了近3 倍。

此外,在Spark 官方没有PB 数量级排序对比的情况下,Databricks 技术团队首次开展了1PB 数据(十万亿条记录)的排序测试。这个测试使用了190 个EC2 节点耗时不到4 个小时,同样远超雅虎之前使用3800 台主机、耗时16 个小时的记录,这也是在公用云环境中,首次完成的PB 级排序测试。以上两个测试的具体结果如下表:

Hadoop 保持记录

Spark 100 TB

Spark 1 PB

数据大小

102.5 TB

102 TB

1000 TB

耗时

72 分钟

23 分钟

234 分钟

节点数

2100

206

190

# Cores

50400

6592

6080

# Reducers

10,000

29,000

250,000

Rate

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

Daytona Gray 类别排序基准规则

环境

专用的数据中心

EC2 (i2.8xlarge)

EC2 (i2.8xlarge)

Spark 有以上的性能表现是因为 Databricks 与 Spark 社区为 Spark 在稳定性、扩展性、性能等方面的做了不断的改进,尤其是在超大规模工作负载下,他们投入了大量的精力来提升 Spark 的性能。从细节上看,与这个基准测试高度相关的工作主要有三个,首先,也是最关键的,在 Spark 1.1 中他们引入了一个全新的 Shuffle 实现,也就是基于排序的 Shuffle( SPARK­-2045 )。其次,他们修订了 Spark 的网络模型,通过 JNI( SPARK­-2468 )使用基于 Netty 的 Epoll 本地端口传输。同时,新的模型还拥有了独立的内存池,绕过了 JVM 的内存分配器,从而减少垃圾回收造成的影响。最后,他们创建了一个外部 Shuffle 服务( SPARK­-3796 ),它与 Spark 本身的执行器完全解耦,这个新的服务基于上文所述的网络模型。得益于以上三项改进措施, 在 map 阶段,Spark 集群的单节点能够支撑每秒 3GB 的 IO 吞吐量,在 reduce 阶段,单节点能够支撑每秒 1.1GB 的 IO 吞吐量。其他更多的技术细节包括 TimSort 排序算法的实现、缓存位置的利用、Spark 的容错机制以及 AWS 方面的增强等。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-15 14:283554
用户头像

发布了 92 篇内容, 共 51.3 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

【原创】Spring Boot终极篇《下》

田维常

springboot

社会正在惩罚不读书的人!这份程序员进阶书单,值得收藏~

田维常

程序员 电子书

Polkadot系列(二)——混合共识详解

QTech

区块链 polkadot

Redis-缓存雪崩,缓存击穿,缓存穿透

topsion

redis

vivo 云服务海量数据存储架构演进与实践

vivo互联网技术

数据库 架构 云服务 数据存储

5G时代的到来对直播的影响

anyRTC开发者

5G 音视频 WebRTC 直播 RTC

【原创】Spring Boot终极篇《上》

田维常

springboot

看完这篇你还能不懂C语言/C++内存管理?

C语言与CPP编程

c c++ C语言 内存管理 编程开发

高防服务器是什么?

德胜网络-阳

如何将MySQL查询优化到极致?

冰河

MySQL sql 性能优化 查询优化 查询

开源技术够用了么?我的 NAS 选型与搭建过程

LeanCloud

开源 NAS

Linux高级编程常用的系统调用函数汇总

哒宰的自我修养

Linux 线程 网络编程 进程 MySQL数据库

【原创】Spring Boot 过滤器、监听器、拦截器的使用

田维常

springboot

一期二班 - 吴水金 - 第五课作业

吴水金

网易云音乐基于 Flink + Kafka 的实时数仓建设实践

Apache Flink

flink

面试官:Java装箱与拆箱的区别?

田维常

springboot

设置Vmware中的Ubuntu为桥接模式

jiangling500

ubuntu vmware 桥接

C++中的vector和Java中的ArrayList的构造函数的区别

jiangling500

Java c++ ArrayList vector

国内外互联网大厂工程师联合推荐:程序员三门课+151个建议

小Q

Java 学习 编程 程序员 开发

面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》

小傅哥

Java 面试 小傅哥 ReentrantLock 公平锁

推进AI融合 2020 LF AI & DATA DAY(AI开源日)即将召开

追风人与笃行者:云手机的2020风云录

脑极体

第一届“多模态自然语言处理研讨会”精彩回顾(免费获取PPT)

京东科技开发者

人工智能 自然语言处理

TensorFlow 篇 | TensorFlow 数据输入格式之 TFRecord

Alex

tensorflow keras dataset tfrecord

甲方日常 44

句子

工作 随笔杂谈 日常

送你4句口诀 云存储选型不再犯难

京东科技开发者

云存储

刷了LeetCode的链表专题,我发现了一个秘密!

Simon郎

Java 面试 链表

23张图!万字详解「链表」,从小白到大佬!

王磊

Java 数据结构与算法

JDK8中的新时间API:Duration Period和ChronoUnit介绍

程序那些事

java8 jdk8 新特性 程序那些事 时间API

深度解读智能推荐系统搭建之路 | 会展云技术揭秘

京东科技开发者

人工智能 推荐系统

【原创】Spring Boot 如何手写starter

田维常

springboot

排序性能PK:Spark完胜MapReduce_语言 & 开发_李士窑_InfoQ精选文章