大数据基础组件发展史

从 2003 年 Google 三篇论文,到今天的湖仓时代。按时间轴看清每个组件的作用,以及"谁取代了谁"。

一、同类能力的替代链(先看这个)

每一行是一类"能力",从左到右是历史演进。灰色=已淘汰/边缘化,高亮描边=当前主流。混乱的根源在于——不同组件其实在解决不同层的问题,同层之间才存在替代关系。

存储Storage
GFS Google 论文 HDFS 开源实现 对象存储 S3 / OSS / MinIO
资源调度Scheduler
MR1 JobTracker YARN Kubernetes
批处理引擎Batch
MapReduce Spark 内存 DAG
SQL 引擎Query
Hive on MR Impala / Presto / SparkSQL Trino / Doris / StarRocks
表格式Table Format
Hive Table 目录即分区 Hudi / Iceberg / Delta ACID·upsert·快照
元数据Catalog
HMS Hive Metastore Glue / Unity / Iceberg REST Catalog
流处理Streaming
Storm Spark Streaming 微批 Flink 真流·状态·exactly-once
消息 / 日志Messaging
Kafka Pulsar 存算分离
已淘汰 / 边缘化 当前主流 → 表示"后者在同一能力上取代/超越前者"

二、时间轴:每个组件是什么、为什么出现

颜色对应上面的能力类别。每张卡片底部标注它替代了谁 / 被谁替代

2003 – 2006
🧬 起源:Google 三篇论文
整个大数据栈的基因都来自 Google 内部系统的三篇论文。开源世界照着论文"抄"出了 Hadoop。

GFS 论文

2003
Google

把海量廉价机器的磁盘拼成一个大文件系统,数据分块 + 多副本容错。

催生 → HDFS

MapReduce 论文

2004
Google

用 map / reduce 两个算子把计算拆到成千上万台机器,自动处理容错与调度。

催生 → Hadoop MapReduce

Bigtable 论文

2006
Google

建在 GFS 上的分布式 NoSQL 宽表,支持随机读写海量结构化数据。

催生 → HBase
2006 – 2010
🐘 Hadoop 生态繁荣
Doug Cutting 从 Nutch 里拆出 Hadoop(HDFS + MapReduce)。随后一大批"让 MapReduce 更好用"的工具涌现——但底层都在跑 MR。

HDFS

2006
Hadoop 核心

GFS 的开源实现。奠定"存储层"基石,至今仍是私有化部署的主力。

后被 对象存储(S3/OSS) 在云上取代

MapReduce

2006
Hadoop 核心

第一代批处理引擎。每个 stage 落盘、job 间串行,慢但可靠。

后被 Spark 全面取代

Hive

2008
Facebook

把 SQL(HQL)编译成 MapReduce,让不懂 Java 的人也能查数。顺带发明了 HMS

引擎角色后被 Presto/SparkSQL/Doris 取代;但它的 HMS 和表规范成了标准

Pig

2008
Yahoo

用脚本式数据流语言(Pig Latin)写 MR。曾是 Hive 的平行选择。

已基本淘汰,被 Spark / SQL 取代

HBase

2008
开源社区

Bigtable 的开源实现,HDFS 之上的 NoSQL 宽表,支撑随机读写场景。

与批处理正交,至今仍在用

ZooKeeper

2010
Yahoo

分布式协调服务(选主、配置、锁),是众多组件的"底座"。

部分场景被各组件内置共识(如 Kafka KRaft)替代
2011 – 2014
⚡ YARN 解耦 + Spark 革命
两件大事:YARN 把"资源调度"从 MapReduce 里剥离,让 Hadoop 能跑各种引擎;Spark 用内存计算把 MapReduce 打得溃不成军。

YARN

2012
Hadoop 2.0

把资源管理独立成一层。从此 Spark、Flink 等都能在 Hadoop 集群上跑,不再绑死 MR。

替代 MR1 JobTracker;后在云原生被 K8s 蚕食

Spark

2010→2014
UC Berkeley AMPLab

基于内存的 RDD/DAG 引擎,中间结果不落盘、多算子 pipeline,迭代作业快一个数量级。2014 成为 Apache 顶级项目。

取代 → MapReduce,成为批处理事实标准

Impala / Presto

2012–13
Cloudera / Facebook

MPP 架构的交互式 SQL 引擎,常驻进程 + 全内存 pipeline,秒级查询,不走 MR。

取代 → Hive on MR 的交互查询场景

Spark SQL

2014
Databricks

Spark 的 SQL 前端 + Catalyst 优化器 + DataFrame。早期前身 Shark 直接复用 Hive 解析器。

在 SQL 层蚕食 Hive,复用其 HMS
2011 – 2016
🌊 实时化:消息队列 + 流处理
业务开始要"实时"。Kafka 成了数据管道的中枢,流处理引擎从"微批"进化到"真流"。

Kafka

2011
LinkedIn

分布式提交日志 / 消息队列。成为整个实时数据管道的"中枢神经",解耦生产者与消费者。

当前主流;Pulsar 以存算分离作为挑战者

Storm

2011
Twitter

第一代真流处理,逐条处理低延迟,但语义弱(难保 exactly-once)。

Spark Streaming / Flink 取代

Spark Streaming

2013
Databricks

"微批"模拟流:把流切成小批次用 Spark 跑。吞吐高但延迟受批次限制。

真流场景后被 Flink 取代

Flink

2014→2016
源自 Stratosphere

真正的流优先引擎:事件时间、状态管理、精确一次(exactly-once)、水位线。

取代 → Storm/Spark Streaming,成流处理主流
2017 – 2020
🏞️ 湖仓时代:表格式登场
数据湖(HDFS/S3 一堆文件)缺事务、不能 upsert、schema 演进痛苦。三大"表格式"应运而生,把数据库的能力下沉到文件层。

Hudi

2017
Uber

主打 upsert + 增量拉取,擅长 CDC 入湖、近实时更新。COW / MOR 两种模式。

取代 → Hive Table 的静态分区模型

Iceberg

2017
Netflix

主打 开放规范 + schema/分区演进 + 快照,引擎中立,生态最广。

与 Hudi/Delta 竞争,当前势头最猛

Delta Lake

2019
Databricks

基于事务日志(_delta_log)提供 ACID,与 Spark 生态深度绑定。

Databricks 体系内的主力表格式

对象存储上位

~2018
S3 / OSS

云上按需付费、存算分离,逐步取代自建 HDFS 成为湖的底座。

取代 → HDFS(在云环境)
2020 – 至今
🚀 现代:实时 OLAP + Catalog 解耦
查询侧走向"实时数仓 + 湖仓一体";元数据侧,统治了十几年的 HMS 也开始被新一代 Catalog 挑战。

Doris / StarRocks

2020+
Apache / 社区

高性能 MPP OLAP,亚秒级查询。既能建内表,也能 Multi-Catalog 挂载 HMS 直查湖上 Hudi/Iceberg。

取代 → Presto/Impala 的实时分析场景

Trino

2019
PrestoSQL 改名

Presto 社区分叉版,联邦查询 + 湖仓查询主力,连接器生态极强。

继承并超越 Presto

新一代 Catalog

2021+
AWS / Databricks / Iceberg

Glue Catalog、Unity Catalog、Iceberg REST Catalog——带权限、血缘、多引擎治理,不止存 schema。

正在替代 → HMS

Kubernetes

2020+
CNCF

云原生资源调度。Spark/Flink on K8s 逐步取代 YARN,统一在线/离线资源池。

正在替代 → YARN

一句话记忆:Google 出论文 → Hadoop 抄成开源(HDFS+MR)→ Hive 加 SQL → Spark 干掉 MR → Kafka+Flink 补上实时 → Hudi/Iceberg 给湖加事务 → Doris/Trino 做实时查询,HMS 被新 Catalog 接班。
真正的主线是:存储、调度、引擎、表格式、元数据这几层不断解耦,每一层内部各自迭代替代。