Spark和Hadoop之间的区别
1
、
Hadoop
Hadoop
是一个由
Apache
基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop
实现了一个分布式文件系统(Hadoop Distributed File System
,
HDFS
)。
HDFS
有高容错性的特点,并且设计用来部署在低廉的(low-cost
)硬件上;而且它提供高吞吐量(
high throughput
)来访问应用程序的数据,适合那些有着
超大数据集(
large data set
)的应用程序。
HDFS
放宽了(
relax
)
POSIX
的要求,可以以流的形式访问(streaming access
)文件系统中的数据。
Hadoop
的框架最核心的设计就是:
HDFS
和
MapReduce
。
HDFS
为海量的数据提供了存储,而
MapReduce为海量的数据提供了计算。
2
、
Spark
Apache Spark
是专为大规模数据处理而设计的快速通用的计算引擎。
Spark
是
UC Berkeley AMP lab (
加州大学伯克利分校的AMP
实验室
)
所开源的类
Hadoop MapReduce
的通用并行框架,
Spark
拥有
Hadoop MapReduce所具有的优点;但不同于
MapReduce
的是
——Job
中间输出结果可以保存在内存中,从而不再需要读写HDFS
,因此
Spark
能更好地适用于数据挖掘与机器学习等需要迭代的
MapReduce
的算法。
Spark
在某些工作负载方面表现得更加优越,换句话说,
Spark
启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark
是在
Scala
语言中实现的,它将
Scala
用作其应用程序框架。与
Hadoop
不同,
Spark
和
Scala
能够紧密集成,其中的 Scala
可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建
Spark
是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop
的补充,可以在
Hadoop
文件系统中并行运行。通过名为 Mesos
的第三方集群框架可以支持此行为。
3
、数据的存储和处理区别
Hadoop
实质上更多是一个分布式系统基础架构
:
它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,同时还会索引和跟踪这些数据,大幅度提升大数据处理和分析效率。Hadoop可以独立完成数据的存储和处理工作,因为其除了提供
HDFS
分布式数据存储功能
,还
提供
MapReduce
数据处理功能
。
Spark
是一个专门用来对那些分布式存储的大数据进行处理的工具,
没有提供文件管理系统,自身不会
进行数据的存储
。它必须和其他的分布式文件系统进行集成才能运作。可以选择
Hadoop
的
HDFS,
也可以选择其他平台。
4
、处理速度区别
Hadoop
是磁盘级计算,计算时需要在磁盘中读取数据;其采用的是
MapReduce
的逻辑,把数据进行切片计算用这种方式来处理大量的离线数据。
Spark
,它会在内存中以接近
“
实时
”
的时间完成所有的数据分析。
Spark
的批处理速度比
MapReduce
快近10倍,内存中的数据分析速度则快近
100
倍。比如实时的市场活动,在线产品推荐等需要对流数据进行分析场景就要使用Spark
。
5
、灾难恢复
Hadoop
将每次处理后的数据写入磁盘中,对应对系统错误具有天生优势。
Spark
的数据对象存储在弹性分布式数据集
(RDD:)
中。这些数据对象既可放在内存,也可以放在磁盘,所以RDD
也提供完整的灾难恢复功能。