spark与mr的异同

南墨2年前技术文章1131

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


相关文章

Python 并发编程 Futures

Python 并发编程 Futures

说明编程中如果能合理利用编程语言的并发编程技巧,都可以极大提升程序的性能。在 Python 3.2 版本为用户提供了一个标准库 concurrent.futures 可以实现进程池 和 线程池,本篇文...

Ambari部署

Ambari部署

Ambari 官方资料入口:https://www.cloudera.com/products/open-source/apache-hadoop/apache-ambari.htmlAmbari 相...

MySQL 8.0 新特性:invisible indexes

MySQL 8.0 新特性:invisible indexes

一、前言什么是 invisible indexes 呢?就是不可见索引,优化器会默认忽略的索引,关于这个特性的用处,需要我们一起挖掘。二、案例思考某客户研发提了一条删除索引的 SQL,这张表 15G,...

Mysql删除binlog

binlog 是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。一、手动删除直接在 /var/lib/m...

PG体系结构(一)

PG体系结构(一)

一、进程结构PG数据库启动时会先启动一个主进程(9.3之前称为postmaster,9.3以后称为postgres server process),然后fork出一些辅助子进程(backend、bac...

Docker常用命令

1、找镜像去docker hub,查找需要的镜像,docker pull nginx  #下载最新版 镜像名:版本名(标签) docker pull nginx:1.20.1 #...

发表评论    

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