Google 在 2003~2006 年连续公开了三篇经典论文:GFS、MapReduce、Bigtable。

它们不是孤立系统,而是一套相互配合的“数据工厂”:

这三者几乎定义了后续 Hadoop 生态(HDFS、MapReduce、HBase)和云原生数据平台的基础形态。

一图看懂三者关系

D2 Diagram
qtopie.github.io

GFS:为“廉价机器 + 大文件 + 高故障率”设计的文件系统

解决了什么问题?

传统文件系统假设硬件可靠、文件较小、写操作随机且频繁。Google 的现实恰好相反:

GFS 的核心思路:接受故障,拥抱追加,靠副本保可用

核心设计

写入路径(简化)

D2 Diagram
qtopie.github.io

MapReduce:把“写复杂分布式程序”变成“写 map/reduce 函数”

编程模型

你只需要定义两个函数:

系统自动完成:任务切分、调度、失败重试、数据重分布(Shuffle)、结果落盘。

执行流程

D2 Diagram
qtopie.github.io

为什么它改变了行业?

Bigtable:建立在 GFS 之上的分布式稀疏多维有序映射

数据模型(直观理解)

Bigtable 可以看成:

$$ (row\ key,\ column\ family:qualifier,\ timestamp) \rightarrow value $$

特点:

架构角色

D2 Diagram
qtopie.github.io

三者如何协作(工程视角)

一个典型闭环:

  1. 业务日志实时写入 GFS
  2. 每小时跑一轮 MapReduce 做清洗与聚合。
  3. 结果回写 Bigtable,支撑在线查询和推荐特征读取。

这就是“离线计算 + 在线服务”的经典分层。

与今天技术栈的映射

虽然具体实现迭代很多代,但底层思想仍然没变:

Hadoop / Spark 对应的设计(落地版)

上面讲的是 Google 原始论文体系;在开源世界里,最经典的两条实现路线是 HadoopSpark

Hadoop:把 Google 三件套“开源复刻 + 工程化”

大致对应关系:

再加上 YARN 负责统一资源调度(CPU/内存队列),就形成完整平台。

Hadoop 的设计倾向:

Spark:在同样分布式目标下,换成“内存 + DAG”执行引擎

Spark 不是替代 HDFS 的存储系统,而是替代“以 MapReduce 为中心的计算模型”。

核心对应:

Spark 的设计倾向:

Hadoop 与 Spark 的关系(不是二选一)

在多数生产环境里更常见的组合是:

D2 Diagram
qtopie.github.io

一句话总结:Hadoop 更像“完整的数据操作系统”,Spark 更像“高性能通用计算引擎”;现代平台通常是二者融合而不是互斥。

总结

如果把大数据系统比作工厂:

它们共同回答了一个核心问题:如何在不可靠的大规模机器集群上,持续、稳定、低成本地生产数据价值