公司真题库

【阿里云】Hadoop 与 Spark 的相同点和不同点

91学AI·2026/7/20·8 阅读

考察点

这道题出自阿里云大数据开发三面。三面的开放性对比题,表面考概念,实际考你对两个生态的理解深度:能不能跳出"Hadoop 是磁盘计算、Spark 是内存计算"这种过时话术,讲清两者在现代架构里各自扮演什么角色。面试官想看的结构是:先讲相同点(都是解决什么问题),再分维度讲差异,最后落到生产上的真实组合方式。追问常往"Spark on YARN 怎么部署"、"Spark 一定比 MR 快吗"、"Hadoop 是不是过时了"走。

参考答案

相同点:同一个问题的两代答案

两者解决的根本问题相同:如何在廉价机器组成的集群上对超大数据集做分布式计算。架构思想上高度同源——主从架构、数据分片、任务并行调度、容错靠重试和数据冗余。生态关系上更不是对立:Spark 生产部署绝大多数跑在 YARN 上做资源管理、读写 HDFS 上的数据、访问 Hive Metastore 的表元数据。可以说 Spark 在计算层替代了 MapReduce,但整个底座仍是 Hadoop 生态。这是答这道题必须先立住的认知:两者是计算框架的迭代关系,不是你死我活的竞争关系。

不同点一:范畴不同

Hadoop 是一个生态全家桶,四大件:HDFS(分布式存储)、YARN(资源调度)、MapReduce(批处理计算)、加上周边的 Hive、HBase 等。Spark 从定位上只是计算引擎——它不带存储(读 HDFS/S3/OSS)、不带资源管理(依赖 YARN/K8s/Standalone),专注把"计算"这一层做到极致。对比时严格说应该是 MapReduce vs Spark,而不是 Hadoop vs Spark,但面试语境下大家都懂指的是两套体系。

不同点二:计算模型与性能

MapReduce 的执行模型是刚性的两阶段:map 输出必须排序落盘,reduce 拉取归并,多步任务(比如迭代计算、多表连续 join)每一步的输入输出都要走 HDFS,磁盘 IO 开销巨大。Spark 用 RDD/DataFrame 构建 DAG,一个 job 内的多个 stage 中间结果可以留在内存、可以 cache 复用,落盘只发生在 shuffle 这个必经环节。所以 Spark 快,快在两点:DAG 调度砍掉不必要的落盘、内存缓存加速迭代访问。官方口径的"比 MR 快 100 倍"特指内存迭代场景(机器学习迭代),纯一次性扫描的 ETL 场景差距没有这么夸张,往往几倍,这点要讲实话。

不同点三:编程抽象与生态栈

MapReduce 只暴露 map 和 reduce 两个原语,任何复杂逻辑都要拆成多个 MR job 手工串联,开发成本高到催生了 Hive/Pig 这类上层封装。Spark 的 RDD/DataFrame 提供几十个算子,且围绕它长出了统一栈:Spark SQL 做结构化查询、Structured Streaming 做流处理、MLlib 做机器学习、GraphX 做图计算——一套引擎、一套 API 覆盖多种负载。Hadoop 阵营对应的是 Hive(SQL)、MR(批)、外围接 Storm/Flink(流),栈是拼凑的。

不同点四:容错与延迟

MR 的容错粒度是 task:task 挂了重跑,中间结果在磁盘,重跑成本低,所以 MR 天然适合超大规模、允许慢、追求稳的离线批。Spark 容错靠 RDD lineage,宽依赖环节挂了要回溯重算上游分区,代价取决于 lineage 长度(所以有 checkpoint 截断血统的机制)。延迟上 MR job 启动开销大(JVM 启动、任务调度串行),分钟级起步;Spark 的 DAG 调度和 executor 常驻让它能做到秒级甚至亚秒级交互查询。

维度Hadoop (MapReduce)Spark
定位存储+调度+计算全家桶纯计算引擎
中间结果每步落 HDFS内存为主,shuffle 才落盘
编程模型map/reduce 两个原语RDD/DataFrame 丰富算子
迭代计算极差(反复读写 HDFS)好(cache 复用)
流处理Structured Streaming
资源调度YARN借用 YARN/K8s

生产上的真实形态

收尾讲实际架构会加分:现代大数据平台里 HDFS(或云上的 OSS/S3)做存储底座,YARN 或 K8s 做调度,Hive Metastore 做元数据中心,计算引擎以 Spark(离线)+ Flink(实时)为主,MapReduce 基本只在 Hive on Tez/MR 存量任务和历史系统里存在。所以"Hadoop 过时了吗"的标准答案是:MapReduce 过时了,HDFS 和 YARN 仍是很多公司的底座,但云上对象存储和 K8s 正在侵蚀后两者——阿里系内部早已完成容器化和自研引擎(MaxCompute、Blink)的替换,这是行业方向。

可能的追问

  • Spark on YARN 的 cluster 和 client 模式区别?cluster 模式 driver 跑在集群内的 ApplicationMaster 里,client 模式 driver 跑在提交机器上;生产提交用 cluster,交互调试才用 client。
  • Spark 什么场景下反而不比 MR 快?数据量极大且完全一次性扫描、无复用的简单 ETL,内存优势发挥不出来;以及集群内存紧张导致频繁 spill 时,性能退化明显。
  • 既然 Spark 也能跑在 K8s 上,YARN 还有未来吗?存量 Hadoop 集群 YARN 仍是主力,新建云原生平台普遍选 K8s,YARN 的份额在缓慢下降但存量巨大,淘汰是十年尺度的过程。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.