Hadoop MapReduce与Apache Spark

Hadoop和Spark都是大数据框架,它们提供了用于执行常见大数据相关任务的最流行的工具。我们来谈谈他们的分歧。

大数据这个词已经在商业世界中引起了很多炒作。Hadoop和Spark都是大数据框架; 他们提供了一些用于执行常见大数据相关任务的最流行的工具。在本文中,我们将介绍Spark和Hadoop MapReduce之间的区别。

介绍

Spark: 这是一个开源的大数据框架。它提供了一个更快和更通用的数据处理引擎。Spark基本上是为快速计算而设计的。它还涵盖了广泛的工作负载,例如批处理,交互式,迭代和流式处理。

Hadoop MapReduce: 它也是一个用于编写应用程序的开源框架。它还处理存储在HDFS中的结构化和非结构化数据。Hadoop MapReduce的设计方式是处理大量商品硬件上的大量数据。MapReduce可以批处理模式处理数据。

数据处理

Spark: Apache Spark非常适合批处理和流处理,这意味着它是一个混合处理框架。Spark通过内存计算和处理优化加快了批处理速度。这对于流式工作负载,交互式查询和机器学习来说是一个很好的选择。Spark还可以使用Hadoop及其模块。其实时数据处理能力使Spark成为大数据分析的首选。

其弹性分布式数据集(RDD)允许Spark透明地将数据存储在内存中,并仅将重要或需要的数据发送到磁盘。结果,在磁盘读写上花费了很多时间。

Hadoop:Apache Hadoop提供批处理。Hadoop开发了大量的新算法和组件堆栈,以提高对大规模批处理的访问。

MapReduce是Hadoop的本地批处理引擎。Hadoop现代版本中的几个组件或层(如YARN,HDFS等)允许轻松处理批处理数据。由于MapReduce是关于永久存储的,它将数据存储在磁盘上,这意味着它可以处理大型数据集。MapReduce具有可扩展性,并且已经证明了它可以处理数以万计的节点。但是,由于MapReduce以各种连续的步骤运行,Hadoop的数据处理速度很慢。

实时分析

Spark: 它可以处理实时数据,即来自实时事件流的数据,以每秒百万个事件的速度,如Twitter和Facebook数据。Spark的优势在于它能够有效地处理直播流。

Hadoop MapReduce: MapReduce在实时数据处理方面失败了,因为它被设计成对大量的数据执行批处理。

使用方便

Spark:Spark比Hadoop更易于使用,因为它提供了用于Scala(其母语),Java,Python和Spark SQL的用户友好的API。由于Spark提供了在同一集群中执行流,批处理和机器学习的方法,因此用户可以轻松简化数据处理的基础架构。交互式REPL (Read-Eval-Print Loop)允许Spark用户获得命令的即时反馈。

Hadoop:另一方面,Hadoop是用Java编写的,很难编程,并且需要抽象。尽管Hadoop MapReduce没有交互模式,但Pig和Hive这样的工具使得采用者更容易使用它。

图形处理

Spark:Spark带有一个名为GraphX的图形计算库,使事情变得简单。内存计算与内置图形支持相结合,使算法的性能远远优于传统的MapReduce程序。Netty和Akka使Spark能够将消息分发给执行者。

Hadoop:大多数处理算法,比如PageRank,对相同的数据执行多次迭代。MapReduce从磁盘读取数据,并在特定的迭代之后将结果发送到HDFS,然后再次从HDFS中读取数据以用于下一次迭代。这样的过程会增加延迟,并使图形处理变得缓慢。

为了评估特定节点的分数,消息传递需要包含数十个相邻节点。这些计算需要来自邻居的消息,但MapReduce没有任何机制。尽管Pregel和GraphLab等快速且可扩展的工具可用于高效的图形处理算法,但它们不适用于复杂的多级算法。

容错

Spark: Spark通过最小化网络I / O来使用RDD和各种数据存储模型来实现容错。在发生RDD分区丢失的情况下,RDD通过已有的信息重建该分区。所以,Spark并不使用复制概念来进行容错。

Hadoop: Hadoop通过复制实现容错。MapReduce使用TaskTracker和JobTracker进行容错。但是,TaskTracker和JobTracker已分别由Node Manager和ResourceManager / ApplicationMaster在第二版MapReduce中替换。

安全

Spark:Spark的安全性目前还处于起步阶段,仅通过共享密码(密码认证)提供认证支持。但是,组织可以在HDFS上运行Spark,以利用HDFS ACL和文件级权限。

Hadoop MapReduce:Hadoop MapReduce比Spark有更好的安全特性。Hadoop支持Kerberos身份验证,这是一个很好的安全功能,但难以管理。Hadoop MapReduce还可以与Hadoop安全项目(如Knox Gateway和Sentry)集成。第三方供应商还允许组织使用Active Directory Kerberos和LDAP进行身份验证。Hadoop的分布式文件系统与访问控制列表(ACL)和传统的文件权限模型兼容。

成本

Hadoop和Spark都是开源项目,因此免费。但是,Spark使用大量RAM来运行内存中的所有内容,RAM比硬盘更贵。Hadoop是磁盘绑定的,因此可以节省购买昂贵的RAM的成本,但是需要更多的系统在多个系统上分配磁盘I / O。

就成本而言,组织需要考虑他们的要求。如果要处理大量的大数据,Hadoop将会更便宜,因为硬盘空间的速度远远低于内存空间。

兼容性

Hadoop和Spark都是相互兼容的。Spark可以集成Hadoop支持的所有数据源和文件格式。所以,说Spark与数据类型和数据源的兼容性与Hadoop MapReduce相似是没有错的。

Hadoop和Spark都是可扩展的。有人可能会认为Spark是比Hadoop更好的选择。然而,对于那些需要商品系统控制下的大数据集的企业来说,MapReduce是一个不错的选择。这两个框架在自己的意义上都很好。Hadoop有自己的Spark缺少的文件系统,而Spark提供了一种Hadoop不具备的实时分析的方法。

因此,Apache Spark与Hadoop MapReduce之间的差异表明Apache Spark比MapReduce 更高级的集群计算引擎。Spark可以处理任何类型的需求(例如批处理,交互式,迭代,流式处理,图表),而MapReduce则可以处理批处理。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171209A06CL500?refer=cp_1026

扫码关注云+社区