写点什么

排序性能 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:283364
用户头像

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

关注

评论

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

对微博系统中“微博评论”的高性能高可用计算架构的一点思考

晨亮

「架构实战营」

ICT的圣杯(二):数字生活的另类想象

脑极体

PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解 (下)

安第斯智能云

安全 安卓

融云获 CSDN 技术影响力之星评选「年度技术品牌奖」

融云 RongCloud

手绘流程图,教你WSL2与Docker容器无缝互相迁移

华为云开发者联盟

Docker 容器 WSL2 迁移

全面解析云智慧数据中心统一运管解决方案

云智慧AIOps社区

安全 运维自动化 数据处理 数据可视化 监控工具

融云猿桌派备忘录,那些被程序员 Pick 的工作方式

融云 RongCloud

程序员 IM

阿里智能运维实践|阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 DevOps 云原生 智能运维

【CAD】入门系列完

謓泽

3月月更

Open Harmony移植:build lite编译构建过程

华为云开发者联盟

编译 OpenHarmony build lite 芯片开发板

微信外H5跳转小程序——<JumpApp/>组件(vue项目)

CRMEB

Java基础重要面试题(二)

逆锋起笔

java面试 java基础 3月月更

一文详解Redis键过期策略

华为云开发者联盟

redis key 惰性删除 定期删除 键过期

中小企业如何搭建在线客服中心?

小炮

mark: Docker 容器镜像删除

webrtc developer

使用bds搭建我的世界官方基岩版服务器(windows篇)

Daimon

虎符交易所Hoo研究院:元宇宙中的Decentraland是什么?

区块链前沿News

元宇宙 Hoo虎符 虎符研究院

融云 IM +RTC 重磅优惠上线!15 天免费体验,1 年服务买一赠一

融云 RongCloud

创建 Node.js 视频流应用之后端

devpoint

node.js Video Express 3月月更

兴业+民生上岸面试经验分享

暖蓝笔记

3月程序媛福利 3月月更

图解|从根儿上理解MySQL的索引

蝉沐风

MySQL 索引 B+树

网络协议之:socket协议详解之Unix domain Socket

程序那些事

socket Netty 程序那些事 3月月更

iuap助力澳洋集团打造主数据管理平台

用友BIP

用友 用友iuap

写给后端开发工程师的H5前端开发知识

得物技术

前端 Web 可视化 后端开发 交互

从读写角度,带你了解数仓的IO基本框架

华为云开发者联盟

io GaussDB(DWS) IO框架 行存 列存

Nacos源码分析(一)之线程池的巧妙设计,可以薅到自己的项目里

刘祥

SpringCloud Alibaba

TPC TiKV:Hackathon 中最硬核项目是如何炼成的?| TPC 战队访谈

PingCAP

sql TiDB

这些DDD"术语"你知道吗?

idonkeyliu

DDD

智能问答机器人

DS小龙哥

智能问答机器人 3月月更 智能对话机器人

实用机器学习笔记二十八:迁移学习

打工人!

学习笔记 迁移学习 机器学习算法 3月月更

面试突击31:什么是守护线程?它和用户线程有什么区别?

王磊

java面试

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