mapreduce与spark的区别--内容详细
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的区别--内容详细相关推荐
- hadoop和spark的区别
hadoop和spark的区别 学习hadoop已经有很长一段时间了,好像是二三月份的时候朋友给了一个国产Hadoop发行版下载地址,因为还是在学习阶段就下载了一个三节点的学习版玩一下.在研究.学习h ...
- 大数据理论与实践5 分布式计算框架MapReduce和Spark
MapReduce和Spark MapReduce 简介 原理示例 基本概念 作业运行模式 Spark 简介 概念 编程模型 RDD RDD操作(Operator) RDD依赖(Dependency) ...
- c7pro android7,三星c7pro和iphone7哪个值得买?三星Galaxy c7 pro和苹果iphone7区别对比详细评测...
三星c7 pro介绍: 三星C7 Pro 三星C7 Pro可以看作是去年底上市的三星C9 Pro低配版,屏幕变小了,硬件配置也有所降低,不过配备了骁龙625升级版的骁龙626处理器,硬件方面也是颇具看 ...
- Hadoop与Alpach Spark的区别
Hadoop与Alpach Spark的区别 1.概述 2.解决问题的层面不一样 3.两者可合可分 4.Spark数据处理速度秒杀MapReduce 5.数据恢复 6.二者的区别总结: 1.概述 ...
- android和MTKP60区别,联发科P60和高通骁龙660哪个好?骁龙660与联发科P60区别对比详细评测...
联发科P60和高通骁龙660对比哪个好?近日,OPPO召开了媒体沟通会.正式公布了全新一代的OPPO R15智能手机.这款手机一大亮点在于是国内首款采用联发科P60芯片的手机,同时其梦境版却搭载了高通 ...
- php中=%3e -%3e的区别,华为nova3e与nova2s买哪个好?华为nova2s和nova3e区别对比详细评测...
HUAWEI nova 3e 高颜值 爱自拍 开启预售.3月20日下午,华为发布了新款华为Nova3e全面屏手机,它与去年底发布的Nova2s一样,均由关晓彤代言,主打年轻用户群体.从价格来看,华为N ...
- 360n4s普通版Android7,360手机N4S有几个版本 360 N4S手机标准版和高配版区别对比详细评测...
360手机N4S配置怎么样?360手机N4S值得购买吗?360手机N4S有几个版本?各版本有什么区别?下面脚本之家的小编就带来了360手机N4S各版本区别对比评测,一起来看看吧. 外观设计 360手机 ...
- 蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)
前言:蓝牙聊天App设计全部有三篇文章(一.UI界面设计,二.蓝牙搜索配对连接实现,三.蓝牙连接聊天),这篇文章是:三.蓝牙连接聊天. 课程1:Android Studio小白安装教程,以及第一个An ...
- spark word2vec 源码详细解析
spark word2vec 源码详细解析 简单介绍spark word2vec skip-gram 层次softmax版本的源码解析 word2vec 的原理 只需要看层次哈弗曼树skip-gram ...
最新文章
- layui table 滚动 键盘
- pip:成功解决pip下载时速度超慢(pip下载慢)的几种方法
- Tomcat的安装及使用
- suse linux修改ftp端口,suse Linux系统下的网络设置(ftp telnet xmanager)
- 场论 梯度 旋度 散度
- 2016-5-31 项目结构调整
- 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性...
- 中新赛克数据可视化_大道至简,OceanEye大数据可视化工具的高效之道
- 见微知著:语义分割中的弱监督学习
- IPFS BZZ Chia,项目这么多,怎么选择?
- TPAMI2021语义分割/领域自适应-Domain Adaptation Network with Image Alignment for Unsupervised Semantic Segment
- server can't find test.com: SERVFAIL
- 读《富爸爸穷爸爸》有感
- perl 一行命令 2021-09-02
- Go实战--golang中使用JWT(JSON Web Token)
- 死亡搁浅服务器不稳定ps4,《死亡搁浅》实机画面碉堡了 小岛秀夫亲晒
- !!!RFID原理及应用期末复习总结!!!少走弯路,直接满绩!
- matlab中(:)的部分使用
- FFmpeg学习之八(FFmpeg源码编译)
- 小程序另一种解析json