Spark比MapReduce快的原因
① Spark支持DAG
- 每个MapReduce只有两个阶段:Map、Reduce
- Spark支持DAG,可以有任意多个阶段
② Spark的Shuffle更智能
- MR的Shuffle过程一定会经过分区、排序、分组这几个过程
- Spark有多种Shuffle机制,过程不是固定的,灵活选择
③ Spark的Task是线程级别
- MR将Task分为两种进程:MapTask进程结束,再启动ReduceTask进程【JVM重用】
- Spark的进程只有一种,只申请一次,所有任务都以Task的方式直接分配在进程中运行
区别 | MapReduce | Spark |
---|---|---|
计算流程结构 | 1个Map +1个Reduce,每步结果都必须进入磁盘 | 支持DAG,一个程序中可以有多个Map、Reduce过程,多个Map之间的操作可以直接在内存中完成 |
Shuffle 过程 | 分区、排序、分组 | 会根据具体的操作来经过不同的过程 |
Task运行方式 | 进程:MapTask、ReduceTask | 进程只启动一次:所有Task都以线程方式存在,不需要频繁启动、申请资源 |