spark与mr的异同

南墨2年前技术文章1034

1.

MR:抽象层次低,需要使用手工代码来完成程序编写,使用上难以上手;

Spark:Spark 采用RDD 计算模型,简单容易上手。

2.

MR:只提供map 和reduce 两个操作,表达能力欠缺;

Spark:Spark 采用更加丰富的算子模型,包括map、flatmap、groupbykey、reducebykey 等;

3.

MR:一个job 只能包含map 和reduce 两个阶段,复杂的任务需要包含很多个job,这些job 之间的管理以来需要开发者自己进行管理;

Spark:Spark 中一个job 可以包含多个转换操作,在调度时可以生成多个stage,而且如果多个map 操作的分区不变,是可以放在同一个task 里面去执行;

4.

MR:中间结果存放在hdfs 中;

Spark:Spark 的中间结果一般存在内存中,只有当内存不够了,才会存入本地磁盘,而不是hdfs;

5.

MR:只有等到所有的map task 执行完毕后才能执行reduce task;

Spark:Spark 中分区相同的转换构成流水线在一个task 中执行,分区不同的需要进行shuffle 操作,被划分成不同的stage 需要等待前面的stage 执行完才能执行。

6.

MR:只适合batch 批处理,时延高,对于交互式处理和实时处理支持不够;

Spark:Spark streaming 可以将流拆成时间间隔的batch 进行处理,实时计算。


相关文章

pgbench 压测工具

pgbench 压测工具

一、基本参数pgbench工具是Postgres自带的一款轻量型基准压测工具。它自定义相关场景下脚本进行1.1 初始化参数参数含义-i / --initialize调用初始化模式-I init_ste...

 大数据集群监控配置操作指导(三)Flink监控开启jmx

大数据集群监控配置操作指导(三)Flink监控开启jmx

官网的关于 flnk+prometheus的文章https://flink.apache.org/features/2019/03/11/prometheus-monitoring.htmlprome...

Go 链表的实现

Go 链表的实现

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:...

python-序列化和反序列化

1、为什么要序列化内存中的字典、列表、集合以及各种对象,如何保存到一个文件中?如果是自己定义的类的实例,如何保存到一个文件中?如何从文件中读取数据,并让它们在内存中再次恢复成自己对应的类的实例?要设计...

Docker镜像是有仓库

在Docker中,当我们执行 docker pull xxx 的时候 ,它实际上是从 hub.docker.com 这个地址去查找,这就是 Docker 公司为我们提供的公共仓库。在工作中,我们不可能...

HDFS元数据损坏恢复方法

HDFS元数据损坏恢复方法

HDFS JournalNode 编辑目录(dfs.journalnode.edits.dir)下数据损坏(单节点损坏或所有节点数据损坏),如何恢复 HDFS?单节点损坏a)  &...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。