转自: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和其他应用模型。
分享到:
相关推荐
HDFS为大规模数据提供了可靠的分布式存储,而MapReduce则提供了并行计算模型。在Python和Spark中,可以通过Hadoop的Python接口(PyDoop)或者使用Spark的Hadoop兼容层与HDFS进行交互,实现对Hadoop集群的数据访问。 ...
MapReduce则是一种并行计算模型,用于处理和生成大规模数据集。在用户行为分析中,Hadoop可以高效地存储和处理海量的日志数据,支持离线分析任务。 二、Spark:实时分析的利器 Spark作为新一代的大数据处理引擎,...
《Hadoop Spark大数据巨量分析与机器学习整合开发实战》一书由林大贵编著,主要讲解了如何将大数据分析技术和机器学习技术结合起来进行实战开发。本书的重点是Hadoop和Spark这两个在大数据处理领域占据重要地位的...
MapReduce则是一种并行计算模型,用于处理和生成大数据集。在Hadoop 2.2.0版本中,引入了YARN(Yet Another Resource Negotiator),作为资源管理器,进一步提升了系统的灵活性和效率。 **Hadoop的安装与配置:** ...
它采用了弹性分布式数据集(Resilient Distributed Datasets, RDDs)作为其基本的数据抽象,这是一种容错性强的内存计算模型,允许数据在集群节点间快速传输和并行处理。 Spark与Hadoop的关系在于,Hadoop是大数据...
《Spark高清Hadoop》这本书是针对大数据处理领域的一份宝贵学习资料,主要聚焦于Apache Spark这一强大的分布式计算框架。Spark以其高效、易用和多用途的特点,在大数据处理领域备受推崇,尤其是在实时处理、机器学习...
《Spark与Hadoop在大数据处理中的深度探索》 在当今数据爆炸的时代,大数据处理技术的重要性不言而喻。Spark和Hadoop作为两个重要的大数据处理框架,各具特色且相辅相成,共同构建了大数据生态的重要一环。本文将...
Hadoop是一个分布式文件系统(HDFS)和MapReduce计算模型的集合,为大规模数据处理提供基础设施。 Spark的核心特性是其基于内存计算的架构,称为Resilient Distributed Datasets (RDDs)。这种设计使得数据可以被...
再者,Apache Hadoop是另一个重要的大数据处理框架,它由HDFS(分布式文件系统)和MapReduce(并行计算模型)组成。HDFS为海量数据提供了可靠的存储,MapReduce则实现了数据的分布式计算。读者会学习如何部署和管理...
- Spark的内存计算模型允许数据在内存中快速处理,避免了传统Hadoop MapReduce的磁盘I/O开销,显著提升了计算速度。 - **Tungsten**:Spark的底层执行引擎,采用代码生成技术提高性能,减少了Java反射的开销。 - ...
在本场景中,我们讨论的是Spark的3.0.0版本,与Hadoop3.2相结合的二进制发行版——"spark-3.0.0-bin-hadoop3.2"。这个压缩包是为了在Windows操作系统下运行Spark而设计的,因此标签明确指出它是适用于Windows平台的...
2. **内存计算**:Spark的一大优势在于其内存计算模型,它将数据缓存在内存中,减少了磁盘I/O,从而提高了计算速度。在2.3.0版本中,Spark通过Tungsten优化了内存管理,提高了内存利用率。 3. **多模式支持**:...
《Spark 3.1.2 与 Hadoop 3.2 整合:深度解析与实战指南》 在大数据处理领域,Apache Spark 和 Hadoop 是两个至关重要的组件。Spark 提供了快速、通用且可扩展的数据处理框架,而 Hadoop 则是分布式存储和计算的...
Spark的核心特性在于其内存计算模型,它将数据加载到内存中,允许快速重用和迭代,从而极大地提高了数据处理速度,尤其是在机器学习和图形处理等需要频繁迭代的场景下。Spark不仅提供了一个更高效的计算引擎,还支持...
- Spark-3.1.2-bin-hadoop2.7版本说明Spark与Hadoop 2.7兼容。Hadoop是另一个开源的大数据处理框架,主要负责数据存储(HDFS)和作业调度(YARN)。Spark可以与Hadoop生态系统无缝集成,利用HDFS作为数据源,并且...
它采用了内存计算模型,极大地提高了数据处理的速度,相比于传统的基于磁盘的计算框架如Hadoop MapReduce,Spark在迭代计算和交互式查询方面具有显著优势。Spark 2.4.4在此基础上,进一步提升了性能和稳定性。 新...
Spark与Hadoop紧密集成,可以读写HDFS(Hadoop分布式文件系统)和其他Hadoop兼容存储。在这个版本中,Spark 2.4.4支持Hadoop 2.6,这意味着它可以利用Hadoop的YARN资源管理系统进行集群调度。 4. **性能优化**: ...
Spark与Hadoop的集成,使得它能够直接操作HDFS上的数据,提高了数据处理的效率。 解压“spark2.3.0-hadoop2.6.tgz”后,你需要对目录进行重命名以符合你的系统或项目需求。通常,你可以保留原始的目录结构,但将...
5. GraphX:用于图计算,提供了图操作API,支持Pregel图计算模型。 与Hadoop 2.7的兼容性意味着Spark可以无缝地集成到Hadoop生态系统中,使用HDFS作为默认的数据存储系统,同时也能与YARN资源管理器配合,进行集群...