Hadoop和Spark的区别
Hadoop: Hadoop 于 2006 年作为 Yahoo 项目起步,后来成为顶级 Apache 开源项目。它是一种通用的分布式处理形式,有几个组件:Hadoop 分布式文件系统 (HDFS),以 Hadoop 原生格式存储文件并在集群中并行化它们; YARN,协调应用程序运行时的时间表;和 MapReduce,实际并行处理数据的算法。Hadoop 是用 Java 构建的,可通过多种编程语言访问,用于通过 Thrift 客户端编写 MapReduce 代码,包括 Python。
它可以通过 Apache 发行版开源,也可以通过 Cloudera(规模和范围最大的 Hadoop 供应商)、MapR 或 HortonWorks 等供应商获得。
Spark: Spark 是一个较新的项目,最初于 2012 年在加州大学伯克利分校的 AMPLab 开发。这是一个顶级 Apache 项目,专注于跨集群并行处理数据,但最大的不同是它在内存中工作。
Hadoop 将文件读取和写入 HDFS,而 Spark 使用称为 RDD(弹性分布式数据集)的概念处理 RAM 中的数据。Spark 可以在独立模式下运行,使用 Hadoop 集群作为数据源,也可以与 Mesos 一起运行。在后一种情况下,Mesos master 代替 Spark master 或 YARN 用于调度目的。
Spark 围绕 Spark Core 构建,该引擎驱动调度、优化和 RDD 抽象,并将 Spark 连接到正确的文件系统(HDFS、S3、RDBMS 或 Elasticsearch)。有几个库在 Spark Core 之上运行,包括 Spark SQL,它允许您在分布式数据集上运行类似 SQL 的命令,MLLib 用于机器学习,GraphX 用于图形问题,以及流式传输,它允许输入连续流记录数据。
以下是 Spark 和 Hadoop 之间的差异表:
S.No | Hadoop | Spark |
---|---|---|
1 | Hadoop 是一个使用 MapReduce 算法的开源框架 | Spark 是闪电般快速的集群计算技术,它扩展了 MapReduce 模型以高效地使用更多类型的计算。 |
2 | Hadoop 的 MapReduce 模型从磁盘读取和写入,从而降低了处理速度 | Spark 减少了对磁盘的读/写周期数并将中间数据存储在内存中,因此处理速度更快。 |
3 | Hadoop 旨在高效处理批处理 | Spark 旨在高效处理实时数据。 |
4 | Hadoop是高延时计算框架,没有交互模式 | Spark是低延时计算,可以交互处理数据。 |
5 | 使用 Hadoop MapReduce,开发人员只能以批处理模式处理数据 | 只有 Spark 可以处理实时数据,来自 twitter、facebook 等实时事件 |
6 | Hadoop 是一个更便宜的选择,但在成本方面进行比较 | Spark 需要大量 RAM 才能在内存中运行,从而增加了集群并因此增加了成本。 |