签到成功

知道了

CNDBA社区CNDBA社区

Hadoop 与 Spark 区别

2019-01-19 18:00 2338 0 转载 Hadoop Spark
作者: dave

1. Hadoop 概述

直接比较Hadoop和Spark有难度,因为它们处理的许多任务都一样,但是在一些方面又并不相互重叠。
比如说,Spark没有文件管理功能,因而必须依赖Hadoop分布式文件系统(HDFS)或另外某种解决方案。

Hadoop框架的主要模块包括如下:

http://www.cndba.cn/cndba/dave/article/3251

  1. Hadoop Common
  2. Hadoop分布式文件系统(HDFS)
  3. Hadoop YARN
  4. Hadoop MapReduce

虽然上述四个模块构成了Hadoop的核心,不过还有其他几个模块。这些模块包括:Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume和Sqoop,它们进一步增强和扩展了Hadoop的功能。

所以Spark 与 Hadoop的比较,准确的说是与MapReduce的比较。

2. Spark概述

Spark为UC Berkeley AMP Lab所开源的类Hadoop MapReduce的通用并行计算框架,Spark基于MapReduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce,Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce算法。

Spark在其官网的介绍中,重点突出“快”的特点,若从事大数据或集群等相关工作,需要快速计算,按Spark的说法,则无需再学习其他架构,Spark就能很好满足需求。Spark如何体现“快”呢?Spark的数据全部在内存中,因此数据都在内存中计算,而不会涉及类似于磁盘等低传输速率的硬件,以此保证数据处理快速而有效。但这也意味着你需要很好的硬件配置。

同时,Spark提供很多高级API,如Java、Scala、Python、R、SQL等数据分析、数据挖掘常用的高级编程语言。这也就意味着,若只接触过SQL或者R等编程语言,也能利用Spark挖掘大数据。

Spark更适合于迭代运算较多的机器学习(Machine Learning)和数据模型(Data Model)运算。另一方面,Spark提供针对数据集的操作类型众多,而Hadoop只提供了Map和Reduce两种操作。Spark针对数据集提供的操作有map、filter、flatmap、sample、groupByKey、reduceByKey、union、join、cogroup、mapValues、sort、partionBy等多种类型,统称为Trans-formations,同时提供count、collect、reduce、lookup、save等多种Actions操作。http://www.cndba.cn/cndba/dave/article/3251

但是,由于RDD(Spark中的数据集)的特性,Spark不适用于异步细粒度更新状态的应用,例如Web服务的存储或者增量的Web爬虫和索引。即对于增量修改的应用模型,Spark并不适用。http://www.cndba.cn/cndba/dave/article/3251

http://www.cndba.cn/cndba/dave/article/3251

3. 性能

Spark之所以如此快速,原因在于它在内存中处理一切数据。没错,它还可以使用磁盘来处理未全部装入到内存中的数据。

Spark的内存处理为来自多个来源的数据提供了近乎实时分析的功能:营销活动、机器学习、物联网传感器、日志监控、安全分析和社交媒体网站。另外,MapReduce使用批量处理,其实从来就不是为惊人的速度设计的。它的初衷是不断收集来自网站的信息,不需要这些数据具有实时性或近乎实时性。

4. 易用性

支持Scala(原生语言)、Java、Python和Spark SQL。Spark SQL非常类似于SQL 92,所以几乎不需要经历一番学习,马上可以上手。

Spark还有一种交互模式,那样开发人员和用户都可以获得查询和其他操作的即时反馈。MapReduce没有交互模式,不过有了Hive和Pig等附加模块,采用者使用MapReduce来得容易一点。

5. 成本

“Spark已证明在数据多达PB的情况下也轻松自如。它被用于在数量只有十分之一的机器上,对100TB数据进行排序的速度比Hadoop MapReduce快3倍。”这一成绩让Spark成为2014年Daytona GraySort基准。

6. 兼容性

MapReduce和Spark相互兼容;MapReduce通过JDBC和ODC兼容诸多数据源、文件格式和商业智能工具,Spark具有与MapReduce同样的兼容性。

7. 数据处理

MapReduce是一种批量处理引擎。MapReduce以顺序步骤来操作,先从集群读取数据,然后对数据执行操作,将结果写回到集群,从集群读 取更新后的数据,执行下一个数据操作,将那些结果写回到结果,依次类推。Spark执行类似的操作,不过是在内存中一步执行。它从集群读取数据后,对数据 执行操作,然后写回到集群。

Spark还包括自己的图形计算库GraphX​​。GraphX让用户可以查看与图形和集合同样的数据。用户还可以使用弹性分布式数据集(RDD),改变和联合图形,容错部分作了讨论。

http://www.cndba.cn/cndba/dave/article/3251

8. 容错

至于容错,MapReduce和Spark从两个不同的方向来解决问题。MapReduce使用TaskTracker节点,它为 JobTracker节点提供了心跳(heartbeat)。如果没有心跳,那么JobTracker节点重新调度所有将执行的操作和正在进行的操作,交 给另一个TaskTracker节点。这种方法在提供容错性方面很有效,可是会大大延长某些操作(即便只有一个故障)的完成时间。

Spark使用弹性分布式数据集(RDD),它们是容错集合,里面的数据元素可执行并行操作。RDD可以引用外部存储系统中的数据集,比如共享式文件系统、HDFS、HBase,或者提供Hadoop InputFormat的任何数据源。Spark可以用Hadoop支持的任何存储源创建RDD,包括本地文件系统,或前面所列的其中一种文件系统。

RDD拥有五个主要属性:

  1. 分区列表
  2. 计算每个分片的函数
  3. 依赖其他RDD的项目列表
  4. 面向键值RDD的分区程序(比如说RDD是散列分区),这是可选属性
  5. 计算每个分片的首选位置的列表(比如HDFS文件的数据块位置),这是可选属性

RDD可能具有持久性,以便将数据集缓存在内存中。这样一来,以后的操作大大加快,最多达10倍。Spark的缓存具有容错性,原因在于如果RDD的任何分区丢失,就会使用原始转换,自动重新计算。http://www.cndba.cn/cndba/dave/article/3251

9. 可扩展性

按照定义,MapReduce和Spark都可以使用HDFS来扩展。那么,Hadoop集群能变得多大呢?

据称雅虎有一套42000个节点组成的Hadoop集群,可以说扩展无极限。最大的已知Spark集群是8000个节点,不过随着大数据增多,预计集群规模也会随之变大,以便继续满足吞吐量方面的预期。http://www.cndba.cn/cndba/dave/article/3251

10. 安全

Hadoop支持Kerberos身份验证,这管理起来有麻烦。然而,第三方厂商让企业组织能够充分利用活动目录Kerberos和LDAP用于身份验证。同样那些第三方厂商还为传输中数据和静态数据提供数据加密。

http://www.cndba.cn/cndba/dave/article/3251

Hadoop分布式文件系统支持访问控制列表(ACL)和传统的文件权限模式。Hadoop为任务提交中的用户控制提供了服务级授权(Service Level Authorization),这确保客户拥有正确的权限。

Spark的安全性弱一点,目前只支持通过共享密钥(密码验证)的身份验证。Spark在安全方面带来的好处是,如果你在HDFS上运行Spark,它可以使用HDFS ACL和文件级权限。此外,Spark可以在YARN上运行,因而能够使用Kerberos身份验证。http://www.cndba.cn/cndba/dave/article/3251

11. 总结

Spark与MapReduce是一种相互共生的关系。Hadoop提供了Spark所没有的功能特性,比如分布式文件系统,而Spark 为需要它的那些数据集提供了实时内存处理。完美的大数据场景正是设计人员当初预想的那样:让Hadoop和Spark在同一个团队里面协同运行。

http://www.cndba.cn/cndba/dave/article/3251

但是Spark相比Hadoop更加通用。Spark有可能会取代Hadoop(指的是取代MapReduce,而非Hadoop,Hadoop包含HDFS、YARN、MapReduce等)。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2262
    原创
  • 3
    翻译
  • 578
    转载
  • 192
    评论
  • 访问:8066659次
  • 积分:4349
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ