分享

Spark MapReduce 排序性能测试比较

langke93 发表于 2017-3-9 13:42:55 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 8941
本帖最后由 langke93 于 2017-3-9 13:50 编辑

作为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方面的增强等。

欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条