Hadoop MapReduce与Apache Spark谁赢得了胜利?

文章来源:加米谷大数据

Hadoop和Spark是大数据生态系统中流行的apache项目。Apache Spark是对hadoop大数据生态系统的原始Hadoop MapReduce组件的改进。Apache Spark令人兴奋,因为它在内存数据集的交互式数据查询以及多遍迭代机器学习算法中提供了真正的优势。但是,关于Spark是否可以通过取代它并成为顶级大数据分析工具而对Apache Hadoop构成挑战,这引起了激烈的争论。详细说明的是关于Spark Hadoop比较的详细讨论,可帮助用户理解为何spark比Hadoop更快。

Apache Spark与Hadoop

大数据世界中有多种方法使Apache Hadoop成为迭代数据处理,交互式查询和即席查询的理想选择。每个Hadoop用户都知道Hadoop MapReduce框架主要用于批处理这一事实,因此不适合将Hadoop MapReduce用于机器学习过程,临时数据探索和其他类似过程。

大多数 大数据供应商都在努力寻找可解决此难题的理想解决方案,这为要求非常高且受欢迎的名为Apache Spark的替代方案的出现铺平了道路。与MapReduce相比,Spark使得开发完全是一项令人愉快的活动,并具有更好的性能执行引擎,同时使用相同的存储引擎Hadoop HDFS来执行海量数据集。

Spark Hadoop比较

在我们进一步讨论什么使Hadoop MapReduce具有Apache Spark的能力之前,让我们简要地了解Apache Spark的实际含义,然后继续理解两者之间的区别。

Hadoop的用户友好界面简介-Apache Spark

Spark是由加州大学伯克利分校AMP实验室的50家公司的近250位开发人员共同开发的一种快速集群计算系统,它可以使数据分析变得更快,更容易编写和运行。

Apache Spark是可免费下载的开放源代码,因此使它成为分布式编程框架(即大数据)的用户友好界面。Spark遵循通用执行模型,该模型有助于内存计算和任意运算符图的优化,因此与基于磁盘的引擎(如MapReduce)相比,查询数据变得更快。

Apache Spark拥有一个设计良好的应用程序编程接口,该接口由各种并行集合组成,这些集合具有诸如groupByKey,Map和Reduce之类的方法,因此您仿佛在本地编程。使用Apache Spark,您可以使用功能性编程语言Scala编写面向集合的算法。

为什么开发Apache Spark?

谷歌设想并成功实施了Hadoop MapReduce,而Apache Hadoop是一个非常著名且广泛使用的执行引擎。您会发现几个应用程序,它们与如何将其工作分解为一系列MapReduce作业的条件相似。所有这些实时应用程序都必须继续运行,而无需进行任何更改。

但是,用户一直抱怨Hadoop MapReduce存在高延迟问题,因为在处理和分析数据时,所有这些实时应用程序的批处理模式响应都非常痛苦。

现在,这为Hadoop Spark铺平了道路,后者是继续系统,比Hadoop MapReduce更强大,更灵活。尽管事实可能并非所有将来的分配或现有应用程序都完全放弃Hadoop MapReduce,但是大多数未来应用程序仍有一定余地可以利用通用执行引擎(如Hadoop Spark)附带还有更多创新功能,可以完成比MapReduce Hadoop更大的成就。

Apache Spark与Hadoop-为什么Spark比hadoop快?

Apache Spark是一个开源独立项目,旨在与HDFS共同发挥作用。到目前为止,Apache Spark拥有庞大的声音贡献者和用户社区,这是因为使用Scala使用Spark编程更容易,并且比磁盘和内存中的Hadoop MapReduce框架要快得多。

因此,Hadoop Spark只是未来大数据应用程序的合适选择,这些 应用程序可能需要更低的延迟查询,迭代计算以及对相似数据的实时处理。

相对于Hadoop MapReduce框架,Hadoop Spark在其可以处理的大量计算工作负载以及执行批处理作业的速度方面具有许多优势。

Hadoop和Spark之间的区别

i)Hadoop与Spark性能

据说仅通过减少对磁盘的读写次数,Hadoop Spark即可执行比Hadoop MapReduce框架快约10至100倍的批处理作业。

在使用MapReduce的情况下,将执行以下Map and Reduce任务,随后将出现同步障碍,并且需要将数据保存到磁盘。开发MapReduce框架的功能是为了在出现故障的情况下可以恢复作业,但是这样做的缺点是,它没有最大程度地利用Hadoop群集的内存。

不过,借助Hadoop Spark,RDD(弹性分布式数据集)的概念使您可以将数据保存在内存中,并且仅在需要时才将其保存到磁盘上,并且它不具有任何类型的同步障碍,可能会减慢数据传输速度。处理。因此,使用内存时,Spark的通用执行引擎比Hadoop MapReduce快得多。

ii) Hadoop MapReduce与Spark-轻松管理

与Hadoop Spark一样,组织现在可以轻松地简化其用于数据处理的基础架构,因为现在可以在同一群集中执行流式处理,批处理和机器学习。

大多数实时应用程序都使用Hadoop MapReduce生成报告,以帮助找到历史查询的答案,然后完全延迟另一个将处理流处理的系统,以便实时获取关键指标。因此,组织应该管理和维护单独的系统,然后为两个计算模型开发应用程序。

但是,使用Hadoop Spark可以消除所有这些复杂性,因为可以在同一系统上同时实现流处理和批处理,从而简化了应用程序的开发,部署和维护。使用Spark可以控制各种工作负载,因此,如果同一流程中的各种工作负载之间存在交互,则更容易管理和保护此类工作负载,这是MapReduce的局限性。

iii)Spark vs Mapreduce–处理流的实时方法

在使用Hadoop MapReduce的情况下,您只需要处理一批存储的数据,但是使用Hadoop Spark,也可以通过Spark Streaming实时修改数据。

使用Spark Streaming,可以通过各种软件功能传递数据,例如在收集数据时进行数据分析。

开发人员现在也可以使用Apache Spark进行图形处理,该处理可在各种实体(例如人和对象)之间映射数据中的关系。组织还可以将Apache Spark与预定义的机器学习代码库结合使用,以便可以对存储在各种Hadoop集群中的数据执行机器学习。

iv)Spark与MapReduce-缓存

与完全面向磁盘的MapReduce不同,Spark通过在分布式工作者的内存中缓存部分结果来确保较低的延迟计算。与编写复杂的Hadoop MapReduce管道相比,Hadoop Spark逐渐被证明可以极大地提高生产力。

v)Spark vs MapReduce-易于使用

编写Spark总是比编写Hadoop MapReduce代码紧凑。这是一个Spark MapReduce示例-下图显示了Spark和Hadoop MapReduce中的字数统计程序代码。如果查看这些图像,显然可以看出Hadoop MapReduce代码更加冗长冗长。

Spark MapReduce示例-Spark中的Wordcount程序

Spark MapReduce示例-Hadoop MapReduce中的Wordcount程序

Spark MapReduce比较-底线

Hadoop MapReduce用于不适合内存的数据,而Apache Spark对于适合内存的数据具有更好的性能,特别是在专用集群上。

Hadoop MapReduce可以是一种经济的选择,因为Hadoop即服务(HaaS)和更多人员的可用性。根据基准测试,Apache Spark更具成本效益,但是在使用Spark的情况下,人员配置会很昂贵。

Apache Spark和Hadoop MapReduce都具有容错能力,但是相对而言,Hadoop MapReduce比Spark具有更高的容错能力。

就数据类型和数据源而言,Spark和Hadoop MapReduce都具有相似的兼容性。

在Apache Spark中进行编程比较容易,因为它具有交互模式,而Hadoop MapReduce需要具有核心的Java编程技能,但是有多种实用程序使在Hadoop MapReduce中进行编程更加容易。

Apache Spark是否会消除Hadoop MapReduce?

Hadoop MapReduce被大多数用户谴责为Hadoop Clustering中的日志阻塞,原因是MapReduce以批处理模式执行所有作业,这意味着无法实时分析数据。随着Hadoop Spark的问世(事实证明它是Hadoop MapReduce的替代品) ,阻碍数据科学家的最大问题是Hadoop vs. Spark-谁赢得了胜利?

Apache Spark以微批的方式执行作业,这些作业非常短,例如大约不到5秒。与面向实时流的Hadoop框架相比,Apache Spark过去一直在提供更高的稳定性方面取得了成功。

尽管如此,每个硬币都有两个面,是的,Hadoop Spark也存在一些积压,例如如果中间数据大于节点的内存大小,则无法处理,节点故障时的问题,最重要的是成本因素。

Hadoop Spark利用日志记录(也称为“重新计算”)来提供弹性,以防万一发生节点故障,因此我们可以得出结论,节点故障情况下的恢复行为与以下情况相似: Hadoop MapReduce除外,事实上恢复过程会更快。

如果特定节点的RAM不足以存储数据分区,Spark还具有“溢出磁盘”功能,从而为基于磁盘的数据处理提供了适度的降级功能。

Hadoop MapReduce相对于Apache Spark的一大优势 是,如果数据大小大于内存,则在这种情况下,Apache Spark将无法利用其缓存,并且很有可能比它慢得多。 MapReduce的批处理。

困惑的Hadoop与Spark –选择哪一个?

如果让您对Hadoop MapReduce或Apache Spark 感到困惑的问题, 或者说是选择基于磁盘的计算或基于RAM的计算,那么这个问题的答案很简单。这全都取决于并且这个决定所依赖的变量会随着时间而动态变化。

但是,当前的趋势支持诸如Apache Spark之类的内存技术,因为行业趋势似乎正在为其提供积极的反馈。因此,总而言之,我们可以说,选择Hadoop MapReduce与Apache Spark取决于基于用户的情况,我们无法做出自主选择

你可能感兴趣的:(Hadoop MapReduce与Apache Spark谁赢得了胜利?)