性能:
Spark在内存中处理数据,而MapReduce是通过map和reduce操作在磁盘中处理数据。所以从这方面讲Spark的性能是超过MapReduce的。但是当数据量比较大,无法全部读入内存时,MapReduce就比较有优势。当涉及需要重复读取同样的数据进行迭代式计算的时候,Spark比较有优势;但是当涉及到单次读取,类似ETL操作任务时,适合用MapReduce进行处理。
容错:
当执行中途失败时,MapReduce会从失败处继续执行,因为它是依赖于硬盘驱动器的。但是Spark就必须从头开始执行,这样MapReduce相对节省了时间。
应用场景:
MapReduce主要是进行离线计算处理,计算一些已存在的数据,比如对已存在的订单或者日志进行分析。而Spark可以应用在一些实时查询和迭代分析的场景,比如像推荐系统。