为什么Spark官网上称其性能比Hadoop快100倍

背景

Spark官网声称其性能比Hadoop快100倍,我们怎么看?

Spark的特点

1.减少磁盘IO

随着实时业务的流行,Hadoop作为离线的高吞吐、低响应框架已不能满足这一需求。Hadoop MapReduce 的map端的中间结果会落地落地到磁盘,reduce端又需要从磁盘上读取中间结果,势必造成磁盘IO瓶颈。Spark在这一个环境则不一样,map端计算的中间结果存储到内存,reduce端在拉取中间结果的时候避免了大量的磁盘IO。Hadoop YARN 中的AM申请到Container后,具体任务需要利用NodeManager从HDFS的不同节点下载任务所需的资源(ar包),这也增加了磁盘IO,而Spark将资源缓存到driver所在的本地文件服务内存中,当Executor执行任务时直接从Driver上拉取,也节省了大量的磁盘IO。

2.增加并行度

由于将中间结果写到磁盘与从磁盘读取中间结果属于不同的环节,Hadoop将它们简单串行起来执行,而Spark的每个stage,允许stage并行执行,有依赖关系才会等待。

3.避免重新计算

当stage的某个分区的task执行失败后,会重新对此stage调度,但在重新调度的时候会把之前执行完成过滤掉,避免重复执行和资源浪费。

4.可选的shuffle排序

Hadoop Mapduce在shuffle时有固定的操作,但是Hadoop 2.0,针对shuffle有更新;而Spark的shuffle选择性比较多,根据场景进行选择,可以放到map端进行,也可以在reduce端进行。

5.灵活的内存管理策略

Spark将内存分为堆上的存储内存,堆外的存储内存,堆上的执行内存、堆外的执行内存4个部分。因为Spark使用内存的偏好,将执行内存和存储内存用软边界分开,可以根据场景的不同,适当调整执行内存和存储内存的大小。Spark会对每个task分配一套配套的任务内存管理器,对task粒度的内存进行管理。Task的内存可以被多个内部的消费者消费,任务内存管理器对每个消费者进行Task内存的分配与管理,因此对Spark的内存有着更细粒度的管理。

6.检查点支持

Spark的RDD之间维护了血缘关系(lineage),一旦某个RDD失败了,则可以由父RDD重建。虽然lineage可以恢复,但对于很长的lineage来说,恢复过程非常耗时。如果应用启动了检查点设置,那么在stage中的task都执行成功后,SparkContext将把RDD计算的结果保存到检查点(checkpoint),这样再恢复时就不用重新计算了,直接读取保存的数据的就可以了。

7.易用

Spark现在支持Java、Scala、Python和R等编程语言,大大降低了使用者门槛。除此之外,还带了80多个高等级操作符,允许在Scala、Python、R的shell中进行交互式查询。

8.支持交互式

Spark使用Scala开发,并借助于Scala类库中Iloop实现交互式shell,提供对REPL的实现。

9.支持SQL查询

在数据查询方面,Spark支持SQL及HSQL,这极大的方便了传统SQL开发和数据仓库的使用者。

10.支持流式计算

与MapReduce只能处理离线数据对比,Spark可以做到微批(batch)实时流计算。

11.可用性高

Spark自身实现了Standalone部署模式,此模式下的Master可以有多个,解决了单点故障。Spark完全支持使用外部的部署模式,比如YARN\Mesos\EC2等。

12.丰富的数据支持

Spark除了可以访问操作系统自身的文件系统和HDFS之外,还可以访问Kafka、Socket、Cassandra、HBase、Hive、Alluxio(Tachyon)及任何Hadoop的数据源。这极大地方便了已经使用HDFS\HBase的用户顺利迁移到Spark。

13.丰富的文件格式支持

Spark支持文本文件、csv、parquet、orc、json、libsvm。

综上Spark这么多优势,难怪会在当下盛行;计算上Spark是强于Hadoop的,毋庸置疑,即使是当内存不足时,Spark还是会优于Hadoop的。那么为什么当下还有很多公司不得不用Hadoop呢?除了HDFS作为储存的原因。

本文部分内容引用于《Spark内核设计的艺术–架构设计与实现》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京河小蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值