1、Hadoop底层使⽤MapReduce计算架构,只有map和reduce两种操作,表达能⼒⽐较⽋缺,⽽且在MR过程中会重复的读写hdfs,造成⼤量的磁盘io读写操作,所以适合⾼时延环境下批处理计算的应⽤;
    2、Spark是基于内存的分布式计算架构,提供更加丰富的数据集操作类型,主要分成转化操作和⾏动操作,包括map、reduce、filter、flatmap、groupbykey、reducebykey、union和join等,数据分析更加快速,所以适合低时延环境下计算的应⽤;
    3、spark与hadoop最⼤的区别在于迭代式计算模型。基于mapreduce框架的Hadoop主要分为map和reduce两个阶段,两个阶段完了就结束了,所以在⼀个job⾥⾯能做的处理很有限;spark计算模型是基于内存的迭代式计算模型,可以分为n个阶段,根据⽤户编写的RDD算⼦和程序,在处理完⼀个阶段后可以继续往下处理很多个阶段,⽽不只是两个阶段。所以spark相较于mapreduce,计算模型更加灵活,可以提供更强⼤的功能。
    4、但是spark也有劣势,由于spark基于内存进⾏计算,虽然开发容易,但是真正⾯对⼤数据的时候,在没有进⾏调优的轻局昂下,可能会出现各种各样的问题,⽐如OOM内存溢出等情况,导致spark程序可能⽆法运⾏起来,⽽mapreduce虽然运⾏缓慢,但是⾄少可以慢慢运⾏完。