转自:http://blog.csdn.net/datascientist/article/details/7089127
最近很多人都在讨论Spark这个貌似通用的分布式计算模型,国内很多机器学习相关工作者都在研究和使用它。
Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发。
那么Spark和Hadoop有什么不同呢?
1,Spark的中间数据放到内存中,对于迭代运算效率比较高。
Spark aims to extend MapReduce for iterativealgorithms, 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 iterativecomputation on the same data, which would form a cycle if jobs were visualized.
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 createdthrough parallel transformations such as map, filter, groupBy and reduce.
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和其他应用模型。
分享到:
相关推荐
4.使用 SparkStreaming 进行流计算,不断将用户行为反馈给模型进行计算,提供 下一次推荐服务 5.使用 SparkStreaming 对接 Kafka 源,消费 Kafka 中的实时用户行为数据 6.使用 PNN、DeepFM 进行 CTR 点击评估 目前,...
1,由于Hadoop自身架构的导致了在离线数据存储分析意外的一切领域都力不从心,理论已经证明MapReduce模型可以模拟一切分布式计算,但是效率成为其死穴,而Spark基于RDD的计算图可以轻松、完整地表达MapReduce模型,...
1、资源内容:基于springboot,spark,hadoop的电影评分网站+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,功能ok的...
1、资源内容:基于Spark-Hadoop的户外广告识别系统。用户通过拍照上传广告图片,服务端识别出是哪张广告+源代码+文档说明+架构设计pd 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码...
采用MTV模式,数据库使用MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基于用户的基本信息和使用操作记录等行为信息来开发用户标签,并使用Hadoop、Spark大数据组件进行分析和处理的推荐系统。...
采用MTV模式,数据库使用MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基于用户的基本信息和使用操作记录等行为信息来开发用户标签,并使用Hadoop、Spark大数据组件进行分析和处理的推荐系统。...
采用MTV模式,数据库使用MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基于用户的基本信息和使用操作记录等行为信息来开发用户标签,并使用Hadoop、Spark大数据组件进行分析和处理的推荐系统。...
招聘推荐:系统利用Spark的机器学习库(如MLlib)构建候选模型,通过对求职者的个人资料、工作经历、技能等特征进行分析,匹配合适的职位和公司。系统可以根据用户的偏好和需求,向其推荐最相关的招聘信息。 可视化...
将Spark和Hama两种分布式并行计算模型整合到Hadoop生态系统中,分别用于支持内存计算和整体同步并行计算。将Hadoop集群构建成master-slave对等结构,解决全局同步和局部同步问题。最后,在Hadoop集群上,利用有限...
第一章 Spark简介与计算模型 3 1 What is Spark 3 2 Spark简介 3 3 Spark历史 4 4 BDAS生态系统 4 5 Spark与Hadoop的差异 5 6 Spark的适用场景 6 7 Spark成功案例 6 第二章 Spark开发环境搭建 8 1 Spark运行模式 8 2...
一.弹性分布式数据集-RDD RDD是Spark核心数据结构...从hadoop文件系统输入创建如HDFS,也可以是其他与hadoop兼容的持久化存储系统如Hive,Hbase创建。 (2).从父RDD转换得到新的RDD。 (3).调用SparkContext的parallelize
招聘推荐:系统利用Spark的机器学习库(如MLlib)构建候选模型,通过对求职者的个人资料、工作经历、技能等特征进行分析,匹配合适的职位和公司。系统可以根据用户的偏好和需求,向其推荐最相关的招聘信息。 可视化...
内容提要:本章首先简单介绍Spark与Scala编程语言,接着分析Spark与Hadoop的区别,认识Hadoop MapReduce计算模型的缺陷与Spark的优势;然后讲解了Spark的生态系统和架构设计,并介绍了Spark SQL以及Spark的部署和...
招聘推荐:系统利用Spark的机器学习库(如MLlib)构建候选模型,通过对求职者的个人资料、工作经历、技能等特征进行分析,匹配合适的职位和公司。系统可以根据用户的偏好和需求,向其推荐最相关的招聘信息。 可视化...
Spark延续了Hadoop的MapReduce计算模型,相比之下Spark的计算过程保持在内存中,减少了硬盘读写,能够将多个操作进行合并后计算,因此提升了计算速度。同时Spark也提供了更丰富的计算API。MapReduce是Hadoop和Spark...
1、资源内容:互联网行业分析,数据源于前程堪忧招聘网站,数据分析基于Hadoop+Spark平台,数据大屏基于Echarts+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程...
课时13:Spark对收藏转预测换率与真正的转换率对比,以及决策树模型构建 课时14:Spark机器学习对各种监督与非监督分类学习详细介绍 课时15:Spark协同过滤算法,构建用户与产品模型 课时16:Spark协同算法完成给...
虽然Spark是一个通用的并行计算框架,但是Spark本质上也是一个基于map-reduce算法模型实现的分布式计算框架,Spark不仅拥有了Hadoop MapReduce的能力和优点,还解决了Hadoop MapReduce中的诸多性能缺陷。
Spark 框架是Hadoop 大数据平台上整合能力强,处理速度快的内存模型框架,它的图 处理Graphx 也得到快速发展。该文先介绍Spark 框架与Graphx 的关系与发展。接着分析了Graphx 中的三个典型的算 法。最后总结了Graphx...