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:283569
用户头像

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

关注

评论

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

周子衡 | 数字资产、数字支付及跨境活动——以美元数字化为例

CECBC

加密货币 数字资产

Flink x Zeppelin ,Hive Streaming 实战解析

Apache Flink

flink hive Zeppelin

成功的9大步骤:从手动测试转为自动化测试

禅道项目管理

测试 自动化测试

30秒,2种方法解决SQL Server的内存管理问题

华为云开发者联盟

数据库 sql 内存 服务器 华为云

3行!仅3行代码就能抓取B站(弹幕、评论、用户)数据

华为云开发者联盟

数据 B站 代码 词云图 API

实时计算的业务劣势、思维误区和改进之道

KAMI

大数据 flink 方法论 实时计算

从0到1搭建大数据平台之调度系统

数据社

大数据 工作流调度

从0到1搭建大数据平台之计算存储系统

数据社

大数据 中台 计算引擎

原创 | 使用JPA实现DDD持久化- O:对象的世界(1/3)

编程道与术

Java hibernate DDD JDBC jpa

读书笔记:Google软件测试之道【三】

Man

测试 测试文化

JVM系列之:JIT中的Virtual Call接口

程序那些事

Java JVM JIT

企业玩转DevOps转型:由弱到强,只需7步

华为云开发者联盟

DevOps 软件工程 组织转型 软件开发 华为云

自主管理——对人性的假设

zhongzhq

自主管理 组织

读书笔记:Google软件测试之道【一】

Man

测试 测试文化

糟糕,你写的 BUG 要被存1000年了!

华为云开发者联盟

GitHub 开源 代码 bug 卤化银胶片

ARTS-WEEK9

一周思进

计算机网络基础(十二)---网络层-外部网关路由协议

书旅

计算机网络 网络 协议栈 BGP

架构师训练营第九周作业

一剑

话题讨论 | 哪本极具影响力的书,是每位程序员都应该读的?

InfoQ写作社区官方

写作平台 话题讨论

ElasticSearch笔记

石刻掌纹

什么样的服务器适合做APP?

德胜网络-阳

MySQL 的 crash-safe 原理解析

vivo互联网技术

MySQL 数据库 开源

写作社区划线笔记新功能全新上线!给你带来不一样的写作学习体验~

InfoQ写作社区官方

写作平台 玩转写作平台 热门活动

阿里巴巴《Java 开发手册》—嵩山版发布,附下载链接!

程序员生活志

Java 学习 阿里巴巴 手册

LeetCode 328. Odd Even Linked List

liu_liu

算法 LeetCode

读书笔记:Google软件测试之道【二】

Man

测试 测试文化

从0到1搭建大数据平台之数据采集系统

数据社

大数据 数据采集

区块链在这些生活场景中悄然落地了......

CECBC

区块链 落地应用

你不是说你会Aop吗?

Java旅途

聚焦智慧城市生活服务,百度携手贝塔智能按下“加速键”

百度大脑

人工智能 人脸识别 AR 百度大脑 智慧城市

如何从0到1搭建大数据平台

数据社

大数据 中台

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