请解释 Apache Spark 的基本定义,并对比它和 Hadoop 在计算模型、数据存储、执行速度以及适用场景上的主要差异。
考察说明
考查对 Spark 核心概念的理解及其与 Hadoop 生态的对比能力。
回答思路
- 【回答框架 1】Spark 是一个开源的分布式计算框架,核心是基于内存的弹性分布式数据集(RDD)进行迭代式计算,支持 SQL、流处理、图计算和机器学习等组件,适合需要低延迟、交互式查询和复杂算法的场景。
- 【回答框架 2】Hadoop 包含 HDFS 存储和 MapReduce 计算模型,MapReduce 中间结果写入磁盘,磁盘 I/O 开销大,适合批处理和高吞吐场景,但延迟高。Spark 将数据缓存在内存中,减少了磁盘读写,对迭代和交互式任务速度更快。
- 【回答框架 3】两者并非取代关系:Hadoop 提供分布式存储(HDFS)和资源管理(YARN),Spark 可运行在 Hadoop 之上,直接读取 HDFS 数据。Spark 的 RDD 和 DataFrame 抽象更丰富,编程接口更简洁,但内存消耗较大,需要合理配置资源。
- 【回答框架 4】适用场景方面:Hadoop 适合对海量离线数据进行简单批处理;Spark 适合机器学习迭代、实时流处理(Spark Streaming)以及需要快速响应的分析任务。选型需结合数据规模、延迟要求和集群资源。
- 【回答框架 5】实际项目中常将两者结合:HDFS 负责存储,Spark 负责计算,充分利用 Spark 的速度和 Hadoop 的可靠性。
- 【关键点 1】Spark 基于内存计算,减少磁盘 I/O,迭代任务性能显著优于 MapReduce。
- 【关键点 2】Hadoop 是分布式存储加批处理框架,Spark 是通用计算引擎,可共存协作。
- 【关键点 3】Spark 提供 SQL、Streaming、MLlib 等组件,生态更丰富,但内存消耗较大。
- 【易错点 1】不能简单断言 Spark 一定比 Hadoop 快,对简单一次性批处理,MapReduce 的磁盘开销可能差异不大。
- 【易错点 2】Spark 并非全内存计算,数据溢出时会落盘,内存配置不当可能导致性能下降或 OOM。
- 【易错点 3】注意 Hadoop 包括存储,Spark 只是计算层,不能将其与 MapReduce 对等比较。