总结Spark比Hadoop快的原因

1. 消除了冗余的HDFS读写

Hadoop的每次shuffle都必须写到磁盘中,而Spark的shuffle不一定写到磁盘中,而是可以缓存到内存中,以便后续的其他迭代操作时直接使用。这样一来,如果任务复杂,需要很多次的shuffle才能完成,那么Hadoop读写磁盘文件时花费在IO上的时间就会大大增加。

2. 消除了冗余的MapReduce阶段

Hadoop的每次shuffle必将连接着一次完成MapReduce操作,而Spark基于RDD提供了丰富的算子操作,而且Spark的shuffle产生的数据可以缓存到内存中。

3.Spark对于JVM的优化

Hadoop的每次MapReduce操作,启动一个Task便会启动一次JVM,是基于进程的操作。而Spark的是基于线程的操作,只在启动Executor时启动一次JVM。每次执行一个Task,都是复用Executor中的线程(Executor中维护着一个线程池)。JVM的每次启动,都将会花费几秒甚至是十几秒的时间,如果Task多了,基于进程的Hadoop Task便会频繁的启动JVM,也就花费了大量启动JVM的时间。

但是,像select month_id,sum(salas) from T group by month_id这样的查询,只发生了一次shuffle操作(group by),Spark需要创建线程池,此时,Hive HQL的运行时间也许比Spark还要块。
结论:Spark快并不是绝地的,在某些情况下,也有MapReduce比Spark快的情况。主要得益与Spark对MapReduce操作的优化以及对JVM使用的优化。

文章参考:https://www.jianshu.com/p/6ca1421b3c47

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值