spark与mr的异同

南墨2年前技术文章1030

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 进行处理,实时计算。


相关文章

开源大数据集群部署(十八)Hive 安装部署

开源大数据集群部署(十八)Hive 安装部署

2.7.1创建hive Kerberos主体bash /root/bigdata/getkeytabs.sh /etc/security/keytab/hive.keytab hive2.7.2 安装...

K8s数据持久化

K8s数据持久化

一、为什么需要持久化为了解决pod里面的容器被删除后数据不丢失,则引入了存储类型,类似于docker中的数据卷。在kubernetes集群中,其是支持多种存储类型,包括但不限于emptyDir,Hos...

mysql高可用半同步配置(二)

一、配置半同步1.1、部署半同步:#首先判断MySQL服务器是否支持动态增加插件mysql> select @@have_dynamic_loading#确认支持动态增加插件后,检查MySQL的...

Trino对接haproxy开启ssl

Trino对接haproxy开启ssl

1、背景客户在开启https后,在高并发的情况下,集群性能下降严重。初步估计是由于worker和Coordinator交互都需要进行加密和解密,会提高cpu使用率,导致服务变慢。现在采用haproxy...

Prometheus 监控 Nginx

Prometheus 监控 Nginx

一、Nginx_exporter安装下载链接:https://github.com/discordianfish/nginx_exporter下载nginx_exporter的docker镜像。doc...

PostgreSQL 锁等待排查

PostgreSQL 锁等待排查

说明在数据库中,常用 锁 和 MVCC 来保障事务的一致性及提高并发性。锁问题的定位和排查也是数据库运维人员必会的技能,本篇文章介绍 PostgreSQL 如何排查定位锁堵塞问题。1. Postgre...

发表评论    

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