Spark与Hadoop计算模型的比较分析

转载 2013年12月05日 14:04:19

Spark与Hadoop计算模型的比较分析


最近很多人都在讨论Spark这个貌似通用的分布式计算模型,国内很多机器学习相关工作者都在研究和使用它。

  Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发。

  那么Spark和Hadoop有什么不同呢?

  1.Spark的中间数据放到内存中,对于迭代运算效率比较高。

  Spark aims to extend MapReduce for iterative algorithms, and interactive low latency data mining. One major difference between MapReduce and Sparkis that MapReduce is acyclic. That is, data flows in from a stable source, isprocessed, and flows out to a stable filesystem. Spark allows iterative computation on the same data, which would form a cycle if jobs were visualized.   (旨在延长MapReduce的迭代算法,互动低延迟数据挖掘 MapReduce和Sparkis一个主要区别MapReduce是非周期性也就是说,数据流一个稳定的来源加工流出到一个稳定的文件系统Spark允许相同的数据,这将形成一个周期如果工作可视化迭代计算)

  Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的概念。

  Resilient Distributed Dataset (RDD) serves as an abstraction to rawdata, and some data is kept in memory and cached for later use. This last pointis very important; Spark allows data to be committed in RAM for an approximate20x speedup over MapReduce based on disks. RDDs are immutable and created through parallel transformations such as map, filter, groupBy and reduce.   (弹性分布式数据集(RDD作为原始数据抽象一些数据保存在内存缓存供以后使用最后这很重要;星火允许在RAM致力于近似20X基于加速MapReduce的磁盘上的数据RDDs不可改变的通过并行转换地图,过滤器,GroupBy和减少创建。)

  RDD可以cache到内存中,那么每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法来说,效率提升比较大。但是由于Spark目前只是在UC Berkeley的一个研究项目,目前看到的最大规模也就200台机器,没有像Hadoop那样的部署规模,所以,在大规模使用的时候还是要慎重考虑的。

  2.Spark比Hadoop更通用。

  Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map, filter, flatMap,sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,他们把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions。

  这些多种多样的数据集操作类型,给上层应用者提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的分区等。可以说编程模型比Hadoop更灵活。

  不过论文中也提到,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型,当然不适合把大量数据拿到内存中了。增量改动完了,也就不用了,不需要迭代了。

  3.容错性。

  从Spark的论文《Resilient Distributed Datasets: AFault-Tolerant Abstraction for In-Memory Cluster Computing》中没看出容错性做的有多好。倒是提到了分布式数据集计算,做checkpoint的两种方式,一个是checkpoint data,一个是logging the updates。貌似Spark采用了后者。但是文中后来又提到,虽然后者看似节省存储空间。但是由于数据处理模型是类似DAG的操作过程,由于图中的某个节点出错,由于lineage chains的依赖复杂性,可能会引起全部计算节点的重新计算,这样成本也不低。他们后来说,是存数据,还是存更新日志,做checkpoint还是由用户说了算吧。相当于什么都没说,又把这个皮球踢给了用户。所以我看就是由用户根据业务类型,衡量是存储数据IO和磁盘空间的代价和重新计算的代价,选择代价较小的一种策略。

  4.关于Spark和Hadoop的融合

  不知道Apache基金会的人怎么想的,我看Spark还是应该融入到Hadoop生态系统中。从Hadoop 0.23把MapReduce做成了库,看出Hadoop的目标是要支持包括MapReduce在内的更多的并行计算模型,比如MPI,Spark等。毕竟现在Hadoop的单节点CPU利用率并不高,那么假如这种迭代密集型运算是和现有平台的互补。同时,这对资源调度系统就提出了更高的要求。有关资源调度方面,UC Berkeley貌似也在做一个Mesos的东西,还用了Linux container,统一调度Hadoop和其他应用模型。

转自网络:http://tech.it168.com/a2012/0401/1333/000001333287.shtml

Spark与Hadoop计算模型的比较分析

转载自:http://tech.it168.com/a2012/0401/1333/000001333287.shtml Spark是一个通用的并行计算框架,由UCBerkeley的AMP实...

Spark与Hadoop计算模型的比较分析

最近很多人都在讨论Spark这个貌似通用的分布式计算模型,国内很多机器学习相关工作者都在研究和使用它。   Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发。 ...

Hadoop和Spark的处理模型比较

Apache Spark的高性能一定程度上取决于它采用的异步并发模型(这里指server/driver端采用的模型),这与Hadoop 2.0(包括YARN和MapReduce)是一致的。Hadoop...

spark、hadoop、storm、solr、es在车辆分析上的分析与比较

自2012年以来,公安部交通管理局在全国范围内推广了机动车缉查布控系统(简称卡口系统),通过整合共享各地车辆智能监测记录等信息资源,建立了横向联网、纵向贯通的全国机动车缉查布控系统,实现了大范围车辆缉...

Spark加载放在Tomcat容器中的mlib模型报错:org.apache.hadoop.fs.ChecksumException

一、问题 使用Intellij IDEA构建工程,将spark mlib训练的模型放到resources下,训练的模型包括data和metadata两个部分,其中在程序加载metadata时,报校验和...

Hadoop MapReduce 计算模型分析(一)

Hadoop MapReduce 计算模型分析(一) 先简单说一下MapReduce计算模型:        首先这是一个分布式对大数据处理的计算模型。在多个节点上并行处理大数据。在阅读时,你要将...

hadoop、storm和spark的区别、比较

1、hadoop、Storm该选哪一个?为了区别hadoop和Storm,该部分将回答如下问题: 1.hadoop、Storm各是什么运算 2.Storm为什么被称之为流式计算系统 3.hado...

Hadoop、storm和Spark的区别、比较

一、hadoop、Storm该选哪一个? 为了区别hadoop和Storm,该部分将回答如下问题: 1.hadoop、Storm各是什么运算 2.Storm为什么被称之为流式计算系统 3.ha...

hadoop、storm和spark的区别、比较

一、hadoop、Storm该选哪一个? 为了区别hadoop和Storm,该部分将回答如下问题: 1.hadoop、Storm各是什么运算 2.Storm为什么被称之为流式计算系统 3.hadoo...
  • poisions
  • poisions
  • 2016年04月11日 11:19
  • 10084
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark与Hadoop计算模型的比较分析
举报原因:
原因补充:

(最多只允许输入30个字)