Apache Spark vs Hadoop Mapreduce——你需要知道的

已发表: 2019-09-05

大数据就像现代世界中无所不在的老大哥。 各行各业不断增加的大数据用例进一步催生了众多大数据技术,其中最流行的是Hadoop MapReduce和Apache Spark。 虽然 MapReduce 和 Spark 都是 Apache 软件基金会开发的开源旗舰项目,但它们也是彼此最有力的竞争者。

在这篇文章中,首先,我们将讨论 MapReduce 和 Spark 框架,然后我们将继续讨论它们之间的主要区别。

什么是 Spark 和 MapReduce?

Spark是一个专为实现快速计算而设计的大数据框架。 它用作通用数据处理引擎,可以处理不同的工作负载,包括批处理、交互、迭代和流式处理。 Spark 的一个关键特性是速度——它执行内存计算以提高数据处理的速度。 因此,它在计算机节点集群上运行良好,并允许更快地处理大型数据集。

弹性分布式数据集 (RDD) 是 Spark 的主要数据结构。 RDD 是一个不可变的分布式对象集合,其中每个节点被分成更小的块,可以在集群的不同节点上计算。 这有利于集群内的独立数据处理。

MapReduce是一个开源框架,设计用于在并行和分布式环境中处理大量数据。 它只能以批处理模式处理数据。 Hadoop MapReduce 有两个主要组件——HDFS 和 YARN。

MapReduce 编程由两部分组成——Mapper 和 Reducer。 当 Mapper 处理数据排序任务时,Reducer 组合排序后的数据并将其转换为更小的片段。

至于这两个框架之间的根本区别,是它们与生俱来的数据处理方法。 MapReduce 通过在磁盘上读写来处理数据,而 Spark 可以在内存中进行。 因此,Spark 比 MapReduce 具有优势——处理速度快。

但这是否意味着 Spark 比 MapReduce 更好? 不幸的是,辩论并不是那么简单。 为了更清楚地说明这个问题,我们将逐点分解它们之间的差异。

数据处理

Spark 正如我们前面提到的,Spark 更像是一个混合和通用的处理框架。 通过内存计算和处理优化,实时加速数据处理。 它非常适合流式工作负载、运行交互式查询和 ML 算法。 但是,RDD 只允许 Spark 通过只在磁盘上写入重要数据来临时将数据存储在磁盘上。 因此,它将进程加载到内存中并将其保留在缓存中。 这使得 Spark 非常占用内存。

MapReduce :MapReduce 是 Hadoop 的原生批处理引擎。 它的组件(HDFS 和 YARN)能够更顺畅地处理批处理数据。 但是,由于数据处理发生在几个后续步骤中,因此该过程非常缓慢。 MapReduce 的一个优点是它允许永久存储——它将数据存储在磁盘上。 这使其适用于处理海量数据集。 一旦任务完成,MapReduce 就会终止其进程,因此它可以与其他服务同时运行。

便于使用

Spark 在易用性方面,Spark 占据了桂冠。 它为 Scala(本机语言)、Java、Python 和 Spark SQL 提供了许多用户友好的 API。 由于 Spark 允许在同一个集群中进行流式处理、批处理和机器学习,因此您可以根据需要轻松简化数据处理基础架构。 此外,Spark 包括一个交互式 REPL(读取-评估-打印循环)模式,用于运行命令,为用户提供及时反馈。

MapReduce :由于 Hadoop MapReduce 是用 Java 编写的,因此学习语法需要时间。 因此,最初,许多人可能会发现编程非常具有挑战性。 尽管 MapReduce 缺少交互模式,但 Pig 和 Hive 等工具使使用它更容易一些。 还有其他工具(例如,Xplenty)也可以运行 MapReduce 任务而无需任何编程。

容错

Spark :Spark 采用 RDD 和不同的数据存储模型通过减少网络 I/O 来实现容错。 如果 RDD 的分区丢失,RDD 将根据存储在内存中的信息重建该分区。 因此,如果一个进程在中途崩溃,Spark 将不得不从头开始处理。

MapReduce :与 Spark 不同,MapReduce 通过 Node Manager 和 ResourceManager 使用复制概念进行容错。 在这里,如果一个进程中途执行失败,MapReduce 将从它停止的地方继续,从而节省时间。

安全

Spark :由于Spark还处于起步阶段,其安全系数还不是很发达。 它支持通过共享密钥(密码验证)表进行验证。 至于 Web UI,可以通过 javax servlet 过滤器进行保护。 Spark 的 YARN 和 HDFS 功能允许 Kerberos 身份验证、HDFS 文件级权限以及节点之间的加密。

MapReduce :MapReduce 更加发达,因此它具有比 Spark 更好的安全功能。 它享有 Hadoop 的所有安全优势,并且可以与 Hadoop 安全项目集成,包括 Knox Gateway 和 Sentry。 通过有效的第三方供应商,组织甚至可以使用 Active Directory Kerberos 和 LDAP 进行身份验证。

成本

尽管 Spark 和 MapReduce 都是开源项目,但两者都必须承担一定的成本。 例如,Spark 需要大量 RAM 才能在内存中运行任务,而且 RAM 比硬盘更昂贵。 相反,Hadoop 是面向磁盘的——虽然您不需要购买昂贵的 RAM,但您将不得不在系统上投入更多资金,以便在多个系统之间分配磁盘 I/O。

因此,在成本方面,很大程度上取决于组织的要求。 如果一个组织需要处理大量的大数据,Hadoop 将是经济高效的选择,因为购买硬盘空间比购买大容量内存空间便宜得多。 此外,MapReduce 附带大量 Hadoop 即服务产品和基于 Hadoop 的服务,允许您跳过硬件和人员配置要求。 与此相比,Spark-as-a-service 选择屈指可数。

兼容性

就兼容性而言,Spark 和 MapReduce 彼此兼容。 Spark 可以与 Hadoop 支持的所有数据源和文件格式无缝集成。 此外,两者都是可扩展的。 因此,Spark 对数据类型和数据源的兼容性与 Hadoop MapReduce 几乎相同。

如您所见,Spark 和 MapReduce 都具有使它们彼此区分开来的独特功能。 例如,Spark 提供了 MapReduce 所缺乏的实时分析,而 MapReduce 提供了 Spark 所缺乏的文件系统。 这两个框架都以各自独特的方式表现出色,并且都有其独特的优势和劣势。 最终,Spark 与 MapReduce 之间的争论都归结为您的特定业务需求和您希望完成的任务类型。

如果您有兴趣了解有关大数据的更多信息,请查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的动手操作研讨会,超过 400 小时的严格学习和顶级公司的就业帮助。

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

引领数据驱动的技术革命

IIIT Bangalore 大数据高级证书课程