1 spark的task是线程,启动更快;mr的task是进程
2 spark的很多操作是在内存进行,只有shuffle操作才会把数据落盘;mr的很多操作,包括shuffle,都会把数据落盘
3 可忽略,mr的中间文件也有索引。 spark的shuffle阶段对中间结果文件建立有索引文件,读取更快;mr对中间文件没有建立索引文件;
4 spark的shuffle阶段启用bypass时不会对中间结果文件进行排序;mr的shuffle阶段包含3次排序;
5 spark可以对反复用到的数据进行缓存,避免多次加载花费时间;mr不能把多次用到的数据缓存起来
----------------------------
MapReduce慢的原因:
- 多个MapReduce串联执行时,依赖于HDFS输出的中间结果
- MapReduce在处理复杂的DAG(有向无环图)时会产生大量的数据序列化、数据copy和磁盘I/O开销
Spark快的原因:
- Spark基于内存,尽可能的减少了中间结果写入磁盘和不必要的sort、shuffle
- Spark对于反复用到的数据进行了缓存
- Spark对于DAG进