Hadoop vs Spark:头对头比较
已发表: 2022-11-02由 Apache Software Foundation 开发的 Hadoop 和 Spark 是广泛使用的大数据架构开源框架。
我们现在确实处于大数据现象的核心,公司不能再忽视数据对其决策的影响。
提醒一下,被视为大数据的数据满足三个标准:速度、速度和多样性。 但是,您无法使用传统系统和技术处理大数据。
为了克服这个问题,Apache Software Foundation 提出了最常用的解决方案,即 Hadoop 和 Spark。
但是,不熟悉大数据处理的人很难理解这两种技术。 为了消除所有疑虑,在本文中,了解 Hadoop 和 Spark 之间的主要区别以及何时应该选择一种或另一种,或者一起使用它们。
Hadoop
Hadoop 是一个软件实用程序,由多个模块组成,形成一个处理大数据的生态系统。 Hadoop 用于此处理的原理是数据的分布式分布以并行处理它们。
Hadoop的分布式存储系统设置是由几台普通计算机组成,从而形成一个由多个节点组成的集群。 采用该系统后,Hadoop 可以同时、快速、高效地执行多项任务,从而有效地处理大量可用数据。
使用 Hadoop 处理的数据可以采用多种形式。 它们的结构可以类似于 Excel 表或传统 DBMS 中的表。 此数据也可以以半结构化方式呈现,例如 JSON 或 XML 文件。 Hadoop 还支持非结构化数据,例如图像、视频或音频文件。
主要成分

Hadoop的主要组件有:
- HDFS或Hadoop分布式文件系统是Hadoop用于执行分布式数据存储的系统。 它由一个包含集群元数据的主节点和几个存储数据本身的从节点组成;
- MapReduce是用于处理这种分布式数据的算法模型。 这种设计模式可以使用多种编程语言来实现,例如 Java、R、Scala、Go、JavaScript 或 Python。 它在每个节点内并行运行;
- Hadoop Common ,其中几个实用程序和库支持其他 Hadoop 组件;
- YARN是一个编排工具,用于管理 Hadoop 集群上的资源和每个节点执行的工作负载。 它还支持自该框架 2.0 版以来的 MapReduce 实现。
阿帕奇星火

Apache Spark 是一个开源框架,最初由计算机科学家 Matei Zaharia 作为其 2009 年博士学位的一部分创建。他随后于 2010 年加入 Apache 软件基金会。
Spark 是以分布式方式分布在多个节点上的计算和数据处理引擎。 Spark的主要特点是它执行内存中的处理,即它使用RAM来缓存和处理分布在集群中的大数据。 它赋予它更高的性能和更高的处理速度。
Spark 支持多种任务,包括批处理、实时流处理、机器学习和图形计算。 我们还可以处理来自多个系统的数据,例如 HDFS、RDBMS 甚至 NoSQL 数据库。 Spark 的实现可以用 Scala 或 Python 等多种语言完成。
主要成分
Apache Spark 的主要组件有:

- Spark Core是整个平台的通用引擎。 它负责计划和分配任务、协调输入/输出操作或从任何故障中恢复;
- Spark SQL是提供支持结构化和半结构化数据的 RDD 模式的组件。 特别是,它可以通过执行 SQL 或提供对 SQL 引擎的访问来优化结构化类型数据的收集和处理;
- Spark Streaming允许流式数据分析。 Spark Streaming 支持来自不同来源的数据,例如 Flume、Kinesis 或 Kafka;
- MLib ,Apache Spark 用于机器学习的内置库。 它提供了多种机器学习算法以及多种工具来创建机器学习管道;
- GraphX结合了一组 API,用于在分布式架构中执行建模、计算和图形分析。
Hadoop 与 Spark:差异

Spark 是一个大数据计算和数据处理引擎。 因此,理论上,它有点像 Hadoop MapReduce,因为它在内存中运行,所以速度要快得多。 那么是什么让 Hadoop 和 Spark 不同呢? 我们来看一下:

- Spark 的效率要高得多,这要归功于内存中的处理,而 Hadoop 是分批进行的;
- Spark 在成本方面要贵得多,因为它需要大量 RAM 才能维持其性能。 另一方面,Hadoop 只依赖普通机器进行数据处理;
- Hadoop更适合批处理,而Spark最适合处理流数据或非结构化数据流;
- Hadoop 具有更高的容错性,因为它不断复制数据,而 Spark 使用弹性分布式数据集 (RDD),它本身依赖于 HDFS。
- Hadoop 更具可扩展性,因为您只需要在现有机器不再足够的情况下添加另一台机器。 Spark依赖于其他框架的系统,例如HDFS,来扩展。
因素 | Hadoop | 火花 |
加工 | 批量处理 | 内存处理 |
文件管理 | 高密度文件系统 | 使用 Hadoop 的 HDFS |
速度 | 快速地 | 快 10 到 1000 倍 |
语言支持 | Java、Python、Scala、R、Go 和 JavaScript | Java、Python、Scala 和 R |
容错 | 更宽容 | 不太宽容 |
成本 | 更便宜 | 更贵 |
可扩展性 | 更具可扩展性 | 可扩展性较差 |
Hadoop 适用于
如果处理速度不重要,Hadoop 是一个很好的解决方案。 例如,如果数据处理可以在一夜之间完成,那么考虑使用 Hadoop 的 MapReduce 是有意义的。
Hadoop 允许您从数据仓库中卸载相对难以处理的大型数据集,因为 Hadoop 的 HDFS 为组织提供了一种更好的方式来存储和处理数据。
Spark 适用于:
Spark 的弹性分布式数据集 (RDD) 允许多个内存映射操作,而 Hadoop MapReduce 必须将中间结果写入磁盘,这使得 Spark 成为您想要进行实时交互式数据分析的首选。
Spark 的内存处理和对 Cassandra 或 MongoDB 等分布式数据库的支持是数据迁移和插入的绝佳解决方案——当从源数据库检索数据并将其发送到另一个目标系统时。
一起使用 Hadoop 和 Spark

通常您必须在 Hadoop 和 Spark 之间进行选择; 然而,在大多数情况下,选择可能是不必要的,因为这两个框架可以很好地共存和协同工作。 事实上,开发 Spark 的主要原因是增强 Hadoop 而不是取代它。
正如我们在前几节中看到的,Spark 可以使用其 HDFS 存储系统与 Hadoop 集成。 实际上,它们都在分布式环境中执行更快的数据处理。 同样,您可以在 Hadoop 上分配数据并使用 Spark 处理它或在 Hadoop MapReduce 中运行作业。
结论
Hadoop 还是 Spark? 在选择框架之前,您必须考虑您的架构,并且组成它的技术必须与您希望实现的目标一致。 此外,Spark 与 Hadoop 生态系统完全兼容,可与 Hadoop 分布式文件系统和 Apache Hive 无缝协作。
您还可以探索一些大数据工具。