柳嘉希

硕士研究生毕业生

软件工程师 | 可扩展的API · 网络爬虫 · 数据集成 · Vibe代码清理专家

大数据复习:Hadoop、Spark、Hive 的定位、组件和区别

大数据系统的核心问题是:数据太大,单机放不下或算不动,所以需要分布式存储和分布式计算。

Hadoop

Hadoop 是大数据生态的基础框架,主要组件包括:

  • HDFS:分布式文件系统
  • MapReduce:分布式计算模型
  • YARN:资源调度

HDFS 把大文件拆成块,分散存储到多台机器上,并通过副本保证容错。

MapReduce 把计算拆成 Map 和 Reduce 两阶段:

  1. Map:每个节点处理自己负责的数据块
  2. Reduce:聚合中间结果

优点是可靠、可扩展;缺点是批处理延迟较高。

Spark

Spark 是大规模数据计算框架,通常比 Hadoop MapReduce 更快,因为它大量使用内存计算。

常见组件:

  • Spark Core
  • Spark SQL
  • Spark Streaming
  • MLlib
  • GraphX

Spark 适合迭代计算、机器学习、交互式分析和流处理。

Spark 与 Hadoop MapReduce

MapReduce 更偏传统批处理,每一步会频繁落盘。

Spark 把中间数据尽量放在内存中,适合需要多轮计算的任务。

Hive

Hive 是数据仓库工具,可以用类 SQL 的方式查询 HDFS 上的数据。

它适合:

  • 离线分析
  • 报表
  • 数据仓库
  • 让熟悉 SQL 的人查询大数据

Hive 不是传统 OLTP 数据库,不适合高频低延迟事务查询。

总结

  • Hadoop:分布式存储和批处理基础
  • Spark:更快的大规模计算引擎
  • Hive:面向分析的数据仓库 SQL 层

延伸理解

复习这篇时,不要只记住名词,要把重点放在 HDFS、MapReduce、Spark 内存计算、Hive SQL 和批处理数据平台分层。这类知识如果只停留在定义层面,很容易在面试或项目中答得很散。更好的理解方式是把它放进一个具体场景:谁在调用它,输入从哪里来,失败后谁负责恢复,数据或状态会不会被重复处理。

  • 大数据系统的核心是吞吐、容错、延迟和成本之间的取舍,不是单个工具的语法。
  • 区分批处理、流处理、交互式查询和离线建模,有助于判断 Hadoop、Spark、Hive 等工具的位置。
  • 数据平台还要考虑 schema 演进、数据质量、分区策略、血缘追踪和重跑成本。

在真实项目中,可以把它当成一个判断框架:先确认输入、约束、失败场景和可观测性,再决定具体工具或写法。 如果一个方案看起来很简单,要继续追问它在规模扩大、权限变化、异常恢复和团队协作下是否仍然成立。

实践检查清单

  • 明确这个知识点在系统中的位置:是开发时约束、运行时能力、基础设施能力,还是协作流程。
  • 写出一个最小可运行例子,并补一个失败例子;只会写 happy path 说明理解还不够稳。
  • 记录常见误用:例如边界条件、权限假设、性能假设、同步/异步差异或环境差异。
  • 把概念和项目经历关联起来:如果面试被追问,可以用自己的项目说明为什么这样选。
  • 最后用一句话总结取舍:它牺牲了什么,换来了什么。

自测问题

  1. 这个主题解决的核心问题是什么?
  2. 如果不用当前方案,还有哪些替代方案?代价是什么?
  3. 最容易出错的边界条件在哪里?
  4. 如何在代码、测试或监控中验证它真的可靠?

项目化应用场景

可以把这类知识放到一个日志分析平台里理解:业务服务产生日志,数据先落到对象存储或 HDFS,再由 Spark 做清洗和聚合,Hive 提供 SQL 查询层,最终输出报表或特征数据。这里的重点是数据量、延迟、重跑成本和数据质量。批处理系统通常接受分钟到小时级延迟,但要求能够稳定重跑;流处理更关注实时性,但对状态管理和容错要求更高。

常见误区:

  • 没有区分批处理和流处理需求。
  • 只关心计算框架,不关心数据分区和重跑策略。
  • 缺少数据质量校验,导致下游结果不可解释。