设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 751|回复: 0
收起左侧

Hadoop与Spark是友非敌

[复制链接]
发表于 2016-3-21 09:04:22 | 显示全部楼层 |阅读模式
  Hadoop与Spark孰优孰劣这个问题,最准确的观点就是,设计人员旨在让Hadoop和Spark在同一个团队里面协同运行。
直接比较Hadoop和Spark有难度,因为它们处理的许多任务都一样,但是在一些方面又并不相互重叠。

1.jpg

  比如说,Spark没有文件管理功能,因而必须依赖Hadoop分布式文件系统(HDFS)或另外某种解决方案。将Hadoop MapReduce与Spark作一番比较来得更明智,因为它们作为数据处理引擎更具有可比性。

  过去几年,随着数据科学趋于成熟,也日益需要用一种不同的方法来处理大数据。Hadoop在一些业务应用领域的表现比后起之秀Spark更胜一筹, 不过Spark在大数据领域有其一席之地,这归功于它具有速度快、易于使用的优点。本文剖析了两大平台的一系列常见属性,包括性能、容错、成本、易用性、数据处理、兼容性和安全性。

性能

  网上不缺关于Spark与MapReduce相比有多快的信息。对两者进行比较有个问题,那就是它们处理数据的方式不一样,数据处理部分有介绍。Spark之所以如此快速,原因在于它在内存中处理一切数据。没错,它还可以使用磁盘来处理未全部装入到内存中的数据。

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

易用性

  众所周知,Spark以性能见长,但是它也因易用性而小有名气,原因是它随带易于使用的API,支持Scala(原生语言)、Java、Python和Spark SQL。SparkSQL非常类似于SQL 92,所以几乎不需要经历一番学习,马上可以上手。

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

成本

  MapReduce和Spark都是Apache项目,这意味着它们是开源免费软件产品。虽然软件不需要成本,但是派人用硬件运行任何一种平台带来了成本。这两种产品都设计成可以在商用硬件上运行,比如所谓的低成本白盒服务器系统。

  MapReduce和Spark在同样的硬件上运行,那么这两种解决方案的成本差异体现在哪里?MapReduce使用常规数量的内存,因为数据处理基于磁盘,所以公司得购买速度更快的磁盘和大量磁盘空间来运行MapReduce。MapReduce还需要更多的系统,将磁盘输入/输出分布到多个系统上。

  Spark需要大量内存,但是可以使用常规数量的常规转速磁盘。一些用户抱怨会产生临时文件,需要清理。这些临时文件通常保存7天,以便加快针对同一数据集的任何处理。磁盘空间相对便宜,由于Spark不使用磁盘输入/输入用于处理,已使用的磁盘空间可以用于SAN或NAS。

  然而,由于需要大量内存在内存中处理一切数据,Spark系统的成本更高,这点没错。但是Spark的技术同时减少了所需的系统数量。所以,最后的情形是,系统成本较高,但是数量大大减少。也许到时候,Spark实际上可以降低每个计算单位的成本,尽管内存方面有额外的要求。

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

兼容性

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

数据处理

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

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

容错

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

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

RDD拥有五个主要属性:
  • 分区列表
  • 计算每个分片的函数
  • 依赖其他RDD的项目列表
  • 面向键值RDD的分区程序(比如说RDD是散列分区),这是可选属性
  • 计算每个分片的首选位置的列表(比如HDFS文件的数据块位置),这是可选属性

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

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

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

安全

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

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

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

总结Hadoop vs Spark

  乍一看,对任何大数据应用而言,使用Spark似乎是默认选择。然而,事实并非如此。MapReduce已在大数据市场取得了进展,尤其受到这种公司企业的追捧:需要由商用系统对庞大数据集加以控制。Spark的速度、灵活性和相对易用性对MapReduce的低操作成本来说是绝对补充。

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

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-23 04:51 , Processed in 0.088313 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表