Hadoop: Hadoop 于 2006 年作为雅虎项目开始,后来成为顶级 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 主节点替换 Spark 主节点或 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 is an open source framework which uses a MapReduce algorithm | Spark is lightning fast cluster computing technology, which extends the MapReduce model to efficiently use with more type of computations. | |||||||||
2. | Hadoop’s MapReduce model reads and writes from a disk, thus slow down the processing speed | Spark reduces the number of read/write cycles to disk and store intermediate data in-memory, hence faster-processing speed. | |||||||||
3. | Hadoop is designed to handle batch processing efficiently | Spark is designed to handle real-time data efficiently. | 4. | Hadoop is a high latency computing framework, which does not have an interactive mode | Spark is a low latency computing and can process data interactively. | 5. | With Hadoop MapReduce, a developer can only process data in batch mode only | Spark can process real-time data, from real time events like twitter, facebook | 6. | Hadoop is a cheaper option available while comparing it in terms of cost | Spark requires a lot of RAM to run in-memory, thus increasing the cluster and hence cost. |