详解: Spark 相对于MapReduce的优势(为什么MapReduce性能不理想)

Spark相对于MapReduce的优势

一:MapReduce存在的问题

1**. MapReduce框架局限性**
  1)仅支持Map和Reduce两种操作

2)处理效率低效。

a)Map中间结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据; 任务调度和启动开销大;
    b)无法充分利用内存
    c)Map端和Reduce端均需要排序

3)不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘) 和流式处理(点击日志分析)
  
2. MapReduce编程不够灵活

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

二:Spark

高效(比MapReduce快10~100倍)

1)内存计算引擎,提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的IO开销
  2)DAG引擎,减少多次计算之间中间结果写到HDFS的开销
  3)使用多线程池模型来减少task启动开稍,shuffle过程中避免 不必要的sort操作以及减少磁盘IO操作

易用
  1)提供了丰富的API,支持Java,Scala,Python和R四种语言
  2)代码量比MapReduce少2~5倍
  
与Hadoop集成 读写HDFS/Hbase 与YARN集成
丰富的API(Java、Scala、Python、R四种语言,sort、join等高效算子)
DAG执行引擎,中间结果不落盘
线程池模型减少task启动开销
充分利用内存,减少磁盘IO
避免不必要的排序操作
适合迭代计算,比如机器学习算法
**

三: 容错:

1.当执行中途失败时,MapReduce会从失败处继续执行,因为它是依赖于硬盘驱动器的。

但是Spark就必须从头开始执行,这样MapReduce相对节省了时间。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值