Hadoop 和 Spark 之间有何区别?


Hadoop 和 Spark 有什么区别?

Apache Hadoop 和 Apache Spark 是两个开源框架,可以用来管理和处理大量数据以供分析。组织必须大规模、快速地处理数据才能获得对商业智能的实时见解。Apache Hadoop 允许您将多台计算机集群化,以便更快地并行分析海量数据集。Apache Spark 使用内存中缓存和优化的查询执行方式,可针对任何规模的数据进行快速分析查询。Spark 是一种比 Hadoop 更先进的技术,因为前者在数据处理中使用人工智能和机器学习 (AI/ML)。但是,许多公司同时使用 Spark 和 Hadoop 来实现其数据分析目标。

了解 Apache Hadoop »

了解 Apache Spark »

Hadoop 和 Spark 有什么相似之处?

Hadoop 和 Spark 都是分布式系统,可让您大规模处理数据。它们可以在数据处理因任何原因中断时从故障中恢复。

分布式大数据处理

大数据以各种格式频繁、持续和大规模地收集。

为了存储、管理和处理大数据,Apache Hadoop 将数据集分成较小的子集或分区。然后,将分区存储在分布式服务器网络上。同样,Apache Spark 也可以处理和分析分布式节点上的大数据,以提供业务见解。

根据用例,您可能需要将 Hadoop 和 Spark 与不同的软件集成以获得最佳功能。 

容错能力

即使一个或多个数据处理节点出现故障,Apache Hadoop 仍会继续运行。它会为同一个数据块制作多个副本,并将这些副本存储在多个节点上。当一个节点出现故障时,Hadoop 会从另一个节点检索信息并为数据处理做好准备。

同时,Apache Spark 依赖于一种名为弹性分布式数据集 (RDD) 的特殊数据处理技术。使用 RDD,Apache Spark 会记住它如何从存储中检索特定信息,并在底层存储出现故障时重建数据。 

关键组件:Hadoop 与Spark 框架

Hadoop 和 Spark 都由多个软件模块组成,这些模块交互和协作以使系统正常运行。

Hadoop 组件

Apache Hadoop 有四个主要组件:

  • Hadoop Distributed File System (HDFS) 是一种特殊的文件系统,用于在多台计算机上存储大型数据集。这些计算机被称为 Hadoop 集群。 
  • Another Resource Negotiator (YARN) 则会安排任务并将资源分配给在 Hadoop 上运行的应用程序。
  • Hadoop MapReduce 允许程序将大型数据处理任务分解为较小的任务,并在多台服务器上并行运行。
  • Hadoop Common 或 Hadoop Core 为其他 Hadoop 组件提供必要的软件库。 

Spark 组件

Apache Spark 使用以下组件运行:

  • Spark Core 可协调 Apache Spark 的基本功能。这些功能包括内存管理、数据存储、任务调度和数据处理。 
  • Spark SQL 允许您处理 Spark 的分布式存储中的数据。 
  • Spark 流式传输和结构化流式传输允许 Spark 通过将数据分成微小的连续数据块来实时高效地流式传输数据。
  • 机器学习库 (MLlib) 提供了多种可以应用于大数据的机器学习算法。
  • GraphX 允许您使用图表可视化和分析数据。 

主要区别:Hadoop 与Spark

Hadoop 和 Spark 都允许您以不同的方式处理大数据。

Apache Hadoop 的创建是为了将数据处理委托给多台服务器,而不是在单台计算机上运行工作负载。

同时,Apache Spark 是一个更新的数据处理系统,它克服了 Hadoop 的关键局限性。尽管 Hadoop 能够处理大型数据集,但它只能分批处理,延迟时间很长。

架构

Hadoop 有一个名为 Hadoop Distributed File System (HDFS) 的原生文件系统。HDFS 允许 Hadoop 将大型数据块分成多个较小的统一数据块。然后,它将小数据块存储在服务器组中。

同时,Apache Spark 没有自己的原生文件系统。许多组织在 Hadoop 的文件系统上运行 Spark 来存储、管理和检索数据。

或者,您也可以使用 Amazon RedshiftAmazon Simple Storage Service (Amazon S3) 作为 Spark 的数据存储选项。 

性能

Hadoop 可以批量处理大型数据集,但速度可能较慢。为了处理数据,Hadoop 从外部存储读取信息,然后分析数据并将其输入到软件算法。

对于每个数据处理步骤,Hadoop 都会将数据写回外部存储,这会增加延迟。因此,它不适合实时处理任务,但非常适合具有可容忍时间延迟的工作负载。例如,Hadoop 适合用于分析月度销售记录,但可能不是从社交媒体馈送信息中确定实时品牌情绪的最佳选择。 

与之相对的是,Apache Spark 旨在实时处理大量数据。

Spark 会在处理数据之前将其复制到 RAM,而不是从外部存储访问数据。它仅在完成特定任务后才将数据写回外部存储。从 RAM 中写入和读取比使用外部驱动器进行写入和读取要快得多。此外,Spark 可将检索到的数据重复用于许多操作。

因此,无论是简单还是复杂的数据处理,Spark 的性能都不同程度地优于 Hadoop。

机器学习

Apache Spark 提供了一个名为 MLlib 的机器学习库。数据科学家使用 MLlib 来执行回归分析、分类和其他机器学习任务。您还可以使用非结构化和结构化数据来训练机器学习模型,并将其部署到业务应用程序中。

相比之下,Apache Hadoop 没有内置的机器学习库。相反,您可以将 Spark 与 Apache Mahout 等其他软件集成,以构建机器学习系统。软件的选择取决于工作负载的特定要求。您可以考虑诸如数据的大小和复杂性、要使用的机器学习模型类型以及应用程序的性能和可扩展性要求之类的问题。

安全性

Apache Hadoop 设计为具有强大的安全功能,可以保护数据。例如,Hadoop 使用加密和访问控制来防止未经授权的各方访问和操纵数据存储。

但是,Apache Spark 本身的安全保护措施有限。根据 Apache Software Foundation 的说法,您必须启用 Spark 的安全功能,并确保它在安全的环境中运行。

Spark 支持多种部署类型,其中一些部署类型更加安全。例如,由于 Hadoop 采用加密分布式存储,因此在 Hadoop 上部署 Spark 可以提高整体安全性。 

可扩展性

使用 Hadoop 进行扩展比使用 Spark 更轻松。如果您需要更高的处理能力,可以以合理的成本在 Hadoop 上额外添加节点或计算机。

相比之下,扩展 Spark 部署通常需要投资更多 RAM。本地基础设施的成本可能会迅速增加。 

成本

Apache Hadoop 的设置和运行成本更低,因为它使用硬盘来存储和处理数据。您可以在标准或低端计算机上设置 Hadoop。

同时,使用 Spark 处理大数据的成本更高,因为它使用 RAM 进行内存处理。RAM 通常比存储大小相等的硬盘更昂贵。 

何时使用 Hadoop 与Spark

引入 Apache Spark 是为了克服 Hadoop 外部存储访问架构的局限性。Apache Spark 用更快的机器学习处理功能取代了 Hadoop 的原始数据分析库 MapReduce。

但是,Spark 与 Hadoop 并不是相互排斥的。尽管 Apache Spark 可以作为独立框架运行,但许多组织同时使用 Hadoop 和 Spark 进行大数据分析。 

根据特定的业务需求,您可以使用 Hadoop、Spark 或同时使用两者进行数据处理。以下是您在做出决定时可能会考虑的一些因素。

经济高效的扩展

Apache Hadoop 是构建和扩展具有成本效益的数据处理管线的更好选择。向现有 Hadoop 集群添加更多计算机可以提高 Hadoop 的处理能力。这比额外购买 RAM 来扩展 Apache Spark 框架更实惠。

批处理

批处理是指在不受规定的时间表约束的情况下处理大量数据。当首选批处理时,组织会使用 Apache Hadoop,因为它支持跨多个节点的并行处理。例如,您可以使用 Hadoop 从成千上万的记录中生成非时效性库存报告。

实时分析

如果您正在处理快速移动的数据,请使用 Apache Spark。数据流是软件持续传输的信息或数据。Apache Spark 可以处理数据流并实时提供有见地的分析。例如,金融机构使用 Apache Spark 来检测正在进行的交易中是否存在欺诈行为并提醒银行职员。

了解流式处理数据 »

机器学习能力

机器学习涉及使用大量数据集训练软件函数或模型。Apache Spark 更适合此类任务,因为它内置了机器学习库。这意味着 Spark 无需额外集成即可实时训练机器学习模型。

安全性、速度和交互式分析

您可以使用 Hadoop 和 Spark 以享受这两个框架带来的好处。Hadoop 提供安全且经济实惠的分布式处理。如果您在 Hadoop 上运行 Spark,则可以将具有时效性的工作负载(例如图形分析任务)转移到 Spark 的内存数据处理器。您可以获得高性能且安全的外部存储处理以用于分析。

差异摘要:Hadoop 与Spark

 

Hadoop

Spark

架构

Hadoop 在外部存储上存储和处理数据。

Spark 在内部存储器上存储和处理数据。

性能

Hadoop 批量处理数据。

Spark 实时处理数据。

成本

Hadoop 价格实惠。

Spark 相对来说更昂贵。 

可扩展性

Hadoop 可以通过添加更多节点轻松扩展。

相比之下,Spark 更具挑战性。

机器学习

Hadoop 可与外部库集成来提供机器学习功能。 

Spark 有内置的机器学习库。

安全性

Hadoop 具有强大的安全功能、存储加密和访问控制。

Spark 具有基本的安全性。IT 人员依赖于您为 Spark 部署设置安全的操作环境。 

AWS 如何支持您的大数据工作负载?

Amazon EMR 是一个在线平台,可帮助您以经济实惠的方式构建、部署和扩展大数据解决方案。它支持各种开源大数据框架,包括 Apache Hadoop 和 Spark。组织使用 Amazon EMR 进行千兆字节 (PB) 规模的数据处理、交互式分析和机器学习应用程序。

以下是您可以通过使用 Amazon EMR 获益的其他方式:

  • Amazon EMR 会自动扩展您的大数据应用程序所需的计算资源
  • 在 Amazon EMR 上运行大数据应用程序的成本不到本地基础设施的一半
  • Amazon EMR 允许您将大型数据集存储在 Hadoop Distributed File System (HDFS) 之外的数据存储上。例如,可以存储在 Amazon Simple Storage Service (Amazon S3)Amazon DynamoDB 上。

立即创建账户,开始在 Amazon Web Services (AWS) 上使用 Hadoop 和 Spark。