首先最核心的两点:内存和磁盘的区别;job中途失败重新计算的区别。

---spark最核心的概念是RDD(弹性分布式数据集),它的所有rdd在并行运算过程程中,可以做到数据共享,也就是可以重复使用mr在计算过程中

---mapr:一次数据过程包含从共享文件系统读取数据、进行计算、完成计算、写入计算结果到共享存储中,在计算过程中,不同计算节点之间保持高度并行,这样的数据流模型使得那些需要反复使用一个特定数据集的迭代算法无法高效地运行。

均是并行计算框架,Spark拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

---线程和进程的区别:子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU;进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源

a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

c.调度和切换:线程上下文切换比进程上下文切换要快得多。

从总体上来说,mr和spark都是基于多进程的并发计算模型,但是却采用了不同的并发计算机制,Spark拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法mr是多进程单线程模型,而spark是多进程多线程模型;mr应用程序由多个独立的Task进程组成,每个task相互独立,申请资源和申请数据,再到计算完成结果存储都是独立进行的;Spark应用程序的运行环境是由多个独立的executer进程构建的临时资源池构成的,而每个executer又分为多个task进程,拥有独立的mapshuffer,reduceshuffer,而且同一个executer中的数据可以进行复用,大大提高了数据和资源的利用率,节省了大量的频繁申请资源,调用数据所浪费的性能。

优点:基于线程和进程的区别,spark的任务启动速度很快,而mr的慢启动速度统常需要1s左右;,同节点的任务运行在一个进程中,也就是运行在一个JVM中,共享内存和资源,也就是数据和资源都可以共用,不必频繁的调用数据和申请注销资源,这就非常适合进行内存密集型任务和低延迟性作业;

缺点:同节点中的多线程会存在资源争抢的现象,难以细粒度的控制每个任务所应用的资源,在资源控制上自然mr的单线程做的更好,毕竟它不存在争抢和控制,

1、spark把运算的中间数据存放在内存,迭代计算效率更高,Spark中除了基于内存计算外,还有DAG有向无环图来切分任务的执行先后顺序;mapreduce的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘io操做,影响性能。

2、spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在节点内存中的只读性质的数据集,这些集合是弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建;mapreduce的话容错可能只能重新计算了,成本较高。

 3、spark更加通用,spark提供了transformation和action这两大类的多个功能api,另外还有流式处理sparkstreaming模块、图计算GraphX等等;mapreduce只提供了map和reduce两种操作,流计算以及其他模块的支持比较缺乏。

 4、spark框架和生态更为复杂,首先有RDD、血缘lineage、执行时的有向无环图DAG、stage划分等等,很多时候spark作业都需要根据不同业务场景的需要进行调优已达到性能要求;mapreduce框架及其生态相对较为简单,对性能的要求也相对较弱,但是运行较为稳定,适合长期后台运行。

 Spark运行模式       

      1)Local:多用于本地测试,如在eclipse,idea中写程序测试等。该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,用来验证开发出来的应用程序逻辑上有没有问题。其中N代表可以使用N个线程,每个线程拥有一个core。如果不指定N,则默认是1个线程(该线程有1个core)。不用启动Spark的Master、Worker守护进程( 只有集群的Standalone方式时,才需要这两个角色),也不用启动Hadoop的各服务(除非你要用到HDFS),这是和其他模式的区别哦,要记住才能理解。只会启动SparkSubmit进程又当爹、又当妈,既是客户提交任务的Client进程、又是Spark的driver程序、还充当着Spark执行Task的Executor角色。

      2)Standalone:是Spark自带的一个资源调度框架,它支持完全分布式。

      3)Yarn:Hadoop生态圈里面的一个资源调度框架,Spark也是可以基于Yarn来计算的。

      4)Mesos

      资源调度框架。

      要基于Yarn来进行资源调度,必须实现AppalicationMaster接口,Spark实现了这个接口,所以可以基于Yarn。

  总结,spark生态更为丰富,功能更为强大、性能更佳,适用范围更广;mapreduce更简单、稳定性好、适合离线海量数据挖掘计算。

大数据---spark和mr的区别相关推荐

  1. Spark与MR的区别

    速度 spark把运算的中间数据存放在内存,迭代计算效率更高:MR的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘IO操作,影响性能 容错性 spark容错性高,它通过弹性分布式数据集RDD来实现 ...

  2. 【Todo】【读书笔记】大数据Spark企业级实战版 Scala学习

    目录:/Users/baidu/Documents/Data/Interview/Hadoop-Spark-Storm-Kafka 下了这本<大数据Spark企业级实战版>, 另外还有一本 ...

  3. Python+大数据-Spark技术栈(二)SparkBaseCore

    Python+大数据-Spark技术栈(二)SparkBase&Core 学习目标 掌握SparkOnYarn搭建 掌握RDD的基础创建及相关算子操作 了解PySpark的架构及角色 环境搭建 ...

  4. 大数据架构、大数据开发与数据分析的区别

    大数据架构.大数据开发与数据分析的区别 大数据产业 顾名思义大数据是一个以数据为核心的产业.大数据产业生成流程从数据的生命周期的传导和演变上可分为这几个部分:数据收集.数据储存.数据建模.数据分析.数 ...

  5. 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析

    2016年大数据Spark"蘑菇云"行动代码学习之AdClickedStreamingStats模块分析     系统背景:用户使用终端设备(IPAD.手机.浏览器)等登录系统,系 ...

  6. 光环大数据spark文档_推荐大数据Spark必读书目

    我有一个非常要好的同事,无数次帮我解决了业务上的痛.技术能力很强,业务方面也精通.而且更耐得住加班,并且是自愿加班,毫无怨言.不像我,6点到准时走人了.但就是这么一位兢兢业业的技术人,却一直没有升职加 ...

  7. 云计算、大数据和人工智的区别和联系

    云计算.大数据和人工智的区别和联系 今天跟大家讲讲云计算.大数据和人工智能.这三个词现在非常火,并且它们之间好像互相有关系. 一般谈云计算的时候会提到大数据.谈人工智能的时候会提大数据.谈人工智能的时 ...

  8. 大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一)

    大数据|Spark技术在京东智能供应链预测的应用案例深度剖析(一) 2017-03-27 11:58  浏览次数:148 1. 背景 前段时间京东公开了面向第二个十二年的战略规划,表示京东将全面走向技 ...

  9. 大数据与应用统计学的区别与联系

    (一) 大数据与应用统计学的区别 亚马逊首席科学家 Andreas Weigend 有着数据就是新的石油的观点.作为一种资产,大数据实现盈利的关键就在于,提高对海量数据的分析处理能力,通过特殊的技术实 ...

最新文章

  1. 1142 CREATE VIEW command denied to user 'blog'@'XXX.XXX.XXX.XXX' for table 'Articles'
  2. Http Tunnel 小记
  3. python2 与 python3 语法区别
  4. php最大并发数,php内置开发服务器的最大并发连接数
  5. php计算购置税1007无标题,新旧个税计算公式对比–ps:世界上最好的语言PHP
  6. 虚拟机网络模式与网络配置
  7. 格式化字符串漏洞利用 六、特殊案例
  8. EbNo(EbN0)和SNR
  9. [CIFS]解决linux挂载CIFS提示 HOST is down
  10. Atitit 深入理解软件的本质 attilax总结 软件三原则三次原则是DRY原则和YAGNI原则的折
  11. y7000 安装linux双系统,联想拯救者Y7000安装双系统:win10 + ubuntu16.04 (GTX1060显卡)...
  12. php自动发卡程序8.0_php自动发卡平台源码
  13. fiddler显示客户端请求时间
  14. BackgroundWorker使用总结
  15. CSC公派访问学者申请条件是什么?
  16. mtk android mt6573项目 root升级包制作
  17. 店宝宝:拼多多上线新业务 对标微信小商店
  18. 坑爹的苹果机不执行ajax请求,苹果机加载外部Jquery失败
  19. ASP.NET Core 数据保护(Data Protection)【上】
  20. vba oracle 乱码,【VBA研究】用VBA实现excel与Oracle数据库交互

热门文章

  1. 游戏对象与图形基础——作业与练习
  2. 能量营养棒行业调研报告 - 市场现状分析与发展前景预测
  3. 云贝餐饮小程序-V2可线传独立版【更新序列至2.5.6】独家修复商家登录/区域代理/分销商/会员卡/积分商城/文章/DIY
  4. 全球及中国无刷直流电机制造行业运作前景与未来发展形势分析报告2022版
  5. css关键帧 keyframes动画使用方法
  6. 计算机原理(2)电路如何实现逻辑运算,芯片内部是如何实现加法运算?
  7. 企业ERP应用的配套管理制度建设
  8. \r,\n,\r\n的区别,以及常见转义字符
  9. u盘linux xp双系统安装教程视频,从U盘安装Linux 与XP形成双系统
  10. 门禁系统数据库服务器配置,门禁系统数据库服务器如何配置