Hadoop MapReduce采用了多进程模型,而Spark采用了多线程模型:

Apache Spark的高性能一定程度上取决于它采用的异步并发模型(这里指server/driver 端采用的模型),这与Hadoop 2.0(包括YARN和MapReduce)是一致的。Hadoop 2.0自己实现了类似Actor的异步并发模型,实现方式是epoll+状态机,而Apache Spark则直接采用了开源软件Akka,该软件实现了Actor模型,性能非常高。尽管二者在server端采用了一致的并发模型,但在任务级别(特指 Spark任务和MapReduce任务)上却采用了不同的并行机制:Hadoop MapReduce采用了多进程模型,而Spark采用了多线程模型。

注意,本文的多进程和多线程,指的是同一个节点上多个任务的运行模 式。无论是MapReduce和Spark,整体上看,都是多进程:MapReduce应用程序是由多个独立的Task进程组成的;Spark应用程序的 运行环境是由多个独立的Executor进程构建的临时资源池构成的。

多进程模型便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间,不适合运行低延迟类型的作业,这是MapReduce广为诟病的原因之一。而多线程模型则相反,该模型使得Spark很适合运行低延迟类型的作业。总之,Spark同节点上的任务以多线程的方式运行在一个JVM进程中,可带来以下好处:

1)任务启动速度快,与之相反的是MapReduce Task进程的慢启动速度,通常需要1s左右;

2)同节点上所有任务运行在一个进程中,有利于共享内存。这非常适合内存密集型任务,尤其对于那些需要加载大量词典的应用程序,可大大节省内存。

3) 同节点上所有任务可运行在一个JVM进程(Executor)中,且Executor所占资源可连续被多批任务使用,不会在运行部分任务后释放掉,这避免 了每个任务重复申请资源带来的时间开销,对于任务数目非常多的应用,可大大降低运行时间。与之对比的是MapReduce中的Task:每个Task单独 申请资源,用完后马上释放,不能被其他任务重用,尽管1.0支持JVM重用在一定程度上弥补了该问题,但2.0尚未支持该功能。

尽管Spark的过线程模型带来了很多好处,但同样存在不足,主要有:

1)由于同节点上所有任务运行在一个进程中,因此,会出现严重的资源争用,难以细粒度控制每个任务占用资源。与之相 反的是MapReduce,它允许用户单独为Map Task和Reduce Task设置不同的资源,进而细粒度控制任务占用资源量,有利于大作业的正常平稳运行。

下面简要介绍MapReduce的多进程模型和Spark的多线程模型。

1.MapReduce多进程模型

1) 每个Task运行在一个独立的JVM进程中;

2) 可单独为不同类型的Task设置不同的资源量,目前支持内存和CPU两种资源;

3) 每个Task运行完后,将释放所占用的资源,这些资源不能被其他Task复用,即使是同一个作业相同类型的Task。也就是说,每个Task都要经历“申请资源—> 运行Task –> 释放资源”的过程。

2.Spark多线程模型

1) 每个节点上可以运行一个或多个Executor服务;

2) 每个Executor配有一定数量的slot,表示该Executor中可以同时运行多少个ShuffleMapTask或者ReduceTask;

3) 每个Executor单独运行在一个JVM进程中,每个Task则是运行在Executor中的一个线程;

4) 同一个Executor内部的Task可共享内存,比如通过函数SparkContext#broadcast广播的文件或者数据结构只会在每个Executor中加载一次,而不会像MapReduce那样,每个Task加载一次;

5) Executor一旦启动后,将一直运行,且它的资源可以一直被Task复用,直到Spark程序运行完成后才释放退出。

总体上看,Spark采用的是经典的scheduler/workers模式, 每个Spark应用程序运行的第一步是构建一个可重用的资源池,然后在这个资源池里运行所有的ShuffleMapTask和ReduceTask(注 意,尽管Spark编程方式十分灵活,不再局限于编写Mapper和Reducer,但是在Spark引擎内部只用两类Task便可表示出一个复杂的应用 程序,即ShuffleMapTask和ReduceTask),而MapReduce应用程序则不同,它不会构建一个可重用的资源池,而是让每个 Task动态申请资源,且运行完后马上释放资源。

文章来源:http://www.codeweblog.com/mapreduce

mapreduce与spark的区别--内容详细相关推荐

  1. hadoop和spark的区别

    hadoop和spark的区别 学习hadoop已经有很长一段时间了,好像是二三月份的时候朋友给了一个国产Hadoop发行版下载地址,因为还是在学习阶段就下载了一个三节点的学习版玩一下.在研究.学习h ...

  2. 大数据理论与实践5 分布式计算框架MapReduce和Spark

    MapReduce和Spark MapReduce 简介 原理示例 基本概念 作业运行模式 Spark 简介 概念 编程模型 RDD RDD操作(Operator) RDD依赖(Dependency) ...

  3. c7pro android7,三星c7pro和iphone7哪个值得买?三星Galaxy c7 pro和苹果iphone7区别对比详细评测...

    三星c7 pro介绍: 三星C7 Pro 三星C7 Pro可以看作是去年底上市的三星C9 Pro低配版,屏幕变小了,硬件配置也有所降低,不过配备了骁龙625升级版的骁龙626处理器,硬件方面也是颇具看 ...

  4. Hadoop与Alpach Spark的区别

    Hadoop与Alpach Spark的区别 1.概述 2.解决问题的层面不一样 3.两者可合可分 4.Spark数据处理速度秒杀MapReduce 5.数据恢复 6.二者的区别总结: 1.概述    ...

  5. android和MTKP60区别,联发科P60和高通骁龙660哪个好?骁龙660与联发科P60区别对比详细评测...

    联发科P60和高通骁龙660对比哪个好?近日,OPPO召开了媒体沟通会.正式公布了全新一代的OPPO R15智能手机.这款手机一大亮点在于是国内首款采用联发科P60芯片的手机,同时其梦境版却搭载了高通 ...

  6. php中=%3e -%3e的区别,华为nova3e与nova2s买哪个好?华为nova2s和nova3e区别对比详细评测...

    HUAWEI nova 3e 高颜值 爱自拍 开启预售.3月20日下午,华为发布了新款华为Nova3e全面屏手机,它与去年底发布的Nova2s一样,均由关晓彤代言,主打年轻用户群体.从价格来看,华为N ...

  7. 360n4s普通版Android7,360手机N4S有几个版本 360 N4S手机标准版和高配版区别对比详细评测...

    360手机N4S配置怎么样?360手机N4S值得购买吗?360手机N4S有几个版本?各版本有什么区别?下面脚本之家的小编就带来了360手机N4S各版本区别对比评测,一起来看看吧. 外观设计 360手机 ...

  8. 蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)

    前言:蓝牙聊天App设计全部有三篇文章(一.UI界面设计,二.蓝牙搜索配对连接实现,三.蓝牙连接聊天),这篇文章是:三.蓝牙连接聊天. 课程1:Android Studio小白安装教程,以及第一个An ...

  9. spark word2vec 源码详细解析

    spark word2vec 源码详细解析 简单介绍spark word2vec skip-gram 层次softmax版本的源码解析 word2vec 的原理 只需要看层次哈弗曼树skip-gram ...

最新文章

  1. layui table 滚动 键盘
  2. pip:成功解决pip下载时速度超慢(pip下载慢)的几种方法
  3. Tomcat的安装及使用
  4. suse linux修改ftp端口,suse Linux系统下的网络设置(ftp telnet xmanager)
  5. 场论 梯度 旋度 散度
  6. 2016-5-31 项目结构调整
  7. 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性...
  8. 中新赛克数据可视化_大道至简,OceanEye大数据可视化工具的高效之道
  9. 见微知著:语义分割中的弱监督学习
  10. IPFS BZZ Chia,项目这么多,怎么选择?
  11. TPAMI2021语义分割/领域自适应-Domain Adaptation Network with Image Alignment for Unsupervised Semantic Segment
  12. server can't find test.com: SERVFAIL
  13. 读《富爸爸穷爸爸》有感
  14. perl 一行命令 2021-09-02
  15. Go实战--golang中使用JWT(JSON Web Token)
  16. 死亡搁浅服务器不稳定ps4,《死亡搁浅》实机画面碉堡了 小岛秀夫亲晒
  17. !!!RFID原理及应用期末复习总结!!!少走弯路,直接满绩!
  18. matlab中(:)的部分使用
  19. FFmpeg学习之八(FFmpeg源码编译)
  20. 小程序另一种解析json

热门文章

  1. d3 选择元素 api
  2. 华为云服务器入门初体验
  3. 用户与计算机系统的交互换界面,人机交互期末PPT复习(GXNU李智老师)
  4. qt mysql dao_Qt 数据库使用方法 mysql语句
  5. python面对对象编程写一个程序有一个汽车_汽车类面向对象编程Python
  6. 【直播回顾】云栖社区特邀专家关键:Java无锁集合代码分析
  7. kafka官方文档学习笔记3--配置简述
  8. DIY JavaAPI CHM文档
  9. 前端程序猿必知:单页面应用的核心
  10. topcoder srm 661 div1