Hadoop的MapReduce的Map Task和Reduce Task都是进程级别的;而Spark Task则是基于线程模型的。
多进程模型和多线程模型
- 所谓的多进程模型和多线程模型,指的是同一个节点上多个任务的运行模式。无论是MapReduce和Spark,整体上看都是多进程的:MapReduce应用程序是由多个独立的Task进程组成的;Spark应用程序的运行环境是由多个独立的Executor进程(每个应用程序使用一个Executor进程)构建的临时资源池构成的。
- 多进程模型便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间,不适合运行低延迟类型的作业,这是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采用了多线程模型
Hadoop MapReduce任务的进程模型:
Spark任务的线程模型
Hadoop任务的进程模型特点:
- 每个Task运行在一个独立的JVM进程中;
- 可单独为不同类型的Task设置不同的资源量,目前支持内存和CPU两种资源;
- 每个Task运行完后,将释放所占用的资源,这些资源不能被其他Task复用,即使是同一个作业相同类型的Task。也就是说,每个Task都要经历“申请资源—> 运行Task –> 释放资源”的过程。
- 进程特点决定了启动一个Task将是一个很expensive的操作,对于迭代计算而言,无疑是噩梦
Spark任务的线程模型特点:
- 每个节点上可以运行一个或多个Executor服务。每个应用程序在一个工作者节点上只会有一个Executor。多个应用程序则会有多个Executor
- 每个Executor配有一定数量的slot,表示该Executor中可以同时运行多少个ShuffleMapTask或者ReduceTask;
- 每个Executor单独运行在一个JVM进程中,每个Task则是运行在Executor中的一个线程;
- 同一个Executor内部的Task可共享内存,比如通过函数SparkContext.broadcast广播的数据如文件或者数据结构只会在每个Executor中加载一次,而不会像MapReduce那样,每个Task加载一次
- Executor一旦启动后,将一直运行,且它的资源可以一直被Task复用,直到Spark程序运行完成后才释放退出。
相关推荐
Hadoop 用mapreduce实现Wordcount实例,绝对能用
upon the widely used and highly successful Hadoop MapReduce v1. The recipes that will help you analyze large and complex datasets with next generation Hadoop MapReduce will provide you with the skills...
Hadoop MapReduce Cookbook 高清完整版PDF下载 Hadoop MapReduce Cookbook
本书对Hadoop Mapreduce进行详细讲解,切合实际应用,能够更深入地学习MapReduce,确实是一本不错的书。
用MapReduce实现TF-IDF,Hadoop版本是2.7.7,参考某教程亲自手写的,可以运行,有问题可以留言
在hadoop平台上,用mapreduce编程实现大数据的词频统计
Java操作Hadoop Mapreduce基本实践源码.
本章介绍了 Hadoop MapReduce,同时发现它有以下缺点: 1、程序设计模式不容易使用,而且 Hadoop 的 Map Reduce API 太过低级,很难提高开发者的效率。 2、有运行效率问题,MapReduce 需要将中间产生的数据保存到...
Hadoop MapReduce v2 Cookbook (第二版), Packt Publishing
赠送jar包:hadoop-mapreduce-client-core-2.5.1.jar; 赠送原API文档:hadoop-mapreduce-client-core-2.5.1-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-core-2.5.1-sources.jar; 赠送Maven依赖信息文件:...
基于Apriori算法的频繁项集Hadoop mapreduce
这本书都是实例,很接地气,多加练习和阅读,可稳步上升
hadoop mapreduce helloworld 能调试 详细内容请看:http://blog.csdn.net/wild46cat/article/details/53641765
Hadoop MapReduce v2 Cookbook, 2nd Edition-Packt Publishing(2015) 高清完整版PDF下载
Hadoop mapreduce 实现KMeans,可用
讲述了与Hadoop MapReduce的相关知识和应用
Hadoop MapReduce.pdf
MapReduce is the distribution system that the Hadoop MapReduce engine uses to distribute work around a cluster by working parallel on smaller data sets. It is useful in a wide range of applications, ...
[Packt Publishing] Hadoop MapReduce 经典实例 (英文版) [Packt Publishing] Hadoop MapReduce Cookbook (E-Book) ☆ 出版信息:☆ [作者信息] Srinath Perera, Thilina Gunarathne [出版机构] Packt ...
Hadoop mapreduce 实现MatrixMultiply矩阵相乘