Spark与Hadoop大数据计算框架区别是什么?

  Spark与Hadoop大数据计算框架区别是什么?ApacheSpark专为大规模数据处理而设计的快速通用的计算引擎,而Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop和Spark都是大数据框架,但各自存在的目的不一样。Hadoop实质上是一个分布式数据基础设施,将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,也有计算处理功能。Spark是一个专门用来对那些分布式存储的大数据进行处理的工具并不会进行分布式数据的存储。编程

  Spark是什么?服务器

  Spark是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等。Spark包含大数据领域常见的各类计算框架:如SparkCore用于离线计算,SparkSQL用于交互式查询,SparkStreaming用于实时流式计算,SparkMLlib用于机器学习,SparkGraphX用于图计算。架构

  Spark主要用于大数据的计算,而Hadoop之后主要用于大数据的存储(好比HDFS、Hive、HBase等),以及资源调度(Yarn)。框架

  Hadoop是什么?机器学习

  Hadoop是项目总称,由HDFS和MapReduce组成。HDFS是GoogleFileSystem(GFS)的开源实现。MapReduce是GoogleMapReduce的开源实现。ApacheHadoop软件库是一个容许使用简单编程模型跨计算机集群处理大型数据集合的框架,其设计的初衷是将单个服务器扩展成上千个机器组成的一个集群为大数据提供计算服务,其中每一个机器都提供本地计算和存储服务。分布式

  Hadoop与Spark都是大数据计算框架,但二者各有本身的优点,那么Spark与Hadoop的区别以下:ide

  一、编程方式工具

  Hadoop的MapReduce在计算数据时,计算过程必需要转化为Map和Reduce两个过程,从而难以描述复杂的数据处理过程;而Spark的计算模型不局限于Map和Reduce操做,还提供了多种数据集的操做类型,编程模型比MapReduce更加灵活。oop

  二、数据存储性能

  Hadoop的MapReduce进行计算时,每次产生的中间结果都是存储在本地磁盘中;而Spark在计算时产生的中间结果存储在内存中。

  三、数据处理

  Hadoop在每次执行数据处理时,都须要从磁盘中加载数据,致使磁盘的I/O开销较大;而Spark在执行数据处理时,只须要将数据加载到内存中,以后直接在内存中加载中间结果数据集便可,减小了磁盘的1O开销。

  四、数据容错

  MapReduce计算的中间结果数据保存在磁盘中,且Hadoop框架底层实现了备份机制,从而保证了数据容错;一样SparkRDD实现了基于Lineage的容错机制和设置检查点的容错机制,弥补了数据在内存处理时断电丢失的问题。在Spark与Hadoop的性能对比中,较为明显的缺陷是Hadoop中的MapReduce计算延迟较高,没法胜任当下爆发式的数据增加所要求的实时、快速计算的需求。

  使用HadoopMapReduce进行计算时,每次计算产生的中间结果都须要从磁盘中读取并写入,大大增长了磁盘的I/O开销,而使用Spark进行计算时,须要先将磁盘中的数据读取到内存中,产生的数据再也不写入磁盘,直接在内存中迭代处理,这样就避免了从磁盘中频繁读取数据形成的没必要要开销。

  Spark是一种与Hadoop类似的开源集群计算环境,不一样之处使Spark在某些工做负载方面表现得更加优越,Spark启用了内存分布数据集,除了可以提供交互式查询外还能够优化迭代工做负载。Spark是在Scala语言中实现,将Scala用做其应用程序框架。与Hadoop不一样Spark和Scala可以紧密集成,其中的Scala能够像操做本地集合对象同样轻松地操做分布式数据集。